
markitdown 完全指南把 PDF、PPT、Word 一键转成 Markdown 的免费开源工具【免费下载链接】markitdownPython tool for converting files and office documents to Markdown.项目地址: https://gitcode.com/GitHub_Trending/ma/markitdownmarkitdown 是微软开源的 Python 工具MIT 协议专门把各种文件在本地转成结构化 Markdown让 LLM 和文本管线能真正读懂你的文档。覆盖 PDF、PPT、Word、Excel、图片、音频、HTML、CSV/JSON/XML、EPUB、ZIP、YouTube 字幕等 20 多种格式还能装插件继续扩展标题转#、表格转 Markdown 表格、列表转列表输出直接能喂给 RAG 切片一条命令安装、一条命令转换全程本地离线不传文件到任何在线服务文档喂给 LLM 之前为什么要先过一遍转换假设你手头有 200 份产品 PPT 和 300 份技术 PDF要搭一个知识库问答。最省事的做法是把文件直接塞给模型——但模型读不了二进制。于是你开始复制粘贴表格粘出来错位成纯文本幻灯片层级结构全丢备注页根本懒得处理。市面上替代方案各有短板在线转换服务要上传文件、结构常丢敏感资料过不了这一关Pandoc 处理文档类文件不错但 PPT 基本是盲区图片音频也不在支持范围商业库能力强但收费且绑定厂商。markitdown 的定位就是本地运行、免费开源MIT、离线可用一条命令把文件变成结构化 Markdown不联网也能干活。 3 步装好 markitdown 并完成第一次转换第 1 步装环境。要求 Python 3.10建议虚拟环境[all]会装齐各格式依赖也可以按需只装某几个python -m venv .venv source .venv/bin/activate pip install markitdown[all] markitdown --version # 看到版本号即装好第 2 步跑一条命令。最常用就这一条输出写到report.md也支持管道和标准输入方便串进现有脚本markitdown report.pdf -o report.md cat report.pdf | markitdown report.md第 3 步看输出。打开report.md确认标题层级和表格都对味第一个转换就跑通了。不想装 CLI 的话Python API 也只要三行from markitdown import MarkItDown md MarkItDown() result md.convert(data.xlsx) print(result.markdown) 核心能力拆解markitdown 转 Markdown 为什么够用依赖按格式装不背一身包基础包只带 magika内容探测、requests、markdownify 这类轻量依赖每种格式对应一组 extraspip install markitdown[pdf, docx, pptx]只装这三个格式的依赖。这意味着 CI 里只处理 PDF 的管线不用拖进 pandas 和 python-pptx装包时间和镜像体积都省下来。表格还是表格标题还是标题转换时保留文档层级PPT 的标题形状变成#级标题Excel 工作表变成 Markdown 表格Word 列表变成有序/无序列表。因为结构保住了RAG 切片时标题仍是段落锚点表格保留行列对应chunk 里不会把第 3 列是什么这种信息搅碎。图片、音频、字幕都能落地成文字图片默认提取 EXIF 元数据配上 LLM 客户端后会对图片生成文字描述写进输出wav/mp3 可语音转写YouTube 链接直接抓字幕转文本。因为多模态内容也被转成了文字文档里图讲了什么对模型不再是黑盒。下面这张图就是仓库测试集里用来验证 LLM 图片描述的样例 实战工作流批量转换、OCR 兜底场景一技术 PDF 转可检索的 Markdownmarkitdown 测试集里就带一篇多栏排版的学术论文转出来标题、段落、图片说明都保住了层级markitdown paper.pdf -o paper.md多栏排版偶尔有段落顺序的小错位但标题、引用、表格基本完整作为检索语料够用。场景二整目录 PPT 批量转完周报、汇报材料攒了一目录一个 for 循环全转完不用写复杂脚本mkdir -p ./out for f in ./presentations/*.pptx; do markitdown $f -o ./out/$(basename ${f%.pptx}).md done坏文件不会中断循环最后挑出缺失的输出补处理即可。场景三扫描件和嵌入图片的 OCR 兜底扫描件没有文字层内置转换器会输出空文件。装 markitdown-ocr 插件后配个 LLM 客户端就能从 PDF/DOCX/PPTX/XLSX 的嵌入图片里提取文字纯扫描件还有全页 OCR 兜底from markitdown import MarkItDown from openai import OpenAI md MarkItDown( enable_pluginsTrue, llm_clientOpenAI(), llm_modelgpt-4o, ) print(md.convert(scanned_invoice.pdf).markdown)这个场景是 CLI API 混用的典型入口日常批量用 CLI需要传 LLM 参数的特殊管线用 API。 原理与扩展markitdown 内部分发机制内部流程就三步用 magika 对输入做内容探测不止看扩展名再结合你给的扩展名/MIME 提示按注册优先级匹配转换器converters/目录下的转换器按专用格式优先、通用格式兜底的顺序逐个尝试所有格式统一输出DocumentConverterResultresult.markdown直接取用扩展有两条路第三方插件——实现DocumentConverter的accepts()/convert()并通过markitdown.plugin入口点注册示例见 packages/markitdown-sample-plugin/src/markitdown_sample_plugin/_plugin.pyAzure 云增强——扫描件走 Content Understanding能把发票金额、日期这类字段抽成 YAML front matter命令行加--use-cu开启。⚠️ markitdown 常见问题与避坑Q转换报错 MissingDependency该格式对应的 extras 没装。补装pip install markitdown[pdf]这类对应项或直接上[all]。Q扫描件 PDF 转出来是空的纯扫描件没有文字层内置转换器提不到字。装 markitdown-ocr 插件用 LLM Vision 做 OCR或走 Azure Document Intelligence 的云端布局分析。Q中文文档转出来乱码文本类文件传-c UTF-8字符集提示多数情况是源文件本身编码问题用file命令先确认一下。Q处理不可信输入要注意什么markitdown 以当前进程权限做 I/O和open()一样能访问进程可达的资源。处理外部输入时用convert_local()或convert_stream()这类更窄的接口别把陌生 URL 直接塞给convert()。Q它适合做什么高保真排版吗不适合。它的目标是给 LLM 和文本管线消费的结构化文本结构对但排版不为好看负责。要给人看的高保真文档那不是它的主场。现在就做的一件事挑一份你手头的 PPT装好markitdown[pptx]跑一条markitdown weekly.pptx -o weekly.md30 秒后打开输出看标题和表格还在不在。在对味的话批量脚本、OCR 兜底或 LLM 图片描述前面实战工作流那节的命令直接抄。【免费下载链接】markitdownPython tool for converting files and office documents to Markdown.项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考