Python MarkItDown:转文档喂 LLM,多格式轻松处理
用 ChatGPT、Claude 这类大模型时,你是不是也遇到过这种麻烦:想把 PDF 里的报告、Word 里的方案喂给 LLM 分析,结果要么复制粘贴丢格式,要么图片里的文字提取不出来,甚至大文件直接超出上下文限制?

别再手动整理文档了!最新的「MarkItDown」库,专门解决 “文档转 LLM 输入” 的痛点 —— 不管是 PDF、Office 文件,还是图片、音频,它都能快速转成「令牌效率高、LLM 易识别」的 Markdown,小白也能 10 分钟上手。
先搞懂:MarkItDown 凭什么比手动处理强?
许多人不知道,直接把原始文档喂给 LLM,不仅容易由于格式混乱导致分析出错,还会浪费大量令牌(列如多余的排版代码)。而 MarkItDown 的核心优势,就是 “精准适配 LLM 工作流”:
- 支持格式超全:覆盖日常 90% 的文档类型,不用装多个工具切换办公类:Word、Excel、PowerPoint(新旧版本都能转)通用类:PDF、HTML、图片(连截图里的文字都能提)特殊类:CSV/JSON/XML 文本、WAV/MP3 音频(能转文字)、YouTube 视频(提取字幕)
- 转换速度快:比传统工具(如 Pandoc)少 30% 的处理步骤,10MB 的 PDF 几十秒转完
- 零门槛集成 AI:直接对接 LLM 做 OCR、图片描述,不用自己写复杂接口
手把手实操:从安装到转文档,3 步搞定
第一步:先装库,两种安装方式按需选
MarkItDown 支持 “全量安装” 和 “按需安装”,避免占太多内存。第一要注意:别用 Python 3.14(依赖没适配,会装旧版本),提议用 Python 3.13 及以下(用 pyenv 能管理多版本)。
情况 1:需要处理所有格式(列如职场全能选手)
先激活虚拟环境,再执行全量安装命令:
# 激活虚拟环境(Windows)
venvScriptsactivate
# 激活虚拟环境(Mac/Linux)
source venv/bin/activate
# 安装MarkItDown及所有依赖
pip install 'markitdown[all]'
# 验证是否装成功(显示版本号就对了)
markitdown --version
# 正常输出:markitdown 0.1.3
情况 2:只处理特定格式(列如只转 PDF/Word/PPT)
列如我平时只用 PDF、Word、PPT,就只装这三类依赖,更轻便:
pip install 'markitdown[pdf,pptx,docx]'
其他常用依赖对应:
- 处理 Excel:加xlsx,xls
- 处理图片 / OCR:不用额外加(全量和基础包都包含)
- 处理 YouTube 字幕:加youtube-transcription
第二步:写代码转文档,1 行核心代码就够
MarkItDown 最友善的地方,就是不用复杂配置,调用convert()方法就能转。以 “转 PDF 到 Markdown” 为例,完整代码带注释:
# 导入MarkItDown库
from markitdown import MarkItDown
# 1. 初始化转换器
converter = MarkItDown()
# 2. 转换文档(这里以PDF为例,其他格式只需换文件路径)
# 输入:你的文档路径(列如"工作报告.pdf")
# 输出:转换后的Markdown文本
markdown_text = converter.convert("你的文档路径.pdf")
# 3. 把结果保存到文件(方便后续复制喂给LLM)
with open("转换后的文档.md", "w", encoding="utf-8") as f:
f.write(markdown_text)
print("转换完成!Markdown文件已保存")
如果要转图片(列如截图里的表格),只需把”你的文档路径.pdf”换成图片路径(如”数据截图.png”),它会自动用 OCR 提取文字,转成带格式的 Markdown 表格 / 文本。
第三步:跟 LLM 联动,解锁 3 个实用技巧
光转文档还不够,MarkItDown 能直接对接 LLM,让 “文档分析” 更高效:
技巧 1:提取图片里的文字,喂给 LLM 总结
列如你有一张手写笔记的照片,用 MarkItDown 转完后,直接丢给 ChatGPT 总结:
from markitdown import MarkItDown
import openai # 假设用OpenAI的模型
# 1. 转图片为Markdown(OCR提取文字)
converter = MarkItDown()
note_markdown = converter.convert("手写笔记.jpg")
# 2. 调用LLM总结
openai.api_key = "你的API密钥"
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": f"总结这篇笔记:{note_markdown}"}]
)
print(response.choices[0].message.content)
技巧 2:给图片生成描述,帮 LLM 理解视觉内容
如果图片是图表(如折线图),MarkItDown 能让 LLM “看懂” 图:
# 转图片时加"describe_images=True",会生成图片描述
markdown_with_image_desc = converter.convert(
"销售折线图.png",
describe_images=True # 关键参数:生成图片描述
)
# 此时markdown里会多一段“图片内容:2024年1-6月销售数据,其中3月达到峰值...”
技巧 3:连接 Claude Desktop,聊天时直接转文档
打开 MarkItDown 的 MCP 服务器,就能在 Claude 聊天框里 “实时转文档”:
# 启动MCP服务器(命令行执行)
markitdown mcp start
然后在 Claude Desktop 里添加 “MarkItDown” 插件,聊天时直接上传文件,它会自动转成 Markdown 再分析,不用先手动转文件。
关键对比:MarkItDown 和 Pandoc 该选谁?
许多人用过 Pandoc(老牌文档转换工具),这里帮你分清适用场景,别装错工具:
|
需求场景 |
选 MarkItDown |
选 Pandoc |
|
转文档喂 LLM,追求速度和令牌效率 |
✅ |
❌(格式太复杂,浪费令牌) |
|
处理图片 / OCR、对接 AI 工作流 |
✅ |
❌(需额外装插件,麻烦) |
|
要转成 “人看的精美格式”(如带排版的报告) |
❌(只适配 LLM,排版简单) |
✅ |
|
需要支持超冷门格式(如 LaTeX、EPUB) |
❌ |
✅ |
简单说:给 LLM 用,选 MarkItDown;给人看,选 Pandoc。
避坑提醒:这 3 个问题要注意
- Python 版本别错:Python 3.14 会装旧版本,务必用 3.13 及以下
- 别指望它做 “精美排版”:转出来的 Markdown 是给 LLM 看的,不是给人当报告的,复杂排版会丢失
如果你每天要花 1 小时整理文档喂 LLM,目前用 MarkItDown 就能把时间压缩到 5 分钟。赶紧装一个试试,把精力省下来打磨 prompt,比手动处理文档高效多了!



