乐于分享
好东西不私藏

微软 MarkItDown:把一切文档转成 Markdown 的开源神器,GitHub 本周涨了 6000+ Star

微软 MarkItDown:把一切文档转成 Markdown 的开源神器,GitHub 本周涨了 6000+ Star

这周 GitHub Trending 上有个项目突然冲到榜首——微软的 MarkItDown,7 天涨了 6,635 颗 Star,总 Star 已经破 15 万。

功能一句话能说清楚:什么文件丢进去,出来的都是 Markdown

PDF、Word、Excel、PPT、HTML、图片、音频,甚至 YouTube 链接,都能转。

但你可能会问:微软干嘛花时间做这个?转格式不是早就有人做了吗?

这就得聊到 LLM 的一个细节了。

你用 GPT-4o 或者 Claude 的时候,哪怕没要求它用 Markdown,回复里照样有 ## 标题、- 列表、``` 代码块。

原因不复杂——训练数据里 Markdown 太多了。GitHub、Reddit、Stack Overflow、技术文档……全是 Markdown。模型”吃”进去的时候,它就成了最熟悉的表达方式。

而且 Markdown 对模型来说效率极高:

同样的内容,Markdown 比 HTML 省 30% 到 50% 的 Token。标题层级、表格、列表这些结构信息都在,但没有 HTML 那堆标签噪音。人看得懂,模型也理解得准。

所以现在搭 RAG 系统的人,都会先把文档转成 Markdown 再灌向量库。检索准确率比直接切 PDF 高一截。

MarkItDown 就是在这个需求点上打了一颗钉子。

支持的格式

日常能碰到的格式基本都覆盖了:

类别
格式
办公文档
PDF、Word (.docx)、PowerPoint (.pptx)
电子表格
Excel (.xlsx / .xls)
网页
HTML
数据格式
CSV、JSON、XML
多媒体
图片(EXIF + OCR)、音频(元数据 + 语音转录)
视频
YouTube URL、本地视频(通过 Azure)
压缩包
ZIP(会递归进去逐文件转换)
电子书
EPUB
邮件
Outlook 消息

我比较意外的是 YouTube 支持——丢个链接,它直接拉字幕转文本。做竞品分析、内容摘要的时候这招挺省事。

安装

pip install 'markitdown[all]'

Python 3.10+。也可以按需装:

# 只处理 PDF、Word、Excelpip install 'markitdown[pdf,docx,xlsx]'

Docker 也行:

docker build -t markitdown:latest .docker run --rm -i markitdown:latest < document.pdf > output.md

基础用法

命令行最直接:

# PDF → Markdownmarkitdown report.pdf > report.md# 指定输出文件markitdown report.pdf -o report.md# 管道cat report.pdf | markitdown# YouTube 转录markitdown "https://www.youtube.com/watch?v=xxxxx" -o transcript.md

Python 里也简单:

from markitdown import MarkItDownmd = MarkItDown()result = md.convert("report.pdf")print(result.text_content)

三种转换模式,按需选

内置转换器跑本地,免费,应付普通文档够了。但有些 PDF 排版复杂——多栏、嵌套表格——本地模式效果就差点。这时候可以上 Azure:

模式
特点
什么时候用
内置转换器
本地跑,免费
标准文档,要求不高
Azure Document Intelligence
云端布局提取
排版复杂的 PDF,表格多
Azure Content Understanding
多模态,支持音视频
要提取结构化字段,或处理视频/音频

三个层级,成本和质量自己把控。平时用内置,碰到难啃的上 Azure。

进阶:让 LLM 帮你”看”图片

文档里嵌了技术架构图、流程图?MarkItDown 可以把图片丢给 LLM 生成文字描述:

from markitdown import MarkItDownfrom openai import OpenAIclient = OpenAI()md = MarkItDown(    llm_client=client,    llm_model="gpt-4o")result = md.convert("architecture_doc.pdf")# 输出里图片变成了文字描述

做 RAG 的话这功能很关键——原本图片里的信息没法被检索,现在变成文字就能搜了。

插件

装个 markitdown-ocr,能从文档内嵌图片里 OCR 提取文字:

pip install markitdown-ocr
md = MarkItDown(enable_plugins=True, llm_client=OpenAI(), llm_model="gpt-4o")result = md.convert("scanned_doc.pdf")

更多插件搜 GitHub 标签 #markitdown-plugin

几个实际用法

搭 RAG 知识库。 把公司的产品手册、技术方案、合同模板全转 Markdown,灌向量数据库。结构化的 Markdown 在检索阶段表现比原始 PDF 好得多。

批量分析文档。 手里有 100 份合同要让 AI 审?先统一转 Markdown,Prompt 模板可以复用,输出也稳定。不用每种格式写一套处理逻辑。

把”搜不到”的东西变可搜。 YouTube 视频、会议录音、邮件——转成文字以后就能全文检索了。很多公司知识资产的死角,用这一个工具基本能覆盖。

注意事项

  1. 1. 输出是给机器看的,不是精排。要像素级还原排版的话这工具不合适。
  2. 2. 别直接处理不信任来源的文件。用 convert_local() 或 convert_stream() 更安全。
  3. 3. Azure 的 Document Intelligence 和 Content Understanding 按调用收费。纯本地模式一直免费。

最后

这个工具做的事很窄,就是把各种格式转成 Markdown。不搞平台,不整生态。

但恰恰是这种”单点”需求,现在成了每套 RAG 系统、每个 AI 知识库、每条内容分析管道的硬依赖。15 万 Star 就是这么来的。

试试看,装好只要一分钟。


项目地址:https://github.com/microsoft/markitdown许可证:MIT · 最新版本:0.1.6