MarkItDown 完整指南:PDF、Word、Excel 三步转 Markdown
【免费下载链接】markitdownPython tool for converting files and office documents to Markdown.项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown
手里有 20 份 PDF 报告和 PPT 要喂给 LLM,逐个打开、逐段复制粘贴,根本干不完。MarkItDown 是一个轻量级 Python 工具,专治这件事:一条命令把各种文件转成 Markdown,标题、列表、表格的结构都保留下来。
它是什么,替你省掉了什么
以前把一份文档变成模型能读的文本,要做三步:打开文档、选中内容复制、再手工清理格式。PDF 更麻烦,手动复制出来的排版经常是乱的。
现在只剩一步:把文件交给 MarkItDown,它直接吐出 Markdown。这个工具的定位很明确,只做文件转 Markdown 这一件事。它的目标不是让人眼看着舒服,而是让结构对机器可读——标题变成#,表格变成管道表,列表变成-,链接保留地址。
三步跑通最小可用路径
第一步,安装。需要 Python 3.10 以上:
pip install 'markitdown[all]'括号里的[all]会把所有格式的依赖一次装齐;只处理少数格式的话,也可以单独装[pdf, docx],体积小一些。
第二步,转换一个文件:
markitdown path-to-file.pdf > document.md把文件路径传进去,转换结果就写进 document.md;不想用重定向的话,用-o参数指定输出文件也行。
第三步,在自己的 Python 代码里调用:
from markitdown import MarkItDown md = MarkItDown() result = md.convert("test.xlsx") print(result.text_content)上面五行就是最常用的用法:创建实例、调convert()传文件、从结果对象里取出 Markdown 文本。
想从源码跑也可以:
git clone https://gitcode.com/GitHub_Trending/ma/markitdown cd markitdown pip install -e packages/markitdown[all]这是源码安装路径,pip install -e表示可编辑安装,改代码立即生效。
核心能力拆解
带结构地转 PDF 为 Markdown
场景:你下载了一篇论文 PDF,想提取要点让模型总结。 它做了什么:逐页解析 PDF,标题转成#开头,表格转成 Markdown 表格语法,文内链接也不丢。 你拿到什么:一份保住结构的 .md 文件,直接进后续的检索或总结流程。
LLM 图片描述怎么配
场景:PPT 和图片文件本身几乎没有文字,普通转换完等于空白。 它做了什么:构造时传入llm_client和llm_model,转换时每个图片都会自动调视觉模型生成描述。 你拿到什么:输出 Markdown 里每张图都带文字说明,普通 LLM 也读得懂。
from markitdown import MarkItDown from openai import OpenAI md = MarkItDown(llm_client=OpenAI(), llm_model="gpt-4o") result = md.convert("slides.pptx") print(result.text_content)上面这段代码传入了一个视觉模型客户端。转换过程中每遇到一张图片,它会把图发给模型,并把返回的描述插到图片对应的位置。
扫描件怎么配 OCR 插件
场景:扫描件 PDF 全是图片,内置转换一个字都提不出来。 它做了什么:官方的markitdown-ocr插件复用同一套llm_client机制,对 PDF、Word、PPT 里的图片做 OCR。 你拿到什么:扫描图片里的文字被提取进 Markdown。不传llm_client时插件不生效,自动回落到内置转换器。
pip install markitdown-ocr openai装上后在构造函数里加enable_plugins=True即可启用。
进阶:批量转换怎么配
一个目录里堆满了文件,想一次全转:
import os from markitdown import MarkItDown md = MarkItDown() os.makedirs("out", exist_ok=True) for name in os.listdir("docs"): if name.endswith((".pdf", ".docx", ".xlsx")): text = md.convert(os.path.join("docs", name)).text_content with open(f"out/{os.path.splitext(name)[0]}.md", "w") as f: f.write(text)效果:跑一遍,docs 下每个受支持的文件都在 out 里多出一份同名 .md。这是给知识库或向量库做预处理的标准步骤。
端到端实战:把一篇论文 PDF 变成摘要素材
背景:刚下载了一篇论文,想让模型先读一遍再写一页摘要。
操作步骤:仓库 tests 目录里自带测试文件,命令可以直接照抄:
markitdown packages/markitdown/tests/test_files/test.pdf -o paper.md换成自己的文件时把路径替换掉,比如markitdown my-paper.pdf -o paper.md。
最终产出:paper.md 里是按 Markdown 排好的论文标题、作者列表、章节标题和摘要,测试文件的第一页长这样:
把 paper.md 直接丢给 LLM,问"这篇论文的核心方法是什么、做了哪些实验",模型能基于结构化文本回答,而不是对着扫描件干瞪眼。
选型参考:和 pandoc、textract 怎么选
对比 pandoc。pandoc 的格式种类和输出类型更多,适合 md 转 HTML、转 epub 这类文档发布流程。MarkItDown 只朝一个方向做:转成给机器读的 Markdown,结构保留面向 LLM。做文档发布管线选 pandoc,喂模型选这个。
对比 textract。textract 只提纯文本,结构全丢。它的输出保住标题、表格、列表,下游工具用起来顺手得多。
对比 Azure Document Intelligence 这类云服务。内置转换全程本地跑,不花钱;要处理扫描 PDF、复杂表格,再按需接云端端点,代价是每次调用都是一笔 API 费用。
收尾:现在就可以动手
它把"打开文档、选文字、清格式"压缩成一条命令,产出模型直接能读的 Markdown。
去跑一下markitdown 你的文件.pdf,半分钟后就能看到第一份转换结果。
【免费下载链接】markitdownPython tool for converting files and office documents to Markdown.项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考