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+
  • 📅 持续维护:活跃开发中

核心特性

  1. 多格式支持 - PDF/Word/Excel/PPT/图片/音频/HTML 等
  2. 结构保留 - 保留文档结构(标题/列表/表格/链接)
  3. OCR 识别 - 图片文字识别(OCR)
  4. 语音转录 - 音频文件语音转文字
  5. 轻量设计 - 专为 LLM 文本分析优化
  6. 插件系统 - 支持第三方插件扩展

一句话总结:如果你需要将各种文件转换为 Markdown 供 LLM 分析,MarkItDown 是目前最佳选择。


🔥 核心功能亮点

1️⃣ 多格式支持

支持转换的文件格式

格式类型具体格式说明
文档PDF支持文本和布局提取
OfficeWord (DOCX)保留样式和结构
OfficeExcel (XLSX/XLS)表格转换为 Markdown 表格
OfficePowerPoint (PPTX)幻灯片内容提取
图片JPG/PNG/GIF 等EXIF 元数据 + OCR 识别
音频WAV/MP3EXIF 元数据 + 语音转录
网页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)  # 视频转录

📊 与同类产品对比

功能MarkItDownTextractPandoc
核心定位LLM 文本分析通用文档提取文档格式转换
输出格式Markdown纯文本/JSON多种格式
结构保留✅ 优秀⚠️ 一般✅ 优秀
OCR 支持✅ 支持✅ 支持❌ 不支持
语音转录✅ 支持❌ 不支持❌ 不支持
轻量级✅ 是❌ 较重⚠️ 中等
LLM 优化✅ 专为 LLM 设计❌ 通用❌ 通用
许可证MITApache 2.0GPL

结论

  • 需要LLM 文本分析 → MarkItDown
  • 需要通用文档提取 → Textract
  • 需要多格式转换 → Pandoc

📥 下载渠道

官方渠道

安装命令汇总

# 完整版(推荐)
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

相关资源


📝 总结

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


免责声明:本教程仅供教育和研究用途。使用软件时请遵守相关许可协议。