MarkItDown 实践指南:3 步把 PDF 和办公文档转成 Markdown
2026/8/28 12:13:51 网站建设 项目流程

MarkItDown 实践指南:3 步把 PDF 和办公文档转成 Markdown

【免费下载链接】markitdownPython tool for converting files and office documents to Markdown.项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown

MarkItDown 是一款轻量级 Python 文档转换工具,支持 PDF、Word、Excel、PowerPoint、音频、图片等 20 余种格式,全部转换为结构化 Markdown。当你需要把杂乱源文件喂给大模型,或想给旧文档建立可全文检索的文本档案时,它是路径最短的方案。下面从安装开始,直接走到真实用法。

它是什么:为大模型设计的文档工具

MarkItDown 是一个命令行工具和 Python 库,解决一个问题:把各种源文件转换成"保留结构"的 Markdown——标题、列表、表格、链接都在,输出可直接被大模型和文本分析流水线消费。

  • 格式覆盖:PDF、PPTX、DOCX、XLSX、EPUB、音频、图片、HTML、CSV/JSON/XML、ZIP、YouTube 链接等
  • 结构保留:标题、列表、表格、链接以 Markdown 语法输出,而不是一坨平铺文本
  • 可扩展:内置转换器 + 第三方插件系统(默认关闭,按需开启)

每种格式对应一个专用转换器,可在转换器目录里逐一查看实现。

3 步装好并跑出第一个结果

📌 第 1 步 安装(要求 Python 3.10+,建议先建虚拟环境)。

pip install 'markitdown[all]'

[all]后缀会装齐所有格式的依赖;只处理部分格式可改成pip install 'markitdown[pdf, docx, pptx]',少装依赖也少踩坑。

📌 第 2 步 转换第一个文件。

markitdown report.pdf -o report.md

运行后当前目录出现report.md,内容是 PDF 的 Markdown 版本,原来的标题层级和表格都被保留下来。

📌 第 3 步 验证结果。

head -20 report.md

看到标题、列表或管道表格语法即表示转换成功,这个文件可以直接喂给大模型或搜索引擎。

核心能力拆解

20 余种格式:一个工具全覆盖

转换清单比多数人想象得更长:除了 PDF 和 Office,还有 EPUB 电子书、Outlook 邮件、HTML 页面、音频(wav/mp3 语音转写)、图片(EXIF 元数据 + OCR)、YouTube 字幕、ZIP(逐个处理内部文件)、CSV/JSON/XML 等文本格式。一套工具覆盖全部格式,不用按类型分别凑转换器。

Python API:嵌进你自己的流水线

自动化场景别依赖命令行,直接调库:

from markitdown import MarkItDown md = MarkItDown() result = md.convert("test.xlsx") print(result.text_content)

convert()会根据扩展名自动选对转换器,result.text_content就是可直接入库或传给下游的 Markdown 文本。

大模型联动:图片描述与 OCR

默认转换图片时只提取 EXIF 元数据;构造时传入llm_clientllm_model,视觉模型会给图片生成文字描述:

from markitdown import MarkItDown from openai import OpenAI md = MarkItDown(llm_client=OpenAI(), llm_model="gpt-4o") print(md.convert("photo.jpg").text_content)

纯图片由此变成一段文字描述,模型就能"读懂"PPT 或报告里的图。

扫描件这类图片化文档则安装 OCR 插件:

pip install markitdown-ocr openai

该命令安装 OCR 插件和 OpenAI 客户端,插件源码为 PDF、DOCX、PPTX、XLSX 增加基于 LLM Vision 的文字识别。

实战场景三例

给 RAG 知识库做预处理

背景:团队的 PDF 论文和规范文档零散存放,RAG 流水线只吃文本。 操作:CLI 逐个转换,markitdown paper.pdf -o corpus/paper.md。 预期输出:论文变成结构化 Markdown,标题、列表、图注保留,可直接切块做向量化。

批量转换办公文档归档

背景:上百份 Word、Excel 需要归档并支持全文检索。 操作:用 shell 循环跑同一条命令:for f in *.docx; do markitdown "$f" -o "md/${f%.docx}.md"; done。 预期输出:每份文档得到对应 .md,表格以管道表格语法输出,整个目录可直接接入搜索引擎。

扫描件转换

背景:扫描版 PDF 没有文本层,内置转换器几乎抽不出文字。 操作:启用 OCR 插件并传入视觉模型,MarkItDown(enable_plugins=True, llm_client=OpenAI(), llm_model="gpt-4o"),再调md.convert("scanned.pdf")。 预期输出:扫描件图片中的文字被识别成 Markdown 文本;不提供llm_client时插件仍会加载,但 OCR 被静默跳过,回退到内置转换器。

避坑:三个常见问题与参数速查

问题 1:扫描件 PDF 转出来是空的或乱码 现象:转换"成功",输出却是空白或零星乱码。原因:内置转换器做的是离线文本抽取,纯图片 PDF 没有文本层可抽。解法:用上一节的 markitdown-ocr 插件,或走云端markitdown file.pdf --use-cu --cu-endpoint <endpoint>

问题 2:管道输入识别不出文件类型 现象:cat x | markitdown报文件类型未知。原因:流输入没有扩展名可供检测。解法:加-x pdf扩展名提示,或用-m指定 MIME 类型、-c指定字符编码。

问题 3:输出异常巨大,里面全是 base64 现象:输出里出现几 MB 的 data URI 数据块。原因:文档内嵌图片以 base64 形式被保留。解法:默认会截断,一般不用管;确需保留时用--keep-data-uris

CLI 常用参数速查(均来自官方实现):

参数作用
-o FILE输出写入文件而非标准输出
-x/-m/-c流输入的扩展名 / MIME / 编码提示
-d -e URL用 Azure Document Intelligence 云端抽取
--use-cu --cu-endpoint URL用 Azure Content Understanding(支持视频与字段抽取)
-p/--list-plugins启用第三方插件 / 列出已装插件
--keep-data-uris输出中保留 base64 data URI

与 Pandoc、textract 横向对比

维度MarkItDownPandoctextract
定位多格式转 Markdown,面向 LLM万格式互转,Markdown 只是中间表示纯文本抽取
结构保留标题/列表/表格/链接较好差,扁平文本
媒体支持音频转写、图片描述/OCR
接入方式Python 库 + CLICLIPython 库
适合场景RAG 语料、文本分析排版、输出 PDF/EPUB快速抓几段文字

说直白点:目标若是"把结构化文本喂给大模型",MarkItDown 最直接;要排版并输出 PDF/EPUB,选 Pandoc;只想从文件里抓几段纯文字,textract 够用。

写在最后

MarkItDown 把 20 余种文件收敛成一份模型可直接读的 Markdown。如果你正要做知识库预处理,先按本文 3 步跑通:装、转、验。想扩展自己的格式转换器,可参考示例插件。

【免费下载链接】markitdownPython tool for converting files and office documents to Markdown.项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询