# 密转 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-08-26 ## 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 识别等 43 种格式转换 - **🖱️ 便捷操作** — 支持文件拖放,界面简洁直观 - **🎨 现代界面** — 基于 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 # 安装依赖(一次性装好 RapidLayout / RapidTable / RapidOCR v3 三大离线推理引擎,模型随包内置无需额外下载) 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 | | 图片压缩 | PNG, JPG, WebP, TIFF | 压缩后原格式 | ### 视频音频 | 功能 | 输入格式 | 输出格式 | |------|----------|----------| | 视频→GIF | MP4, MOV, AVI, MKV, WMV, FLV | GIF | | 视频提取音频 | 视频文件 | MP3, WAV | | 音频格式互转 | MP3, WAV, FLAC, AAC, OGG | 互转 | | 视频格式互转 | MP4, MOV, AVI, MKV 等 | 互转 | | 视频压缩 | MP4, MOV, AVI 等 | 压缩后原格式 | | 视频裁剪 | 视频文件 | 裁剪后视频 | | 视频截图 | 视频文件 | PNG, JPG | | 音频裁剪 | MP3, WAV, FLAC 等 | 裁剪后音频 | | 音频合并 | 多个音频文件 | 单个音频 | ### 文档转换 | 功能 | 输入格式 | 输出格式 | |------|----------|----------| | Word→PDF | DOCX | PDF | | PPT→PDF | PPTX | PDF | | Excel→PDF | XLSX, XLS | PDF | | Markdown→PDF | MD | PDF | | PDF→Word | PDF | DOCX | | Word→图片 | DOCX | PNG, JPG | | PPT→图片 | PPTX | PNG, JPG | | HTML→PDF | HTML, URL | PDF | | 图片合并→PDF | 图片文件 | PDF | | Word→Markdown | DOCX | MD | | Markdown→Word | MD | DOCX | | PDF→图片 | PDF | PNG, JPG, WEBP | > **Office 文档转换增强:** > - Excel→PDF:支持指定工作表导出、适应页面宽度 > - PPT→PDF:支持导出演讲者备注 > - Word/PPT→图片:支持页码范围导出,自动输出到子文件夹 > - Markdown→Word:完整支持表格、代码块、加粗、倾斜、居中、引用等 MD 语法 > - HTML→PDF:支持 URL 直接输入转换 > **PDF→Word 两种模式自动选择(在"PDF→Word (OCR)"功能入口下统一处理):** > - **文本型 PDF**(可直接选中文字):使用 `pdf2docx` 提取原生文本与表格,速度快、精度高 > - **扫描件 / 图片型 PDF**(不可选中文字):使用 **RapidLayout 版面分析 → RapidTable SLaNet Plus 表格结构还原 → RapidOCR v3 文字识别** 三引擎流水线,精准还原: > - ✅ 真实 Word 表格(完整保留 `rowspan` / `colspan` 合并单元格,而非拼接文本) > - ✅ 标题区域自动映射为 Word Heading 样式,支持目录生成 > - ✅ 正文区域智能分段(按条款编号、标签模式、行间距聚类) > - ✅ 跨页断裂段落自动合并("第 X 页"前后断句自动拼接) > - ✅ "合同编号/甲方/签订地点"等标签行自动拆分 > - ✅ 正则自动剔除"第 X 页,共 Y 页"等页脚页眉残留 ### 数据表格 | 功能 | 输入格式 | 输出格式 | |------|----------|----------| | JSON→CSV | JSON | CSV | | CSV→Excel | CSV | XLSX | | Excel→CSV | XLSX, XLS | CSV | | 图片表格转Excel | 含表格的图片 | XLSX | | 图片文字识别 (OCR) | 图片 | TXT, DOCX, JSON | | 票据转Excel | 发票、火车票、行程单等财务票据图片 | XLSX | | PDF→Excel | PDF | XLSX | | Excel合并 | 多个 XLSX | 单个 XLSX | ### 实用工具 | 功能 | 输入格式 | 输出格式 | |------|----------|----------| | PDF 合并 | 多个 PDF | 单个 PDF | | PDF 拆分 | PDF | 多个 PDF | | PDF 压缩 | PDF | 压缩后 PDF | | PDF 加水印 | PDF | 带水印 PDF | | PDF 加密/解密 | PDF | 加密/解密 PDF | | 图片↔Base64 | 图片/TXT | TXT/图片 | | 字幕互转 | SRT, ASS, VTT | 互转 | | 电子书互转 | EPUB, MOBI | EPUB, MOBI, PDF, TXT | | 二维码工具 | 文本/文档文件 | 二维码/解析结果 | --- ## 🔍 OCR / 版面分析 / 表格识别 SafeShift 在不同场景下集成了三类离线推理引擎(**全部随 pip 包附带,无需单独下载模型**): | 引擎 | 用途 | 模型文件 | 适用场景 | |------|------|----------|----------| | **RapidLayout** | 版面分析(区域划分) | `layout_cdla.onnx`(随 rapid_layout 包内置) | 扫描件 PDF→Word、复杂排版文档 | | **RapidTable** (SLaNet Plus) | 表格结构识别(HTML table + rowspan/colspan) | `slanet-plus.onnx`(随 rapid_table 包内置) | 扫描件 PDF→Word(真实表格还原)、复杂合并单元格表格 | | **RapidOCR v3** | 文字识别(中英文) | PP-OCRv6 模型(随 rapidocr 包内置,含 18708 字符字典) | 图片文字识别、"票据转 Excel"、扫描件 PDF→Word 的正文与标题 | | **OpenCV** | 图像预处理(去噪/增强/倾斜矫正) | 内置算法 | 低质量扫描、票据 OCR 前处理 | ### OCR 支持语言 | 语言 | 代码 | 说明 | |------|------|------| | 中文 | `ch` | 简体中文识别(默认,V3 内置模型含 18708 字符字典) | | 英文 | `en` | 英文识别 | > 语言在转换页面的参数设置中手动选择,不在全局设置中预设。V3 内置模型已覆盖中英文+数字+标点,无需额外下载语种模型。 **OCR 输出格式**: - **TXT** — 纯文本,按位置排序 - **DOCX** — Word 文档,保持段落结构 - **JSON** — 包含位置信息的结构化数据(适合发票识别等场景) **图像预处理**:开启后使用 OpenCV 对图片做去噪、增强对比度、倾斜矫正等处理,可显著提升低质量图片的识别率("票据转Excel"功能默认开启)。 ### 扫描件 PDF → Word 还原流程(核心卖点) ``` 输入 PDF(扫描件 / 图片型) ↓ PyMuPDF 按 DPI 渲染 → 高清位图(默认 300 DPI,可调) ↓ RapidLayout 版面分析 → 分区(title / text / table / figure …) ↓ 同类合并 + 去重(嵌套包含区剔除) 分区域并行处理: ├─ title 区:RapidOCR v3 → 自动生成 Word Heading(带样式,支持目录) ├─ text 区:RapidOCR v3 → 智能分段(条款编号 + 标签行模式 + 行间距) ├─ table 区:RapidTable SLaNet Plus → HTML table(含 rowspan/colspan)→ 真实 Word 表格 └─ 其他 区:裁剪后 OCR,按位置追加正文 ↓ 跨页断句合并 + 页眉页脚剔除("第X页共Y页"等正则过滤) ↓ python-docx 合并写入 → 输出 .docx(若文件被占用则临时文件 + os.replace 原子替换) ``` --- ## ⚙️ 配置说明 ### 配置文件 配置文件位于 `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 加速** — 启用后 YOLO 模型使用 GPU 推理(OCR 引擎固定使用 CPU) - **文件覆盖确认** — 输出文件已存在时是否提示 > 转换参数页中可手动选择 OCR 识别语言(中文、英文),无需在设置中预先配置。 --- ## 📦 依赖组件 ### 可选组件(按需安装) 以下组件需要在设置页面手动下载安装,用于特定转换功能: | 组件 | 用途 | 许可证 | 必需场景 | |------|------|--------|----------| | FFmpeg | 视频/音频编解码 | LGPL v2.1+ | 视频转 GIF、音频提取 | | LibreOffice | Office 文档转 PDF | MPLv2 | Word/PPT/Excel → PDF | | Calibre | 电子书转换 | GPLv3 | EPUB/MOBI 互转 | | wkhtmltopdf | HTML 转 PDF 备用引擎 | LGPLv3 | HTML→PDF(备用) | | Playwright Chromium | HTML / Markdown → PDF 渲染 | Apache 2.0 | HTML→PDF、Markdown→PDF | > **Microsoft Edge**:如果系统已安装 Edge 浏览器,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 辅助工具 │ ├── layout_table_engine.py # 版面分析+表格识别一体化引擎(RapidLayout/RapidTable/RapidOCRv3 流水线) │ ├── 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 # 安装依赖(一次性装好 RapidLayout / RapidTable / RapidOCR v3 三大离线推理引擎,模型随包内置无需额外下载) 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 功能 / 扫描件 PDF 转 Word 不可用? A: 三类模型均已随 pip 包内置,`pip install -r requirements.txt` 安装后即可使用,无需额外下载: - RapidOCR v3(文字识别,随 rapidocr 包内置) - RapidLayout(版面分析,`layout_cdla.onnx`,随 rapid_layout 包内置) - RapidTable(表格结构识别,`slanet-plus.onnx`,随 rapid_table 包内置) ### 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)