MarkItDown 是微软开源的 Python 工具,可将 PDF、Word、Excel、PPT、图片、音频等文件转换为 Markdown。支持文档结构保留、表格转换、OCR 识别、语音转录,是 LLM 文本分析流水线的理想工具。轻量级设计,命令行和 Python API 双支持,插件系统可扩展。
🎤 引言:为什么需要 MarkItDown?
你有没有遇到过这种情况:
- 需要将 PDF 文档转换为 Markdown 供 LLM 分析,但格式总是乱掉
- 手上有大量 Office 文档(Word/Excel/PPT),想批量转换为 Markdown
- 需要提取图片中的 EXIF 信息和 OCR 文字,但找不到好用的工具
- 有音频文件需要语音转录,但 transcription 工具太贵或太复杂
如果你正在寻找这样一个工具,那么今天给大家安利这款微软开源神器——MarkItDown。它是一款轻量级文件转 Markdown 工具,支持 PDF、Office、图片、音频等多种格式,专为 LLM 文本分析流水线设计。
📱 MarkItDown 是什么?
MarkItDown 是微软开源的 Python 工具,用于将各种文件转换为 Markdown 格式。
项目地址:https://github.com/microsoft/markitdown
PyPI 页面:https://pypi.org/project/markitdown/
GitHub 数据:
- ⭐ Stars: 微软官方开源项目
- 📜 许可证:MIT
- 🐍 Python 版本:3.10+
- 📅 持续维护:活跃开发中
核心特性:
- 多格式支持 - PDF/Word/Excel/PPT/图片/音频/HTML 等
- 结构保留 - 保留文档结构(标题/列表/表格/链接)
- OCR 识别 - 图片文字识别(OCR)
- 语音转录 - 音频文件语音转文字
- 轻量设计 - 专为 LLM 文本分析优化
- 插件系统 - 支持第三方插件扩展
一句话总结:如果你需要将各种文件转换为 Markdown 供 LLM 分析,MarkItDown 是目前最佳选择。
🔥 核心功能亮点
1️⃣ 多格式支持
支持转换的文件格式:
| 格式类型 | 具体格式 | 说明 |
|---|---|---|
| 文档 | 支持文本和布局提取 | |
| Office | Word (DOCX) | 保留样式和结构 |
| Office | Excel (XLSX/XLS) | 表格转换为 Markdown 表格 |
| Office | PowerPoint (PPTX) | 幻灯片内容提取 |
| 图片 | JPG/PNG/GIF 等 | EXIF 元数据 + OCR 识别 |
| 音频 | WAV/MP3 | EXIF 元数据 + 语音转录 |
| 网页 | HTML | 网页内容提取 |
| 数据 | CSV/JSON/XML | 结构化数据转换 |
| 压缩包 | ZIP | 迭代解压转换 |
| 视频 | YouTube URL | 视频转录提取 |
| 电子书 | EPUB | 电子书内容提取 |
对比 Textract:
- MarkItDown 更轻量
- 专注于 Markdown 输出
- 更适合 LLM 分析场景
2️⃣ 结构保留
转换时保留的文档结构:
- ✅ 标题层级(H1/H2/H3...)
- ✅ 列表(有序/无序)
- ✅ 表格(Markdown 表格格式)
- ✅ 链接(超链接保留)
- ✅ 代码块(语法高亮标记)
- ✅ 引用块(blockquote)
示例:
# 文档标题
## 章节标题
### 子章节
- 列表项 1
- 列表项 2
| 表格列 1 | 表格列 2 |
|---------|---------|
| 数据 1 | 数据 2 |
[链接文本](https://example.com)3️⃣ OCR 识别
图片文件转换功能:
| 功能 | 说明 |
|---|---|
| EXIF 元数据 | 提取拍摄时间、设备信息等 |
| OCR 文字识别 | 提取图片中的文字内容 |
| LLM 描述 | 可选:使用 GPT-4o 等生成图片描述 |
示例:
from markitdown import MarkItDown
from openai import OpenAI
# 使用 LLM 生成图片描述
client = OpenAI()
md = MarkItDown(llm_client=client, llm_model="gpt-4o")
result = md.convert("example.jpg")
print(result.text_content)4️⃣ 语音转录
音频文件转换功能:
| 功能 | 说明 |
|---|---|
| EXIF 元数据 | 提取录音时间、设备信息等 |
| 语音转录 | 语音转文字(支持 WAV/MP3) |
| YouTube 转录 | 提取 YouTube 视频字幕 |
示例:
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("recording.wav")
print(result.text_content) # 输出转录文字5️⃣ 插件系统
支持第三方插件扩展:
查看已安装插件:
markitdown --list-plugins启用插件:
markitdown --use-plugins path-to-file.pdf查找插件:
- GitHub 搜索
#markitdown-plugin - 参考官方示例:
packages/markitdown-sample-plugin
🛠️ 安装与使用指南
第一步:安装 MarkItDown
方式 1:pip 安装(推荐)
# 创建虚拟环境(推荐)
python -m venv .venv
source .venv/bin/activate # Linux/Mac
# 或 .venv\Scripts\activate # Windows
# 安装完整版(所有格式支持)
pip install 'markitdown[all]'方式 2:从源码安装
git clone [email protected]:microsoft/markitdown.git
cd markitdown
pip install -e 'packages/markitdown[all]'方式 3:Docker 安装
docker build -t markitdown:latest .
docker run --rm -i markitdown:latest < ~/your-file.pdf > output.md可选依赖:
# 按需安装特定格式支持
pip install 'markitdown[pdf,docx,pptx]' # 仅 PDF/Word/PPT
pip install 'markitdown[audio-transcription]' # 仅音频转录
pip install 'markitdown[youtube-transcription]' # 仅 YouTube 转录第二步:命令行使用
基本用法:
# 转换单个文件
markitdown path-to-file.pdf > document.md
# 指定输出文件
markitdown path-to-file.pdf -o document.md
# 从管道读取
cat path-to-file.pdf | markitdown高级用法:
# 使用 Azure Document Intelligence
markitdown path-to-file.pdf -o document.md -d -e "<endpoint>"
# 启用插件
markitdown --use-plugins path-to-file.pdf
# 列出插件
markitdown --list-plugins第三步:Python API 使用
基本用法:
from markitdown import MarkItDown
md = MarkItDown(enable_plugins=False) # 设置 True 启用插件
result = md.convert("test.xlsx")
print(result.text_content)使用 Azure Document Intelligence:
from markitdown import MarkItDown
md = MarkItDown(docintel_endpoint="<endpoint>")
result = md.convert("test.pdf")
print(result.text_content)使用 LLM 生成图片描述:
from markitdown import MarkItDown
from openai import OpenAI
client = OpenAI()
md = MarkItDown(
llm_client=client,
llm_model="gpt-4o",
llm_prompt="optional custom prompt"
)
result = md.convert("example.jpg")
print(result.text_content)💡 使用技巧与应用场景
场景 1:LLM 文本分析流水线
工作流:
PDF/Office 文档 → MarkItDown → Markdown → LLM 分析优势:
- Markdown 是 LLM 原生格式
- 保留文档结构
- Token 效率高
场景 2:批量文档转换
批量转换脚本:
from markitdown import MarkItDown
import os
md = MarkItDown()
for filename in os.listdir('documents'):
if filename.endswith('.pdf'):
result = md.convert(f'documents/{filename}')
with open(f'output/{filename}.md', 'w') as f:
f.write(result.text_content)场景 3:图片 OCR 提取
提取图片文字:
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("scan_document.jpg")
print(result.text_content) # OCR 识别结果场景 4:音频会议记录
转录会议录音:
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("meeting_recording.wav")
print(result.text_content) # 语音转录结果场景 5:YouTube 视频转录
提取视频字幕:
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("https://www.youtube.com/watch?v=VIDEO_ID")
print(result.text_content) # 视频转录📊 与同类产品对比
| 功能 | MarkItDown | Textract | Pandoc |
|---|---|---|---|
| 核心定位 | LLM 文本分析 | 通用文档提取 | 文档格式转换 |
| 输出格式 | Markdown | 纯文本/JSON | 多种格式 |
| 结构保留 | ✅ 优秀 | ⚠️ 一般 | ✅ 优秀 |
| OCR 支持 | ✅ 支持 | ✅ 支持 | ❌ 不支持 |
| 语音转录 | ✅ 支持 | ❌ 不支持 | ❌ 不支持 |
| 轻量级 | ✅ 是 | ❌ 较重 | ⚠️ 中等 |
| LLM 优化 | ✅ 专为 LLM 设计 | ❌ 通用 | ❌ 通用 |
| 许可证 | MIT | Apache 2.0 | GPL |
结论:
- 需要LLM 文本分析 → MarkItDown
- 需要通用文档提取 → Textract
- 需要多格式转换 → Pandoc
📥 下载渠道
官方渠道:
- PyPI:https://pypi.org/project/markitdown/
- GitHub:https://github.com/microsoft/markitdown
- 文档:https://github.com/microsoft/markitdown
安装命令汇总:
# 完整版(推荐)
pip install 'markitdown[all]'
# 按需安装
pip install 'markitdown[pdf,docx,pptx]'
# Docker
docker build -t markitdown:latest .
docker run --rm -i markitdown:latest < input.pdf > output.md相关资源:
- MCP 服务器:markitdown-mcp
- 示例插件:packages/markitdown-sample-plugin
- Azure Document Intelligence:文档
📝 总结
MarkItDown 是一款专为 LLM 文本分析设计的文件转换工具,在多格式支持、结构保留、轻量设计三个方面都做到了极致。
优点:
- ✅ 微软官方开源,质量有保障
- ✅ 支持格式丰富(PDF/Office/图片/音频等)
- ✅ 保留文档结构(标题/列表/表格/链接)
- ✅ OCR 识别和语音转录支持
- ✅ 轻量级设计,专为 LLM 优化
- ✅ 命令行和 Python API 双支持
- ✅ 插件系统可扩展
- ✅ MIT 许可证,商用友好
不足:
- ⚠️ 部分功能需要额外依赖(如 OCR/语音转录)
- ⚠️ Azure Document Intelligence 需要 Azure 账号
- ⚠️ 某些复杂格式转换可能不完美
推荐指数:⭐⭐⭐⭐⭐(5/5)
如果你需要将各种文件转换为 Markdown 供 LLM 分析,MarkItDown 绝对值得一试。它是目前最适合 LLM 文本分析流水线的转换工具。
下载链接:https://pypi.org/project/markitdown/
GitHub 项目:https://github.com/microsoft/markitdown
免责声明:本教程仅供教育和研究用途。使用软件时请遵守相关许可协议。