MarkItDown 完整指南:把办公文档转成 Markdown 的免费 Python 工具
【免费下载链接】markitdownPython tool for converting files and office documents to Markdown.项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown
RAG 管道只吃文本,你手里的 PDF 研报、Word 纪要却全是二进制,LLM 根本读不懂。MarkItDown 就是补这一环的免费工具:本地解析 PDF、Word、Excel、PPT、图片、音频,转成带标题、列表、表格的 Markdown,结构不丢,一条命令就能跑。
两条命令装好并跑通转换 ⚡
环境要求 Python 3.10 及以上。想省事就装全量依赖,几乎所有格式开箱即用;只要 PDF 和 Word 就装小一点的组合,依赖更干净:
pip install 'markitdown[all]' # 或者只装 PDF + Word 所需依赖 pip install 'markitdown[pdf, docx]'装完直接转:
markitdown report.pdf -o report.md-o report.md让结果直接落盘成文件;不带这个参数,结果打印到标准输出,可以markitdown report.pdf > out.md或接进 shell 管道。- 支持从标准输入读:
cat report.pdf | markitdown,适合脚本里现读现转。 - 不想用命令行,Python 里三行就够:
from markitdown import MarkItDown md = MarkItDown() print(md.convert("report.xlsx").text_content)convert吃本地路径、远程地址、字节流都行。另有 Docker 镜像可自建,一条docker run进文件、标准输出出 Markdown。
什么人在什么场景用它
研究员/开发:研报 PDF 进 RAG。批量转 PDF 和 Word,标题层级、表格、链接都保留下来。切块向量化之后,召回的句子语义完整,不会把一段表格切成乱码——这是它最典型的用法。
数据分析师:Excel 周报喂给 LLM。xlsx、xls、CSV 都变成 Markdown 表格,LLM 直接读数字就能生成总结句,不用再解析单元格坐标。
内容运营:YouTube 链接变字幕稿。丢个视频链接进去,字幕以 Markdown 文本回来,做二创素材或摘要很方便。
档案管理员:ZIP 归档整包处理。把攒的一批扫描件或素材打成一个 zip 丢进去,内部文件逐个转换后统一入库,省得手动解压再循环。
图片/音频用户:要元数据。图片默认输出 EXIF 元数据,音频做 EXIF 元数据加语音转写(需装[audio-transcription]可选依赖)。
默认关闭的进阶能力,各花各的代价
接大模型给图片写描述
图片本身没文字时,默认只吐 EXIF 元数据。在构造时传入llm_client和llm_model(OpenAI 兼容客户端即可),转 PPT 和图片时大模型会生成一段文字描述塞进结果。仓库测试目录里有一张专门验证这个功能的样例图:
代价:当前只对 pptx 和图片生效,每次转换都消耗 token。
OCR 插件:扫描件里图片的文字也能捞出来
pip install markitdown-ocr装上这个插件,PDF、Word、PPT、Excel 转换器会顺带识别文档里图片中的文字,复用同一套llm_client/llm_model,不引入新的 ML 库和二进制依赖。注意一个坑:没传llm_client时插件照常加载但 OCR 静默跳过,回退到普通转换,不会报错提醒你。配置细节见 OCR 插件说明。
Azure 云服务:用云端布局分析补质量
本地转复杂文档总差一口气时,可以接 Azure Document Intelligence(命令行加-d -e "<endpoint>")或 Content Understanding(--use-cu --cu-endpoint ...),云端布局分析和 OCR 对扫描件、复杂表格更稳,Content Understanding 还能把发票金额、日期这类字段抽成 YAML front matter,也是唯一能处理视频文件的路。代价说破:每次转换都是一次计费的云端 API 调用。
第三方插件:列表之外的格式
markitdown --list-plugins看装了哪些插件,转换时加-p启用。插件默认全部关闭,不传这个参数等于没装。
排错速查:症状 → 原因 → 解法 🛠
- 某类文件一转就报错→ 缺对应可选依赖 → 按格式补装,如
pip install 'markitdown[pdf]',完整清单见 README。 - 从管道读入时识别不出文件类型→ 没有扩展名线索 → 用
-x指定扩展名,或用-c指定字符集、-m指定 MIME 类型做提示。 - 装了 OCR 插件但结果里没有图片文字→ 没传
llm_client时 OCR 静默跳过 → 确认构造MarkItDown时传了llm_client和llm_model,且-p已启用。 - 结构丢得厉害→ 排版越复杂越容易丢 → 先抽一份检查;实在复杂换 Azure 云服务,或接受精度损失。
怀疑某个格式的实现有 bug?各格式的转换逻辑都在 转换模块目录,按文件名(_pdf_converter.py、_xlsx_converter.py……)定位即可。
能力边界:这些活别交给它
- 它喂的是"给管道读的结构化文本",不是像素级还原。想要和原文件长得一模一样的版式,它做不到。
- 需要逐页人工校对的法律文书、财务报表,别指望它一步到位。
- 视频文件本地完全不支持,只有走 Content Understanding 云服务这条路。
- 一句话定位:它是批量清洗进文本管道的工具,不是排版引擎;需要保真输出时直接换专用排版工具,省时间。
【免费下载链接】markitdownPython tool for converting files and office documents to Markdown.项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考