MarkItDown转文档,别让LLM读糊?
你是不是也这样试过:把一个 PDF 或 PPT 丢给 LLM,让它总结、抽要点、进 RAG。结果它不是漏标题,就是把表格读成一团,最后还得你回头手工核。
问题不一定是模型笨。很多时候,是你给它的输入就不适合读。
`microsoft/markitdown` 要解决的是这一步:先把多种文件转成 Markdown,再交给 LLM 或文本分析管线。

先看硬账。GitHub API 当前显示 `microsoft/markitdown` 约 120K stars、8K forks,MIT license,主语言 Python,仓库描述是把文件和 Office 文档转成 Markdown。
它支持的输入不只 PDF。README 里列了 PDF、PowerPoint、Word、Excel、图片、音频、HTML、CSV、JSON、XML、ZIP、YouTube URL、EPub 等。
但我会先把它当成一个很窄的工具:把要喂给 LLM 的文件,先转成可检查的 Markdown。

第一天别急着接进整条 RAG。先在一个干净环境里跑最小命令。
README 给的安装路径是:
“`bash
pip install ‘markitdown[all]’
“`
然后拿一个样本文档试:
“`bash
markitdown path-to-file.pdf -o document.md
“`
如果你只想装少一点依赖,也可以按格式装,比如:
“`bash
pip install ‘markitdown[pdf, docx, pptx]’
“`

真正要验的是输出,不是命令能不能跑。
我会先看三处:
- 标题层级:一级、二级标题有没有乱掉。
- 表格结构:表头、行列、数字有没有错位。
- 链接和列表:链接是否还在,列表有没有被拆碎。
只要这三处过得去,后面再让 LLM 总结、问答、抽结构,才有意义。

它的最大收益不是“文档转换好看”,而是让你在喂模型前多一个可检查层。
PDF 原文丢进模型,你很难知道模型到底读到了什么。转成 Markdown 后,你至少能打开 `document.md` 看一眼:标题在不在、表格散没散、页眉页脚有没有污染正文。
可以截图带走的一句是:给 LLM 的文档输入,先要能被人快速检查。

三处边界也要先划清。
第一,README 明确提醒:MarkItDown 会以当前进程权限做 I/O。也就是说,它能访问当前进程能访问的资源。处理不可信输入时,要先做隔离和脱敏。
第二,它不是高保真排版转换工具。README 也说,输出面向文本分析工具,不一定适合做人类阅读的精美转换。
第三,图片、音频、扫描件这类内容会涉及 OCR、转写或 LLM 客户端配置。第一天不要把最复杂的扫描合同拿来当样本。

谁最适合先试?经常把 PDF、PPT、Word、网页内容喂给 LLM 的人。你要做总结、问答、RAG、知识库入库,都需要先知道“模型到底吃进去什么”。
谁先别急?如果你只处理纯文本 Markdown 或干净的代码文件,这个工具不是第一优先。你更需要的是分块、索引和检索评测。
今天先做一步:找一个 10 页以内、没有敏感信息的 PDF,转成 `document.md`,只查标题、表格、链接三处。
带走一句:RAG 卡住时,别先怪模型,先看文档是不是已经读糊了。
夜雨聆风