你有没有遇到过这样的场景:
老板甩给你一个文件夹,里面50个文件:PDF报告、Word文档、Excel表格、PPT演示稿、图片、音频……"把这些全部整理成知识库,下周一要用。"
于是你的周末变成了这样:
5个库、200行代码、3小时调试,最后输出格式还参差不齐。
2026年4月,微软给出了标准答案。
| 开发团队 | |
| GitHub Stars | 14.5万 |
| 最新版本 | |
| 开源协议 | |
| Python要求 |
一句话定义:MarkItDown 是一个轻量级 Python 工具,将各种文件和办公文档转换为 LLM 友好的 Markdown 格式。
核心痛点:RAG(检索增强生成)应用的文档预处理。
当你想让 AI 读取企业知识库时,面临两个问题:
MarkItDown 的解法:
各种格式文件 ↓ MarkItDown(一键转换)结构清晰的 Markdown ↓ LLM 直接消费(Token 效率提升 3-5 倍)Markdown 是 LLM 训练数据的原生格式,结构清晰、Token 密度高,是 RAG 应用的最佳中间格式。
| 办公文档 | |
| 网页与文本 | |
| 多媒体 | |
| 压缩包 |
一句话总结:只要你电脑里有的文件,基本都能转。
# 安装(全格式支持)pip install 'markitdown[all]'# 基础转换:PDF → Markdownmarkitdown report.pdf > report.md# 指定输出文件markitdown report.pdf -o report.md# 管道输入(适合脚本集成)cat report.pdf | markitdown
实测效果:一个 50页的 PDF 报告,转换耗时约 3秒,输出的 Markdown 保留了标题层级、表格结构和列表格式。
from markitdown import MarkItDown
# 基础用法md = MarkItDown(enable_plugins=False)result = md.convert("report.pdf")print(result.text_content)# 接入 LLM 实现图片描述(自动调用 GPT-4o 描述图片内容)from openai import OpenAIclient = OpenAI()md = MarkItDown( llm_client=client, llm_model="gpt-4o", llm_prompt="请详细描述这张图片的内容,用于文档索引")result = md.convert("report_with_images.pdf")print(result.text_content)
亮点:图片会自动被 LLM 描述并嵌入 Markdown,RAG 应用可以直接索引图片内容!
docker build -t markitdown:latest .docker run --rm -i markitdown:latest < ~/report.pdf > output.md
| 依赖库数量 | 1个 | |
| 代码量 | 5行 | |
| 格式支持 | 29+种 | |
| 图片OCR | 内置支持 | |
| 音频转写 | 内置支持 | |
| LLM友好度 | 原生Markdown |
效率提升估算:
传统方案:调研库(2h) + 写代码(3h) + 调试(3h) = 8小时MarkItDown:安装(2min) + 写代码(10min) + 调试(30min) = 42分钟效率提升:8h / 0.7h ≈ 11.4倍 ✅场景:某电商公司构建商品知识库,需要处理的文档类型:
传统方案:
Python# 需要维护这样一套"缝合怪"代码import PyPDF2# PDF文本import pdfplumber# PDF表格import python_docx# Wordimport openpyxl# Excelimport pytesseract# OCR# ... 还要处理各种格式的边缘情况
MarkItDown方案:
from markitdown import MarkItDownimport osmd = MarkItDown(enable_plugins=True) # 启用OCR插件for file in os.listdir("docs/"): result = md.convert(f"docs/{file}")withopen(f"output/{file}.md", "w") as f: f.write(result.text_content)结果:3000+份文档,全程 无人值守,输出格式统一为 Markdown,直接接入向量数据库。
MarkItDown 支持三种转换引擎,可按场景选择:
| 内置转换器 | ||
| Azure Document Intelligence | ||
| Azure Content Understanding |
# 使用Azure Document Intelligence(高精度模式)from markitdown import MarkItDownmd = MarkItDown( docintel_endpoint="<your_azure_endpoint>")result = md.convert("complex_scan.pdf")print(result.text_content)MarkItDown 功能强大,但需要注意安全问题:
convert_local()convert_response()from markitdown.converters import ContentUnderstandingFileType# 只让PDF使用Azure CU引擎,其他格式用内置转换器md = MarkItDown(cu_endpoint="<endpoint>",cu_file_types=[ContentUnderstandingFileType.PDF],)
MarkItDown 支持第三方插件扩展,GitHub 上已有多个实用插件:
#markitdown-plugin 标签# 查看已安装插件markitdown --list-plugins# 启用插件markitdown --use-plugins document.pdf
| ① 微软官方背书 | |
| ② 14.5万星验证 | |
| ③ 一行命令搞定 | |
| ④ RAG必备工具 | |
| ⑤ MIT协议 |