我做了一个万能文档转 Markdown 的桌面小工具,免费开源,支持格式多到离谱

0 阅读4分钟

前阵子我在整理项目文档时,几乎每天都在跟各种格式的文件打交道——同事发的 Word 需求、产品给的 Excel 原型、还有 PDF 设计稿和会议录音。每次想把它们整理成 Markdown 放进笔记或 GitHub,都要手动复制粘贴、调整格式,烦得要命。

市面上倒是有一些在线转换工具,但要么收费,要么限制文件大小,要么担心数据隐私。于是我就想:能不能自己做一个本地的、开源的、一键就能把几乎所有文档转成 Markdown 的桌面应用?

说干就干,花了几个小时把核心功能跑通了,取了个名字叫 UMDoc(Universal Document to Markdown),现在已经放在 GitHub 上开源了。今天就来跟大家聊聊这个小工具是怎么做的、能干什么、以及怎么用。

它能做什么?

一句话概括:拖个文件进去,它就给你变成 Markdown

目前支持的文件格式有:

  • Office 全家桶:.docx、.pptx、.xlsx、.xls
  • PDF
  • 图片:.jpg、.png 等(可以 OCR 提取文字)
  • 电子书:.epub
  • 音频:.wav、.mp3(需要配置 Azure AI 语音转录,不配也能提取元数据)
  • 网页和数据格式:.html、.csv、.json、.xml
  • 压缩包:.zip(会自动解压转换里面的文件)
  • 邮件:.msg(Outlook 邮件)
  • 甚至 YouTube 链接:把链接扔进去,它能给你生成一个带描述的 Markdown

到这里你可能已经发现了,它的底层依赖是微软开源的 MarkItDown 引擎,而且我直接装了 [all] 全量依赖,所以理论上 MarkItDown 能支持的,它基本都能转。

为什么选择桌面应用而不是网页版?

主要是考虑到:

  1. 隐私安全:所有转换都在本地完成,文件不会上传到任何服务器,公司内部文档也能放心用。
  2. 离线可用:不需要网络,飞机上、地铁里照样干活。
  3. 大文件不卡:直接调用本地 Python 环境,没文件大小限制。

而且我用 PySide6 写了个还算好看的界面,支持 Windows 和 macOS 两个平台(Linux 理论上也能跑,没专门测)。

界面长什么样?

cn.png

整体风格比较简洁,左侧是文件区域,右侧是预览窗口。

  • 拖拽区域:可以直接把文件拖进去,也支持点击按钮选择文件。
  • 工作表选择:如果是 Excel 文件,左侧会自动显示工作表列表,可以勾选想转的 sheet,其他格式则不显示这一块,保持界面利落。
  • 双视图预览:点“源码”看原始 Markdown,点“渲染”看到的是格式化后的效果。
  • 保存方式:可以点“保存到”选择文件夹,自动用原文件名生成 .md;也可以用菜单里的“保存 Markdown”另存为。

应用还支持自动检测系统语言,提供中文、英语、日语三种界面语言,当然也能在菜单里手动切。

技术选型与实现细节

整个工程其实不复杂,核心就两个 Python 文件:

  • launcher.py:负责创建虚拟环境,安装所有依赖
  • umdoc.py:GUI 主程序,处理交互和转换

GUI 框架用了 PySide6,转换引擎是 markitdown[all],Excel 的 sheet 名称读取用了 openpyxl。启动器会把所有依赖装在一个隔离的虚拟环境里,互不干扰,卸载时直接删项目文件夹就完事了。

多语言方案是自己写了个字典,根据系统 locale 和 macOS 的 defaults read 命令来判断中/日/英,效果还不错。

怎么用?

第一步保证你电脑有 Python 3.9+,然后:

git clone git@github.com:PacteraSunChao/umdoc.git
cd umdoc
python3 launcher.py

首次运行会自动创建虚拟环境并下载依赖,之后就直接启动主界面了。想手动安装的也可以看仓库 README。

后续计划

目前还是个相当基础的版本,后面想加的功能有:

  • 批量转换(一次拖多个文件)
  • 转换后自动保存到指定文件夹(不用每次都点保存)
  • 与不同的 AI 接口对接,对转换后的 Markdown 做自动化整理
  • 打包成 .exe 和 .app,让非 Python 用户也能直接双击运行

如果你有其他想法或者遇到 bug,欢迎去 GitHub 提 issue 或者直接 PR。

最后

做这个小工具花的时间不算多,但确实解决了我的一个实际痛点。如果你也经常跟各种文档打交道,可以试试看,说不定也能帮你省下不少功夫。

GitHub 地址github.com/PacteraSunC…

觉得好用就给个 Star 支持一下吧 👍🌟