1 项目简介
MarkItDown
by Microsoft
MarkItDown 是一个轻量级的 Python 工具,用于将各种文件格式转换为 Markdown,专为大语言模型(LLM)和文本分析管道设计。
为什么选择 Markdown?
Markdown 几乎是纯文本格式,标记极少,但仍能表示重要的文档结构(标题、列表、表格、链接等)。GPT-4o 等 LLM 原生理解 Markdown,使其成为 AI 工作流的高效格式,同时保持 Token 效率。
2 支持格式
文档格式
图像格式
支持 EXIF 元数据提取和 OCR 文字识别
音频格式
支持语音转录功能
Web 内容
结构化数据
其他格式
3 安装配置
环境要求
Python 3.10 或更高版本。推荐使用虚拟环境(venv、uv 或 Anaconda)
标准安装(全部功能)
pip install 'markitdown[all]'
从源码安装
git clone git@github.com:microsoft/markitdown.git
cd markitdown
pip install -e 'packages/markitdown[all]'
选择性安装
只安装需要的功能依赖:
# 只安装 PDF、Word、PowerPoint 支持
pip install 'markitdown[pdf, docx, pptx]'
可选依赖列表
| 选项 | 功能说明 |
|---|---|
all | 所有功能 |
pdf | PDF 文件支持 |
docx | Word 文档支持 |
pptx | PowerPoint 支持 |
xlsx | Excel (.xlsx) 支持 |
xls | Excel (.xls) 支持 |
outlook | Outlook 邮件支持 |
az-doc-intel | Azure 文档智能 |
audio-transcription | 音频转录 |
youtube-transcription | YouTube 字幕提取 |
4 命令行使用
基础用法
# 输出到标准输出
markitdown file.pdf
# 重定向到文件
markitdown file.pdf > document.md
# 使用 -o 参数指定输出文件
markitdown file.pdf -o document.md
# 通过管道输入
cat file.pdf | markitdown
使用 Azure 文档智能
markitdown file.pdf -o output.md -d -e "<endpoint>"
提示
使用 -d 参数启用 Azure 文档智能,-e 参数指定端点地址
5 Python API
基础用法
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("test.xlsx")
print(result.text_content)
转换多个文件
from markitdown import MarkItDown
from pathlib import Path
md = MarkItDown()
files = ["report.pdf", "presentation.pptx", "data.xlsx"]
for file in files:
result = md.convert(file)
output_path = Path(file).stem + ".md"
with open(output_path, "w") as f:
f.write(result.text_content)
6 LLM 集成
MarkItDown 支持使用 LLM 为图像生成描述:
from markitdown import MarkItDown
from openai import OpenAI
# 初始化 OpenAI 客户端
client = OpenAI()
# 创建带 LLM 支持的 MarkItDown 实例
md = MarkItDown(llm_client=client, llm_model="gpt-4o")
# 转换图像,会自动生成描述
result = md.convert("example.jpg")
print(result.text_content)
说明
此功能需要安装 OpenAI Python SDK 并配置 API Key。LLM 将为图像生成详细的文字描述。
7 Azure 文档智能
MarkItDown 支持集成 Azure Document Intelligence 进行增强的文档处理:
# 命令行使用
markitdown file.pdf -o output.md -d -e "https://your-endpoint.cognitiveservices.azure.com/"
主要优势
- 更精确的文档结构识别
- 更好的表格解析能力
- 支持复杂布局的 PDF 文档
- 手写文字识别
8 插件系统
MarkItDown 支持第三方插件架构,可以扩展其功能:
插件管理
# 列出已安装的插件
markitdown --list-plugins
# 启用插件进行转换
markitdown --use-plugins file.pdf
查找插件
在 GitHub 上搜索 #markitdown-plugin 标签可以找到社区开发的插件
开发插件
参考示例插件:packages/markitdown-sample-plugin
9 Docker 部署
MarkItDown 支持容器化部署:
构建镜像
docker build -t markitdown:latest .
运行容器
# 通过管道输入文件
docker run --rm -i markitdown:latest < file.pdf > output.md
10 MCP 服务器
MarkItDown 提供 Model Context Protocol (MCP) 服务器,可以与 Claude Desktop 等 LLM 应用集成:
功能特性
- 与 Claude Desktop 无缝集成
- 允许 LLM 直接读取各种文档格式
- 支持本地文件和 URL
了解更多
详情请参阅 markitdown-mcp 包文档
11 重大变更
v0.0.1 → v0.1.0 升级注意事项
从旧版本升级时请注意以下变更
| 变更项 | 说明 |
|---|---|
| 可选依赖分组 | 现在按功能分组,需要明确指定需要的功能 |
| convert_stream() | 只接受二进制文件对象 |
| DocumentConverter | 从流读取数据,不再直接读取文件路径;不再创建临时文件 |