前阵子我在整理项目文档时,几乎每天都在跟各种格式的文件打交道——同事发的 Word 需求、产品给的 Excel 原型、还有 PDF 设计稿和会议录音。每次想把它们整理成 Markdown 放进笔记或 GitHub,都要手动复制粘贴、调整格式,烦得要命。
市面上倒是有一些在线转换工具,但要么收费,要么限制文件大小,要么担心数据隐私。于是我就想:能不能自己做一个本地的、开源的、一键就能把几乎所有文档转成 Markdown 的桌面应用?
说干就干,花了几个小时把核心功能跑通了,取了个名字叫 UMDoc(Universal Document to Markdown),现在已经放在 GitHub 上开源了。今天就来跟大家聊聊这个小工具是怎么做的、能干什么、以及怎么用。
它能做什么?
一句话概括:拖个文件进去,它就给你变成 Markdown。
目前支持的文件格式有:
- Office 全家桶:.docx、.pptx、.xlsx、.xls
- 图片:.jpg、.png 等(可以 OCR 提取文字)
- 电子书:.epub
- 音频:.wav、.mp3(需要配置 Azure AI 语音转录,不配也能提取元数据)
- 网页和数据格式:.html、.csv、.json、.xml
- 压缩包:.zip(会自动解压转换里面的文件)
- 邮件:.msg(Outlook 邮件)
- 甚至 YouTube 链接:把链接扔进去,它能给你生成一个带描述的 Markdown
到这里你可能已经发现了,它的底层依赖是微软开源的 MarkItDown 引擎,而且我直接装了 [all] 全量依赖,所以理论上 MarkItDown 能支持的,它基本都能转。
为什么选择桌面应用而不是网页版?
主要是考虑到:
- 隐私安全:所有转换都在本地完成,文件不会上传到任何服务器,公司内部文档也能放心用。
- 离线可用:不需要网络,飞机上、地铁里照样干活。
- 大文件不卡:直接调用本地 Python 环境,没文件大小限制。
而且我用 PySide6 写了个还算好看的界面,支持 Windows 和 macOS 两个平台(Linux 理论上也能跑,没专门测)。
界面长什么样?
整体风格比较简洁,左侧是文件区域,右侧是预览窗口。
- 拖拽区域:可以直接把文件拖进去,也支持点击按钮选择文件。
- 工作表选择:如果是 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 支持一下吧 👍🌟