微软开源的文档转 Markdown 瑞士军刀 —— 一行命令把 PDF、Word、PPT、Excel、网页、音频、YouTube 全转成 LLM 友好的结构化 Markdown

微软开源的文档转 Markdown 瑞士军刀 —— 一行命令把 PDF、Word、PPT、Excel、网页、音频、YouTube 全转成 LLM 友好的结构化 Markdown。135K Star,MIT 协议,零成本运行。
microsoftpythonMITmarkdownLLMRAGCLI
/ 概览
|
Stars 135,000 今日 +2,798 · Trending #2 |
Forks 9,200 社区活跃度极高 |
|
Language Python 99.7% · v0.1.6 |
Open Issues 389 391 Open PRs · 309 commits |
|
License MIT 完全开源 · 可商用 |
Creator Microsoft AutoGen Team 出品 |
// 为什么需要它
先聊个真实的场景。我每天跑 GitHub AI 日报,素材来源千奇百怪:有的项目只有 README、有的是 PDF 论文、有的是 Word 技术报告、有的是网页博客、有的还带 YouTube 讲解视频。把这些东西全扒下来喂给 AI 做分析——光预处理就能耗掉一个上午。
做过 RAG 的人都知道这个痛点:要把非结构化文档塞进向量数据库,第一步永远是「转成纯文本」。这一步看起来简单,实际上鬼故事很多:PDF 转出来的文字顺序是乱的、Word 的表格被拆成了段落、Excel 公式全丢、PPT 的图片描述靠猜。
微软 AutoGen 团队搞的这个 markitdown,解决的就是这件事——而且解决的思路很聪明:不是生硬地把文档抽成 plain text,而是保留结构转成 Markdown。标题还是标题,表格还是表格,链接还是链接。LLM 天生就吃 Markdown 吃得很好,token 利用率也比 plain text 高得多。
“While the output is often reasonably readable, it is primarily intended for text analysis tools, not high-fidelity human-facing document conversion.” —— 项目 README 原话。不是给你做精美排版的,是给 AI 当饲料的。这个定位非常精准。
// 核心能力
markitdown 能处理的格式,按类别列一下:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
可以看到覆盖范围相当广——从办公文档到多媒体,从本地文件到远程 URL,基本把「需要喂给 LLM 的东西」一网打尽了。
对了,还支持插件系统。默认提供了 markitdown-ocr 插件,能调 LLM Vision 从嵌入图片里扒文本。第三方插件在 GitHub 搜 #markitdown-plugin 标签就能找到。
// 快速上手
安装
一行搞定:
# 安装全部可选依赖(推荐)pip install 'markitdown[all]'# 或者按需安装pip install 'markitdown[pdf, docx, pptx]'
前置要求:Python 3.10+。建议用 venv 隔离环境。
命令行用法
# 基本转换,输出到终端markitdown path-to-file.pdf# 指定输出文件markitdown path-to-file.pdf -o document.md# 管道输入cat path-to-file.pdf | markitdown
# 列出已安装的插件markitdown --list-plugins
Python API
frommarkitdownimportMarkItDown
# 基础用法md = MarkItDown()result = md.convert("test.xlsx")print(result.text_content)
# 配合 LLM 给 PPT 图片生成描述fromopenaiimportOpenAI
client = OpenAI()md = MarkItDown(llm_client=client, llm_model="gpt-4o")result = md.convert("example.jpg")print(result.text_content)
// 架构设计
markitdown 的架构其实不复杂,核心思路是格式检测 → 路由到对应转换器 → 输出结构化 Markdown。
它是个 monorepo,核心包在 packages/markitdown,另外拆出了 markitdown-ocr 和 markitdown-sample-plugin 两个独立包。
几个设计点值得注意:
|
① 无 ML 依赖 基础转换全部走 XML/二进制解析,零 GPU,不需要模型。只在可选的 LLM 图片描述和 Azure 集成时才需要外部 AI 服务。这点在部署上非常友好——放服务器上跑不会吃显存。 |
|
② 插件默认禁用 第三方插件要手动 |
|
③ 四级 API 暴露面
|
|
④ LLM 注入模式 通过 |
// 处理流水线
|
📁 File Input PDF/DOCX/PPTXXLSX/HTMLAudio/YouTube/ZIP |
|
🔍 Format Detection 扩展名 +MIME 嗅探 |
|
⚙️ Converter Pipeline 原生解析 +可选 Plugin+ LLM 增强 |
|
📄 Markdown Output 结构化 · LLM 友好· Token 高效 |
convert() → Format Detection → Native Parser → Optional Plugin/LLM Enrichment → .text_content
// Azure 集成 — 把云端能力接进来
markitdown 虽然是本地优先,但也没把云端能力完全丢掉。它接了两个 Azure 服务:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
Content Understanding 是这里面比较有意思的一个——视频文件只有走它才能转。而且它支持自定义分析器,比如你搞了个发票分析器,传入 cu_analyzer_id 就能直接输出 YAML front matter 里的结构化字段:VendorName、InvoiceDate 这些。这块对企业用户来说挺实用的。
⚠️ 注意:这些都是按量计费的 Azure API 调用,不是免费的。基础转换还是纯本地计算。
// 竞品对比
文档转 Markdown 这个赛道说大不大说小不小,markitdown 的几个主要竞品各有侧重:
|
|
|
|
|
|
|---|---|---|---|---|
|
|
135K |
|
|
|
|
|
18K |
|
|
|
|
|
12K |
|
|
|
|
|
24K |
|
|
|
|
|
NEW |
|
|
|
这里面有个关键点:markitdown 和 Docling/Unstructured 不是直接竞争关系,而是互补。markitdown 的优势在于「零门槛」——不需要 GPU,不需要 API Key,不需要模型下载,pip install 完就能跑。对于 80% 的场景(原生 Office 文档转 Markdown 喂 LLM),它是最快的选择。但对于那 20% 需要处理扫描件、手写笔记、复杂多栏布局的场景,Docling 或 LlamaParse 会更合适。
// 性能数据
基于 2025-2026 年多次独立 benchmark(94 文档 / 500 页混合文档)
文本提取准确度 (F1 Score)
|
|
92% |
|
|
88% |
|
|
85% |
|
|
82% |
|
|
75%(最佳配置) |
处理速度 (页/秒)
|
|
45 页/秒 |
|
|
35 页/秒 |
|
|
35+ 文件/秒 |
|
|
8.3 页/秒 |
|
|
10 页/秒 |
// 博主观点
说实话,markitdown 是我见过最「省心」的文档预处理工具。不是说它最强——Docling 准确度更高,Unstructured 格式覆盖更广,LlamaParse 在复杂文档上是降维打击。
但 markitdown 强在你没得选的时候它就是唯一解:本地跑、免费、一行命令、不用 GPU。这三个条件凑一块的竞品几乎没有。你用 Docling 得搞 GPU,用 LlamaParse 得掏钱,用 Unstructured 部署也不轻——markitdown 的定位就是「把门槛降到最低」。
如果你是做 RAG 管道的,日常处理的文档以 Office 原生的为主(Word 写报告、PPT 做汇报、Excel 存数据),markitdown 基本能覆盖 80% 的需求。剩下 20% 需要用扫描 PDF 或者复杂排版的场景,再搭 Docling 或者 Azure Document Intelligence 就可以了。不是替代关系,是组合关系。
一个让我觉得可惜的点:389 个 Open Issues 积压不少。135K Star 的项目,issue 响应速度跟不上热度是个隐患。好在是微软官方维护,不用担心像个人项目那样突然弃坑。
// 参考链接
🔗 GitHub — microsoft/markitdown
🔗 PyPI — markitdown
🔗 Benchmark — 4 Python Text Extraction Libraries Compared
🔗 2026 AI Document Analysis Tools Comparison
🔗 MarkItDown Review — Honest Limits & Real Code
🔗 GitHub — DS4SD/docling (IBM)
🔗 GitHub — Unstructured-IO/unstructured
🔗 GitHub — nhirschfeld/kreuzberg
github-ai-review · 2026-06-01 | HERMES TERMINAL

夜雨聆风