前两天还在跟朋友吐槽,现在做 AI 相关的工作,80% 的时间都花在数据清洗和格式转换上。手里有一堆 PDF 报告、Word 文档、PPT 演示、Excel 表格,想把它们喂给大模型,结果不是乱码就是表格崩了,要么就是整个结构完全丢失。
更头疼的是,你还得为每种格式写一套转换脚本——PDF 用 PyPDF2,Word 用 python-docx,PPT 用 python-pptx,Excel 用 pandas……每个库的 API 都不一样,折腾半天,最后输出的还是一堆格式混乱的纯文本。
直到最近发现了这个神器——微软老早之前就开源的 MarkItDown。

它在 GitHub 上已经斩获了 14.1 万 Star,Fork 数 9600,是当前最热门的 AI 文档处理工具之一。任何文件丢进去,直接输出干净、可直接喂大模型的 Markdown,AI 时代文档处理终于彻底解放了。
MarkItDown 有什么优势?
MarkItDown 不是凭空冒出来的项目,它来自微软 AutoGen 团队——就是那个开发了多智能体框架 AutoGen 的团队。最初,他们是为了参加 GAIA 基准测试需要一个可靠的数据管道来喂 AI agent,结果发现市面上没有好用的工具,干脆自己造了一个轮子。
为什么选择 Markdown 作为输出格式?这里面有两个关键原因:
第一,Token 效率极高。 HTML 的一个标题 要消耗 23 个 token,而 Markdown 只需要 My Title
# My Title,3 个 token 就搞定了。把这个差异放大到几千份文档,节省下来的 token 费用可不是小数目。
第二,大模型天生懂 Markdown。 GPT、Claude 这些主流模型都是吃 Markdown 长大的——GitHub 上的代码文档、Stack Overflow 的问答、技术博客……海量 Markdown 文本早已深深印在它们的训练数据里。而且 Markdown 的标题层级、列表、表格、代码块这些结构,能让 RAG 系统更智能地分块,检索更精准,幻觉更少。
核心亮点
MarkItDown 的设计哲学非常清晰:专注于为 AI 服务,而不是追求人类视觉的完美还原。这让它在一众文档转换工具中脱颖而出。
1、超强文件支持:几乎你能想到的都能转
MarkItDown 支持的文件格式覆盖了绝大多数办公和 AI 应用场景:
- 文档类:PDF、Word(DOCX)、EPub
- 演示类:PowerPoint(PPTX)
- 表格类:Excel(XLSX/XLS)、CSV
- 数据类:JSON、XML、HTML
- 多媒体:图片(EXIF元数据 OCR)、音频(语音转文字)
- 其他:ZIP压缩包(自动遍历内容)、YouTube视频链接
你没看错,连 YouTube 视频链接丢进去,它都能自动获取字幕转成 Markdown。
2、结构极致保留:LLM 读取体验直接拉满
虽然官方明确说了,输出不一定是人类最友好的格式,但对 AI 来说绝对是最舒服的。标题层级、表格、列表、链接、代码块、图片描述,这些语义元素都完美保留。特别是 Word 文档的转换质量,用过的人都说好——用的是成熟的 mammoth 库,先转 HTML 再清洗成规范的 Markdown,标题层级、粗体斜体、链接都准确还原。Excel 也能把多张工作表转成 Markdown 表格,对齐工整。
安装指南
MarkItDown 提供了三种使用方式,满足不同场景的需求:
方式一:命令行(最快上手)
安装只需一行命令:
pip install 'markitdown[all]'
转换文件同样简单:
markitdown 报告.pdf > 报告.md
也支持管道操作:
cat 报告.pdf | markitdown
或者用 -o 参数直接指定输出文件:
markitdown 报告.pdf -o 报告.md
方式二:Python API(集成到你的项目)
如果你的项目需要批量处理文档,Python API 是最灵活的选择:
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("季度报告.xlsx")
print(result.text_content)
方式三:Docker(开箱即用)
不想折腾环境?用 Docker 就行:
docker build -t markitdown:latest .
docker run --rm -i markitdown:latest < 文档.pdf > 输出.md
进阶功能
MarkItDown 不仅是一个转换工具,它还提供了很多高级功能,让文档处理更智能。
LLM 加持的智能图像描述
如果你传入一个 OpenAI 兼容的客户端,MarkItDown 可以对图片进行智能描述:
from markitdown import MarkItDown
from openai import OpenAI
client = OpenAI()
md = MarkItDown(llm_client=client, llm_model="gpt-4o")
result = md.convert("产品截图.jpg")
print(result.text_content)
不仅能提取文字,还能获得 AI 生成的场景描述,让大模型理解得更透彻。
Azure 企业级集成
对于有更高精度需求的企业用户,MarkItDown 提供了与 Azure 云服务的深度集成:
- Azure Document Intelligence:云端高精度文档解析,适合扫描件 PDF、复杂表格等场景。
- Azure Content Understanding(v0.1.6 新增):支持音频、视频等多模态文件转换,还能通过自定义分析器提取结构化字段(如发片金额、合同条款),以 YAML 格式输出。
用起来也很简单:
from markitdown import MarkItDown
md = MarkItDown(cu_endpoint="")
result = md.convert("invoice.pdf")
print(result.markdown)
输出会包含提取的结构化字段:
---
contentType: document
fields:
VendorName: CONTOSO LTD.
InvoiceDate: '2019-11-15'
---
...
实际应用场景
场景一:RAG 知识库搭建
企业内部有大量 PDF、Word 格式的规章制度和操作手册。用 MarkItDown 批量转换为 Markdown 后,喂给向量数据库,就能搭建起一个精准的内部知识问答系统。
场景二:自动化文档分析
金融分析师需要定期处理大量研报。将 PDF 研报批量转为 Markdown 后,可以让 LLM 自动提取关键指标、生成摘要、对比分析不同报告的观点差异。
场景三:多语言内容处理
一家跨国公司需要将各国分公司的 Excel 报表统一汇总。MarkItDown 可以先将所有 Excel 转为结构化 Markdown,再交给 LLM 进行翻译和数据标准化处理。
写在最后
MarkItDown 能在短短一年多的时间里在开源社区爆火,主要原因:
第一,切中了真实痛点。 文档格式转换是 AI 应用落地的第一道门槛,几乎每个 LLM 开发者都会遇到。MarkItDown 提供了一个开箱即用的解决方案。
第二,微软背书 + AutoGen 生态。 作为微软 AutoGen 团队的官方工具,它的质量和后续维护都有保障,而且能很好地融入 AutoGen 的多智能体工作流。
第三,设计理念清晰。 它从一开始就明确是为 AI 服务的,不追求人类视觉的完美还原,而是专注于保留语义结构,这让它在 AI 场景下表现出色。
如果你正在搭建 RAG 系统、开发 AI 应用,或者只是需要批量处理文档喂给大模型,MarkItDown 绝对值得加入你的工具链。
GitHub 地址:https://github.com/microsoft/markitdown
