ARTICLE · 1213766
190.5K Star,一行命令把文档变成 Markdown
每次把资料贴进 AI,你都得先删一遍格式。一份四十页的 PDF,光清排版就十几分钟。
我给自己算过这笔账。从阅读器里全选复制,粘出来的东西带着一堆排版垃圾:页眉在每一页重复出现,跨页的句子被硬切断,脚注插在段落中间,目录页码混进了正文。删这些没有任何技术含量,但眼睛得跟着走,一份长文档删完,你已经想不起来最初要问 AI 什么了。

后来这段活我一行命令就交出去了,出来直接是干净的文本,标题是标题,列表是列表。
它是微软开源的一个文档转换工具,叫 MarkItDown。名字已经说清楚它干什么:把别的格式写成 Markdown,就是那种用井号表示标题、用短横线表示列表、几乎不带样式的纯文本。我把它 README 里的支持清单抄了一遍——PDF、Word、PPT、Excel、HTML、CSV、JSON、XML、EPub、ZIP 压缩包,连图片和音频都在里面。形式上是一个 Python 库,同时自带命令行,装完直接敲。MIT 协议,个人和公司用都不收钱,没有次数限制也没有水印。仓库现在 190.7K star,我三天前查的时候还是 190.5K,挂在微软官方账号下面,是活的。
它到底干了什么

先说最常见的那个场景:把一份 PDF 报告喂给 AI。
原来的麻烦全在复制粘贴这一步。排版垃圾混进来以后,你得一边删一边核对,生怕把小标题当正文吞掉,或者把表格删成一串对不齐的数字。四十页的文档,读完之前先花二十分钟做清理。
现在怎么用:文件路径给它,输出文件名给它,一行命令。

变化在于出来的东西是带结构的。标题层级原样留着,一级二级各归各位,列表还是列表;表格会变成能直接改的文本表格,而不是散在一行里的空格。你把它整段贴进 AI,AI 读到的是一份有骨架的文档。README 对这件事给的解释是,主流大模型本身就在大量 Markdown 语料上训练过,喂 Markdown 比喂带排版的文本更容易被正确理解,顺带还更省 token。
第二个场景,是把手头攒的资料一次性变成能搜的文字。
我电脑里有一堆往年的 PPT 和 Word 方案,想找某句说过的话,只能挨个打开翻。用它的办法是写个几行的小循环,把一个目录里的文件全转成 Markdown 落在旁边。中间夹了 ZIP 也不用先解压,README 说它会自己拆开、逐个处理里面的文件。转完之后全文搜索直接命中正文内容,不用靠记忆猜文件名。
第三个场景稍微偏一点:把本来不在文字里的东西变成文字。
图片和音频也在那份清单里。读图片自带的拍摄信息、把图上的文字抠出来,或者给一段会议录音转成稿子,README 都单独列了对应的依赖名;YouTube 链接能抓字幕。别人发来的截图、只有视频没有稿子的一次分享,都能走同一个入口进来。
哪些情况我劝你别装
先说最要紧的一条:它转出来的东西是给程序读的,不是给人看的。README 里自己写着,输出虽然看着还算整齐,但主要是给文本分析流程用的,想要高保真还原一份文档给人阅读,它不是好选择。要的是排版位置、字体、图文混排的效果,别指望它。
扫描版的 PDF 转出来基本是空的,页面上根本没有文字层,而它默认不做识别。要 OCR 得另外装一个插件,那个插件还要接一个大模型来做视觉理解,等于你自己得先有模型服务和密钥。音频转写、YouTube 字幕是同样的路子,都要额外装东西、额外有账号,YouTube 那条还可能被平台限流。
装机这块也有门槛。它要 Python 3.10 到 3.14,官方建议开一个独立的虚拟环境,不然容易和你电脑上别的包打架。那些格式支持也不是一装就全有,PDF、Word、PPT 各对应一组额外的依赖,装少了就会在转换时报这个格式不支持。
细节会走样的地方,我翻 issue 看到几条:Excel 里重复的表头会被自动改名,看着像数字的编号会被当成数字处理,开头的 0 就这么丢了;PPT 里的图表如果引用了整列数据,转换能跑上几个小时。这几条现在都在修,但天天跟表格打交道的人得先知道有这回事。
还有一条我觉得比上面几条都重要:它读文件、发网络请求,用的就是你当前账号的权限。README 专门有一段讲这个,提醒不要拿它处理来路不明的文件。它不是沙箱。
上手
三步。
先把 Python 环境装好,官方推荐虚拟环境。然后 pip install 'markitdown[all]',带上 [all] 是把所有格式的支持一次装齐,省得后面缺哪个补哪个。最后 markitdown 你的文件.pdf -o 输出.md,结果就落在那个文件里了。
最后一句
它替不掉排版还原,也替不掉扫描件识别,那是另一类工具的活。它拿走的是"贴进 AI 之前先洗一遍格式"这段谁都不愿意干的活,把四十页的清理时间压成一条命令。每天都要往 AI 里塞资料的人,这个仓库值得点个星标,下次用的时候回来抄那行命令就行。
源码地址
https://github.com/microsoft/markitdown















































































