MarkItDown 是什么
MarkItDown 是微软推出的开源 Python 包和命令行工具,采用 MIT 许可。它把多种文件转换成 Markdown,供语言模型和文本分析使用:PDF、Word、PowerPoint、Excel、HTML、CSV、JSON 和 XML、EPUB、ZIP 压缩包等。图片描述和音频转写会用到网上的托管服务。
它的长处是覆盖面广:一次调用就能处理一整个混着各种办公文件的文件夹。具体到 PDF,内置转换器用 pdfminer.six 提取文字,遇到排成表单或表格样式的页面则用 pdfplumber。
pdftomd 不是 MarkItDown,也不运行它。 它是另一个只为 PDF 打造的转换器,在你的浏览器里运行。这一页说明两者的区别,以及如果你需要,怎样自己运行 MarkItDown。
怎样运行 MarkItDown
需要 Python 3.10 或更高版本。只装 PDF 相关依赖:
pip install 'markitdown[pdf]'
在命令行里转换文件:
markitdown report.pdf -o report.md
或者在 Python 里:
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("report.pdf")
print(result.markdown)
我们的跑分就是用 0.1.9 版原样运行这些命令得到的。要支持 Word、PowerPoint、Excel 等其他格式,把 [pdf] 换成 'markitdown[all]'。
从 PDF 里能得到什么
在我们的 16 个公开 PDF 上,MarkItDown 0.1.9 的输出是这样的:
- 没有标题的纯文本。 没有一个文档得到哪怕一个
#标题,报告和论文的大纲都丢了。 - 保留 PDF 的换行和连字符。 句子在 PDF 每行结尾处被截断,还有 307 个单词仍被行尾连字符拆开,比如
pur- suant。 - 页眉页脚没去掉,每页重复出现。
- 研究论文缺字。 三篇研究论文的输出里,大约缺了一半到四分之三的单词。
- 扫描件什么都没有。 默认安装没有 PDF 的 OCR,所以扫描页输出为空。有个插件
markitdown-ocr,通过你配置的 API 把页面图片发给视觉模型来做 OCR。
对较简单的文档它表现不错:法院判决、表格类文件,以及中文、日文和韩文文本,所有单词都保留了下来。逐个文档的完整数据见我们的跑分。
同一个 PDF 用 pdftomd
| MarkItDown 0.1.9 | pdftomd | |
|---|---|---|
| 运行在 | Python,你的电脑上 | 你的浏览器,你的电脑上 |
| 安装 | pip install 'markitdown[pdf]' | 不需要 |
| 格式 | PDF、Office、HTML、EPUB 等 | |
| 标题 | 没有 | 有,根据字号和字重判断 |
| 段落 | 保留 PDF 的换行 | 把行合并成段落 |
| 页眉、页脚、页码 | 保留 | 去掉,有开关可保留 |
| 行尾连字符 | 保留 | 对照词表接回 |
| 表格 | 作为文本,表单式页面作为表格 | Markdown 表格,有表格的页面会被标记 |
| 扫描版 PDF | 插件加云端视觉模型 | 内置浏览器内 OCR |
| token 计数和 RAG 分块 | 没有 | 有 |
| 许可 | MIT | 免费使用 |
如果你还要转换 Word 或 PowerPoint 文件,或者在用 Python 写处理流程,MarkItDown 更实用。处理 PDF,尤其是想马上拿到结果,就用本页顶部的转换器。
常见问题
MarkItDown 有官方网站吗?
MarkItDown 以 Python 包的形式发布在 GitHub 上。微软没有把它做成网站,所以叫"MarkItDown 在线"的网站都是第三方运营的,背后用的引擎也各不相同。pdftomd 不运行 MarkItDown,也不上传你的文件。
MarkItDown 能读扫描版 PDF 吗?
默认安装不行。你可以加装 markitdown-ocr 插件,把图片发给你配置的视觉模型,或者用 Azure Document Intelligence 选项,这是微软的付费云服务。pdftomd 用在浏览器里运行的 OCR 模型读取扫描件,见 扫描版 PDF 转 Markdown。
给大模型喂文档,哪个更好?
对 PDF 来说,有标题、段落已合并、没有重复页眉的输出,模型更容易读懂,也更省 token。pdftomd 还会显示 token 数,并能把文档切成分块。见 给大模型用的 PDF 转 Markdown。
Python 里还有哪些选择?
PyMuPDF4LLM、Docling 和 Marker 都能把 PDF 转成 Markdown,各有所长,许可也不同。用 Python 把 PDF 转成 Markdown 里有每个工具能直接运行的代码。
MarkItDown 是微软的项目。pdftomd 是独立网站,与微软没有关联。