# 密转 SafeShift **Repository Path**: she521lin/safe-shift ## Basic Information - **Project Name**: 密转 SafeShift - **Description**: 密转(SafeShift) 是一款桌面端离线多类型文件格式转换工具。 100% 本地运行、无文件大小限制、无需联网、不收集任何数据,真正做到隐私零泄露。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-06-23 - **Last Updated**: 2026-07-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: 格式转换工具, 万能格式转换, 离线转换, 文件转换, PDF-图片-文档-MD-Excel-识别 ## README # SafeShift Logo SafeShift 密转 > **本地转换,隐私无忧** — 一款功能丰富的桌面端离线万能格式转换工具 ![Gitee Stars](https://gitee.com/she521lin/safe-shift/badge/star.svg?theme=dark) ![Gitee Forks](https://gitee.com/she521lin/safe-shift/badge/fork.svg?theme=dark) ![Gitee Last Commit](https://img.shields.io/badge/dynamic/json?url=https://gitee.com/api/v5/repos/she521lin/safe-shift&query=pushed_at&label=Last%20Commit&color=blue&cacheSeconds=86400) ![License](https://img.shields.io/badge/License-MIT-blue) --- ## ✨ 为什么选择 SafeShift - **🔒 完全离线** — 所有文件转换均在本地完成,绝不上传,隐私零泄露 - **📦 一站式转换** — 支持图片、视频、文档、数据表格、OCR 识别等 29 种格式转换 - **🖱️ 便捷操作** — 支持文件拖放,界面简洁直观 - **🎨 现代界面** — 基于 CustomTkinter,支持明暗主题切换 - **⚡ 实时反馈** — 转换进度实时显示,支持取消操作 - **💾 智能命名** — 自动避免文件覆盖,支持自定义输出目录 --- ## 🚀 快速开始 ### 系统要求 | 项目 | 要求 | |------|------| | 操作系统 | Windows 10/11 (x64) | | Python 版本 | 3.12 | | 内存 | 建议 4GB 以上 | ### 运行方式 **方式一:源码运行(推荐开发调试)** ```bash # 克隆仓库 git clone https://gitee.com/she521lin/safe-shift.git cd safe-shift # 创建虚拟环境(推荐) conda create -n safeshift python=3.12 conda activate safeshift # 安装依赖 pip install -r requirements.txt # 运行 python main.py ``` **方式二:双击启动(推荐日常使用)** ```bash # 双击 start.bat 自动激活环境并启动 start.bat ``` **方式三:打包运行** ```bash # 安装打包工具 pip install pyinstaller # 执行打包脚本 python build.py # 运行生成的可执行文件 dist/SafeShift.exe ``` --- ## 📖 使用教程 ### 基本操作 1. **选择转换类型** — 在主界面点击对应分类的转换卡片 2. **添加文件** — 拖放文件到指定区域,或点击选择文件 3. **配置参数**(可选) — 展开参数面板设置转换选项 4. **开始转换** — 点击"开始转换"按钮 5. **查看结果** — 转换完成后可预览、打开文件夹或复制路径 ### 界面预览

SafeShift 界面预览

--- ## 🧩 支持的转换类型 ### 图片转换 | 功能 | 输入格式 | 输出格式 | |------|----------|----------| | 图片→WebP | PNG, JPG, BMP, GIF, TIFF | WebP | | 图片→ICO | 任意图片 | ICO (多尺寸) | | 格式互转 | PNG, JPG, BMP, GIF, WebP, TIFF, AVIF | 互转 | | SVG→PNG | SVG | PNG | ### 视频音频 | 功能 | 输入格式 | 输出格式 | |------|----------|----------| | 视频→GIF | MP4, MOV, AVI, MKV, WMV, FLV | GIF | | 视频提取音频 | 视频文件 | MP3, WAV | | 音频格式互转 | MP3, WAV, FLAC, AAC, OGG | 互转 | ### 文档转换 | 功能 | 输入格式 | 输出格式 | |------|----------|----------| | Word→PDF | DOCX | PDF | | PPT→PDF | PPTX | PDF | | Excel→PDF | XLSX, XLS | PDF | | Markdown→PDF | MD | PDF | | PDF→Word (OCR) | PDF | DOCX | | Word→图片 | DOCX | PNG, JPG | | PPT→图片 | PPTX | PNG, JPG | | HTML→PDF | HTML | PDF | | 图片合并→PDF | 图片文件 | PDF | | Word→Markdown | DOCX | MD | | Markdown→Word | MD | DOCX | ### 数据表格 | 功能 | 输入格式 | 输出格式 | |------|----------|----------| | JSON→CSV | JSON | CSV | | CSV→Excel | CSV | XLSX | | Excel→CSV | XLSX, XLS | CSV | | 图片表格转Excel | 含表格的图片 | XLSX | | 图片文字识别 (OCR) | 图片 | TXT, DOCX, JSON | | 票据转Excel | 发票、火车票、行程单等财务票据图片 | XLSX | ### 实用工具 | 功能 | 输入格式 | 输出格式 | |------|----------|----------| | PDF 合并 | 多个 PDF | 单个 PDF | | PDF 拆分 | PDF | 多个 PDF | | 图片↔Base64 | 图片/TXT | TXT/图片 | | 字幕互转 | SRT, ASS, VTT | 互转 | | 电子书互转 | EPUB, MOBI | EPUB, MOBI, PDF, TXT | --- ## 🔍 OCR 功能 SafeShift 集成 **RapidOCR** + **OpenCV** 引擎,支持多种语言识别。 | 语言 | 代码 | 说明 | |------|------|------| | 中文(简) | `ch` | 简体中文识别(默认) | | 中文(繁) | `chinese_cht` | 繁体中文识别 | | 英文 | `en` | 英文识别 | | 日文 | `japan` | 日文识别 | | 韩文 | `korean` | 韩文识别 | | 泰文 | `ta` | 泰文识别 | | 多语种混合 | `multi` | 多语种混合识别 | > 语言在转换页面的参数设置中手动选择,不在全局设置中预设。 **输出格式**: - **TXT** — 纯文本,按位置排序 - **DOCX** — Word 文档,保持段落结构 - **JSON** — 包含位置信息的结构化数据(适合发票识别等场景) **图像预处理**:开启后使用 OpenCV 对图片做去噪、增强对比度、倾斜矫正等处理,可显著提升低质量图片的识别率("票据转Excel"功能默认开启)。 --- ## ⚙️ 配置说明 ### 配置文件 配置文件位于 `config/config.json`,主要配置项: ```json { "theme": "System", // System / Light / Dark "output_dir": "", // 默认输出目录(为空时使用系统文档/SafeShift) "window_width": 1100, "window_height": 750, "last_conversion_type": null, // 上次使用的转换类型 "image_preprocessing": false, // 图像预处理开关(OpenCV,提升 OCR 识别率) "log_level": "INFO", // 日志级别:DEBUG / INFO / WARNING / ERROR "gpu_acceleration": false, // GPU 加速开关 "overwrite_confirm": true // 输出文件已存在时是否弹出确认 } ``` > **关于"最近使用"和"我的收藏"**:这两类数据保存在独立的 JSON 文件中(`data/recent_used.json`、`data/favorites.json`),用于首页的快速入口。 ### 高级设置 在设置页面 → 高级设置中可调整: - **图像预处理** — 使用 OpenCV 对图片做去噪 / 增强对比度 / 矫正等处理,提高 OCR 识别准确率 - **日志级别** — 控制日志输出详细程度 - **GPU 加速** — 启用后 OCR 与 YOLO 模型使用 GPU 推理 - **文件覆盖确认** — 输出文件已存在时是否提示 > 转换参数页中可手动选择 OCR 识别语言(中文、英文、日文、韩文、繁体中文等),无需在设置中预先配置。 --- ## 📦 依赖组件 ### 可选组件(按需安装) 以下组件需要在设置页面手动下载安装,用于特定转换功能: | 组件 | 用途 | 许可证 | 必需场景 | |------|------|--------|----------| | FFmpeg | 视频/音频编解码 | LGPL v2.1+ | 视频转 GIF、音频提取 | | LibreOffice | Office 文档转 PDF | MPLv2 | Word/PPT/Excel → PDF | | Calibre | 电子书转换 | GPLv3 | EPUB/MOBI 互转 | | Microsoft Edge | HTML / Markdown → PDF 渲染 | 内置 | HTML→PDF、Markdown→PDF | | Playwright Chromium | HTML / Markdown → PDF 渲染(Edge 不可用时回退) | Apache 2.0 | HTML→PDF、Markdown→PDF | **安装方式**:打开设置页面 → 组件管理 → 点击对应组件的"安装"按钮 ### 手动安装(可选) - **CUDA Toolkit** — 用于 GPU 加速 - **cuDNN** — GPU 加速依赖 --- ## 🏗️ 项目结构 ``` safe-shift/ ├── core/ # 核心模块 │ ├── strategies/ # 转换策略实现 │ │ ├── image_strategies.py # 图片转换策略 │ │ ├── video_audio_strategies.py # 视频音频策略 │ │ ├── document_strategies.py # 文档转换策略 │ │ ├── document_strategies_part2.py # 文档策略(续) │ │ ├── data_strategies.py # 数据表格策略 │ │ └── utility_strategies.py # 实用工具策略 │ ├── component_installer.py # 组件安装器 │ ├── component_manager.py # 组件管理器 │ ├── config.py # 配置管理 │ ├── converter_context.py # 转换上下文 │ ├── data_manager.py # 数据持久化(历史、收藏、最近使用) │ ├── factory.py # 策略工厂 │ ├── strategy.py # 策略接口 │ └── conversion_type.py # 转换类型枚举 ├── ui/ # 用户界面 │ ├── main_window.py # 主窗口 │ ├── home_page.py # 主页(功能卡片) │ ├── converter_page.py # 转换页 │ ├── history_page.py # 历史记录页 │ ├── settings_page.py # 设置页(页面形式,非弹窗) │ ├── settings_dialog.py # 设置对话框(兼容旧版) │ ├── about_page.py # 关于页 │ ├── batch_page.py # 批量任务页 │ ├── theme.py # 主题配置(避免循环导入) │ ├── drop_target.py # 拖放目标区 │ ├── feature_card.py # 功能卡片 │ └── collapsible_panel.py # 可折叠面板 ├── utils/ # 工具模块 │ ├── logger.py # 日志记录 │ ├── ocr_engine.py # OCR 引擎 │ ├── ocr_helper.py # OCR 辅助工具 │ ├── image_preprocessor.py # OpenCV 图像预处理 │ ├── finance_classifier.py # 财务票据分类(YOLO) │ ├── finance_extractor.py # 财务票据字段抽取 │ ├── yolo_engine.py # YOLO 模型推理 │ ├── cv2_patch.py # OpenCV 兼容补丁 │ ├── template_manager.py # 模板管理 │ ├── pdf_utils.py # PDF 工具函数 │ ├── subprocess_helper.py # 子进程辅助 │ ├── paths.py # 路径处理 │ └── window_utils.py # 窗口工具函数 ├── data/ # 本地数据 │ ├── models/ # OCR / YOLO 模型 │ ├── history.json # 历史记录 │ ├── favorites.json # 收藏列表 │ └── usage.json # 使用统计 ├── licenses/ # 第三方许可证 ├── logo/ # 应用图标 ├── main.py # 入口文件 ├── build.py # 打包脚本 ├── requirements.txt # 依赖列表 └── start.bat # Windows 启动脚本 ``` --- ## 🛠️ 开发指南 ### 开发环境搭建 ```bash # 克隆仓库 git clone https://gitee.com/she521lin/safe-shift.git cd safe-shift # 创建 conda 环境 conda create -n safeshift python=3.12 conda activate safeshift # 安装依赖 pip install -r requirements.txt # 运行 python main.py ``` ### 代码规范 - 遵循 PEP 8 代码规范 - 使用 type hints 进行类型注解 - 使用 `logger` 替代 `print` 进行日志记录 - 新增转换策略需继承 `ConversionStrategy` 并注册到 `StrategyFactory` ### 打包发布 ```bash # Windows 打包 python build.py # 输出目录 dist/SafeShift.exe ``` --- ## 🐛 常见问题 ### Q: 安装依赖失败? A: 建议使用 Conda 创建虚拟环境,Python 版本选择 3.12。 ### Q: OCR 功能不可用? A: RapidOCR 模型已内置,安装后即可使用。 ### Q: GPU 加速未启用? A: 需要安装 CUDA Toolkit 和 cuDNN。如果未安装,会自动切换到 CPU 模式。 ### Q: 转换失败? A: 请查看 `config/safeshift.log` 日志文件获取详细错误信息。 ### Q: 如何卸载? A: 删除项目文件夹即可,SafeShift 不写入系统注册表。 --- ## 🤝 贡献指南 欢迎提交 Issue 和 Pull Request! ### 贡献流程 1. Fork 仓库 2. 创建特性分支 (`git checkout -b feature/xxx`) 3. 提交代码 (`git commit -m "feat: xxx"`) 4. 推送到远程 (`git push origin feature/xxx`) 5. 创建 Pull Request ### 提交规范 - `feat:` 新增功能 - `fix:` 修复 Bug - `docs:` 文档更新 - `refactor:` 代码重构 - `style:` 代码格式 - `test:` 测试更新 ### 开发计划 (Roadmap) - [ ] 支持 MacOS 平台 - [ ] 批量转换优化(多线程) - [ ] 内置截图功能 - [ ] 音频转文字(Whisper 模型) - [ ] 功能优化 - [ ] 功能拓展 --- ## 📄 许可证 [MIT License](LICENSE) --- ## 🔒 隐私声明 **SafeShift 承诺**: - 所有文件转换均在本地完成 - 不收集任何用户数据 - 不发送任何网络请求 - 代码完全开源,可自行审计 --- **SafeShift - 让格式转换更简单** ✨ ## ⭐ Star History Star History Chart 🌐 **项目地址**: [https://gitee.com/she521lin/safe-shift](https://gitee.com/she521lin/safe-shift)