GitHub 趋势 · 第 114 期

把任意文件喂给大模型,微软这一个 Python 工具成了默认入口

#开源工具#文档解析#RAG#LLM基建

结论:markitdown 是微软开源的 Python 文档转 Markdown 工具,MIT 协议、可免费商用。它的价值不在转换得漂亮,而在于把几十种格式统一成一段纯文本,直接喂给大模型。凡是做检索增强、知识库、Agent 文档读取的人,几乎都绕不开它。

你的智能体要读一份 PDF、一份 Excel、一个网页,传统做法是给每种格式装一个解析库、各写一套预处理。格式一多,代码里全是判断分支和兼容坑。markitdown 把这件事收口成一次函数调用。

这个项目是什么

markitdown 来自微软,定位是把文件和办公文档转成 Markdown的 Python 工具。它不追求还原排版,目标是产出一段干净、机器好读的 Markdown,专门给文本分析工具消费。

它支持 PDF、PowerPoint、Word、Excel、图片(EXIF 元数据加 OCR)、音频(EXIF 加语音转写)、HTML、CSV / JSON / XML 等文本格式、ZIP(会遍历内容)、YouTube 链接、EPubs 等格式。

核心能力

能力说明
统一入口一行 convert() 处理本地文件、远程 URI、字节流
格式覆盖广PDF / Office / 图片 / 音频 / 网页 / 压缩包 / EPUB
插件机制enable_plugins=True 可加载第三方扩展(如 OCR)
可选依赖用 [pdf] / [docx] 等 extras 按需装,或 [all] 一把装齐
窄接口convert_local() / convert_stream() / convert_response() 收紧权限面

上手:README 原文命令

安装(官方 README 原文):

pip install 'markitdown[all]'

命令行(官方 README 原文):

markitdown path-to-file.pdf > document.md

Python API(官方 README 原文):

from markitdown import MarkItDown

md = MarkItDown(enable_plugins=False) # Set to True to enable plugins
result = md.convert("test.xlsx")
print(result.markdown)

我的判断

适合谁:做检索增强(RAG)、知识库、Agent 文档读取的开发者;需要把一批异构文档批量变成纯文本喂模型的人;以及想把读文件塞进工作流、又不想每种格式各写一套的人。

不适合谁:想要高保真排版还原、拿它当 Pandoc 替代品出漂亮文档的人。官方明确说输出meant to be consumed by text analysis tools,对人工阅读为主的场景不一定合适。

几个容易踩的点:① 只装 markitdown 本体,PDF / Office 会转换失败,必须带 [all] 或对应 extras;② 它按当前进程权限做 I/O,官方要求Sanitize your inputs,服务端调用优先用 convert_local();③ 输出是机器向的纯文本,表格与版式会丢;④ 贡献需签微软 CLA,治理归微软。

数据脚注

仓库:github.com/microsoft/markitdown | 协议:MIT(可商用)

抓取时间:2026-09-15(数据来自 GitHub Trending 与仓库 API 实时快照)

本文安装与命令示例均逐字取自官方 README;未做实测运行,性能与格式还原以官方文档为准。

互动与下期预告

你现在的 Agent 是怎么读文档的?是各自调库,还是统一走 markitdown?评论区聊聊。

下期我们蹲 AprilNEA/OpenLogi——一个用 Rust 写的、本地优先的 Logitech Options+ 开源替代,无账号、无遥测。

#开源工具#文档解析#RAG