1 项目简介

M

MarkItDown

by Microsoft

MarkItDown 是一个轻量级的 Python 工具,用于将各种文件格式转换为 Markdown,专为大语言模型(LLM)和文本分析管道设计。

为什么选择 Markdown?

Markdown 几乎是纯文本格式,标记极少,但仍能表示重要的文档结构(标题、列表、表格、链接等)。GPT-4o 等 LLM 原生理解 Markdown,使其成为 AI 工作流的高效格式,同时保持 Token 效率。

86k+
GitHub Stars
MIT
开源协议
3.10+
Python 版本
AutoGen
团队维护

2 支持格式

文档格式

PDF Word (.docx) PowerPoint (.pptx) Excel (.xlsx/.xls)

图像格式

支持 EXIF 元数据提取和 OCR 文字识别

音频格式

支持语音转录功能

Web 内容

HTML YouTube URL(字幕提取)

结构化数据

CSV JSON XML

其他格式

ZIP 压缩包 EPUB 电子书 Outlook 邮件

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所有功能
pdfPDF 文件支持
docxWord 文档支持
pptxPowerPoint 支持
xlsxExcel (.xlsx) 支持
xlsExcel (.xls) 支持
outlookOutlook 邮件支持
az-doc-intelAzure 文档智能
audio-transcription音频转录
youtube-transcriptionYouTube 字幕提取

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 从流读取数据,不再直接读取文件路径;不再创建临时文件