MarkItDown:把办公文档转成 Markdown 喂给大模型的实践
【免费下载链接】markitdownPython tool for converting files and office documents to Markdown.项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown
手头攒着一批 PDF、PPT、Word、Excel,想先转成 Markdown 再喂给大模型做问答和检索。MarkItDown 就是一个轻量 Python 工具:一条命令把文件转成带标题、列表、表格的 Markdown 文本,本地离线就能跑。
🚀 装好依赖,跑通第一次文档转换
环境要求 Python 3.10 以上。先建个虚拟环境再安装:
pip install 'markitdown[all]' markitdown report.pdf > report.md[all]一次性装齐 PDF、Office、音频、Azure 云服务的可选依赖;只转某几种格式时,也可以只装markitdown[pdf,docx,pptx]这样对应的子集,装得快一点。
不加-o时结果直接打到终端,markitdown file -o out.md则写入指定文件;cat file.pdf | markitdown这种管道方式同样支持。
📄 转换时保留了什么
标题、列表、表格、链接这些结构会被保留下来,而不是压成一整段纯文本。PPT 每一页的层级会变成 Markdown 标题,Excel 工作簿会转成管道表格,转完就能直接贴进笔记里继续用。
图片和音频走的是另一条路:图片默认输出 EXIF 元信息,接上 LLM 后可以生成图片描述;音频依赖可选依赖做语音转写。这些核心转换逻辑都在 converters 目录里,每种格式一个转换器,想看某类文件怎么被拆解,直接读对应文件就行。
⚙️ 按场景动参数
| 什么情况下 | 动哪个参数 |
|---|---|
| 本地离线转,结构简单的文档 | 不用动,装好后默认就走离线转换器 |
| 扫描件、复杂表格,离线效果不够 | 加-d -e "端点"走 Document Intelligence,或加--use-cu --cu-endpoint "端点"走 Azure Content Understanding |
| 需要抽出发票金额、日期这类结构字段 | CU 模式下加--cu-analyzer指定分析器,用--cu-file-types pdf限定只有 PDF 走云端,控制账单 |
| 用管道读入、文件没有扩展名 | 加-x pdf给扩展名提示,-m给 MIME 类型,-c给编码 |
Python API 侧则是把docintel_endpoint、cu_endpoint、llm_client、llm_model这几个参数直接传给MarkItDown()构造函数,行为与 CLI 一致。
🐳 换个方式跑
不想在本机装依赖,仓库根目录的 Dockerfile 可以直接构建:
docker build -t markitdown:latest . docker run --rm -i markitdown:latest < report.pdf > out.md让 AI 助手直接调转换的话,另装了markitdown-mcp包后运行markitdown-mcp就起一个 MCP 服务器,只暴露一个convert_to_markdown工具,传 URI 即可。源码见 markitdown-mcp。
❓ 几个容易卡住的地方
Q:转某些格式时报"没有对应转换器"?基础安装只带核心依赖,PDF、PPT、Word、Excel 这些都要靠可选依赖激活。按格式补装即可,例如pip install 'markitdown[pdf,docx,pptx]',装完后不用重启别的,命令照旧。
Q:扫描件转出来几乎是空的?离线转换器只能读 PDF 里的文本层,扫描件是图像,没有文本可读。要么换 Document Intelligence / Content Understanding 的云端提取,要么接markitdown-ocr插件让 LLM 读图补字。
Q:从标准输入读文件时识别不了类型?转换器要靠扩展名、MIME 或编码来猜文件类型,管道模式下没有文件路径可看,就用-x pdf、-m、-c手动给一个提示。
去项目页翻最新 release 的说明,看看哪些格式和参数是刚加的。
【免费下载链接】markitdownPython tool for converting files and office documents to Markdown.项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考