MinerU:让 AI Agent 读懂 PDF 的文档提取利器

在 AI 时代,高质量的数据是模型训练的基石。而 PDF 文档由于其排版复杂(多栏、表格、公式、图片交叉),一直是数据清洗中的"硬骨头"。MinerU 是由上海人工智能实验室 OpenDataLab 团队推出的开源智能数据提取工具,专注于复杂 PDF 文档的高效解析与提取。

什么是 MinerU

MinerU 是一个完整的 document AI 引擎,能够将包含图片、公式、表格等元素的多模态 PDF 文档转化为易于分析的 Markdown 格式。它支持从网页和电子书中提取内容,提高 AI 语料准备效率。

核心特性

  1. 高精度解析:VLM+OCR 双引擎,支持复杂布局分析
  2. 多格式支持:PDF、Word、PPT、Excel、图片、HTML、网页
  3. 多语言支持:109 种语言,包括中日韩、阿拉伯语、泰语等
  4. 双模式提取
    • flash-extract:快速模式,无需 token,适合小文件
    • extract:高精度模式,需要 token,支持大文件和批量处理

技术架构

MinerU 的核心能力包括:

  • 布局分析:自动识别文档结构,包括标题、段落、表格、图片等
  • 公式识别:将数学公式转换为 LaTeX 格式
  • 表格提取:准确还原表格结构和内容
  • OCR 识别:支持扫描件和图片中的文字识别

安装与配置

1. 安装 CLI 工具

MinerU 提供了命令行工具mineru-open-api,可以通过 npm 或 Go 安装:

1
2
3
4
5
# 通过 npm 安装
npm install -g mineru-open-api

# 通过 Go 安装(macOS/Linux)
go install github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api@latest

验证安装:

1
mineru-open-api version

2. 获取 API Token

访问 MinerU 官网获取 API token:

  1. 打开 https://mineru.net/apiManage/docs
  2. 登录并创建 token
  3. 配置 token:
1
2
3
4
5
6
7
8
# 交互式配置
mineru-open-api auth

# 或直接设置环境变量
export MINERU_TOKEN="your-token"

# 或写入配置文件
echo "token: your-token" > ~/.mineru/config.yaml

3. 安装 Agent 技能

MinerU 提供了多种 Agent 技能,支持不同的开发环境:

OpenClaw 技能(推荐)

1
2
# 一行命令安装
npx skills add tanis90/pdf-converter-mineru

Hermes Agent 技能

将技能文件下载并解压到~/.hermes/skills/productivity/mineru-document-extractor/目录。

MCP Server 配置

1
2
3
4
5
6
7
8
9
10
11
{
"mcpServers": {
"MinerU": {
"command": "uvx",
"args": ["mineru-open-mcp"],
"env": {
"MINERU_API_TOKEN": "your-token"
}
}
}
}

使用指南

1. 快速提取(无需 token)

对于小文件(≤10 MB,≤20 页),可以使用快速提取模式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 提取 PDF 到 stdout
mineru-open-api flash-extract report.pdf

# 保存到文件
mineru-open-api flash-extract report.pdf -o ./output/

# 提取网页内容
mineru-open-api flash-extract https://example.com/doc.pdf

# 指定语言
mineru-open-api flash-extract report.pdf --language en

# 指定页面范围
mineru-open-api flash-extract report.pdf --pages 1-10

2. 高精度提取(需要 token)

对于大文件或需要更高精度的场景:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 基本提取
mineru-open-api extract report.pdf

# 指定输出格式
mineru-open-api extract report.pdf -f html

# 多格式输出
mineru-open-api extract report.pdf -o ./out/ -f md,docx

# 批量处理
mineru-open-api extract *.pdf -o ./results/

# 使用 VLM 模型(更高精度)
mineru-open-api extract report.pdf --model vlm

3. 网页提取

1
2
3
4
5
# 提取单个网页
mineru-open-api crawl https://example.com/article

# 批量提取
mineru-open-api crawl url1 url2 -o ./pages/

4. 在 Agent 中使用

安装技能后,可以直接用自然语言与 Agent 交互:

1
2
3
4
> 帮我读一下 ./papers/attention-is-all-you-need.PDF,总结核心贡献
> 把 quarterly-report.pdf 里的财务数据表格提取出来
> 这份扫描的合同 contract-scan.pdf,帮我找到付款条款
> 把 ./docs/ 下所有 PDF 转成 Markdown

实际应用场景

场景一:学术论文研读

1
2
3
4
5
# 提取论文内容
mineru-open-api extract paper.pdf -f md

# 批量处理多篇论文
mineru-open-api extract *.pdf -o ./papers_md/

场景二:技术文档处理

1
2
3
4
5
# 提取 API 文档
mineru-open-api extract API-reference.PDF

# 转换为 Word 格式
mineru-open-api extract report.pdf -f DOCX

场景三:扫描件 OCR

1
2
3
4
5
# 识别扫描件
mineru-open-api extract scan.pdf --OCR

# 指定语言
mineru-open-api extract chinese_scan.pdf --language ch

场景四:网页内容抓取

1
2
3
4
5
# 抓取网页内容
mineru-open-api crawl https://example.com/article

# 批量抓取
mineru-open-api crawl url1 url2 url3 -o ./web_content/

支持格式对比

格式 flash-extract extract
PDF (.PDF)
图片 (.png, .jpg, .jpeg, .webp, .gif, .bmp)
Word (.DOCX)
Word (.doc)
PowerPoint (.PPTX)
PowerPoint (.ppt)
Excel (.XLSX)
Excel (.xls)
HTML (.HTML)
URLs (远程文件)

模型选择建议

VLM 模型 vs Pipeline 模型

特性 VLM 模型 Pipeline 模型
解析精度 更高,复杂布局表现更好 标准
幻觉风险 可能产生幻觉文本 零幻觉
适用场景 复杂格式文档 需要可靠性的场景

建议

  • 复杂格式文档使用--model vlm
  • 需要零幻觉可靠性时使用--model pipeline

集成方案

MinerU 提供了多种集成方式:

1. LangChain 集成

1
2
3
4
5
6
7
8
9
10
11
12
13
from langchain_mineru import MineruLoader

# 快速模式
loader = MineruLoader("file.pdf")
docs = loader.load()

# 高精度模式
loader = MineruLoader(
"file.pdf",
mode="precision",
token="your_token",
split_pages=True
)

2. LlamaIndex 集成

1
2
3
4
from llama_index.readers.mineru import MineruReader

reader = MineruReader()
documents = reader.load_data("file.pdf")

3. Python SDK

1
2
3
4
5
6
7
8
9
from mineru_sdk import Client

# 快速模式
client = Client(flash=True)
result = client.parse("file.pdf")

# 高精度模式
client = Client(token="your_token")
result = client.parse("file.pdf")

常见问题

Q1: 文件大小有限制吗?

  • flash-extract模式:10 MB / 20 页
  • extract模式:200 MB / 200 页

Q2: 支持中文文档吗?

默认支持中英混排,OCR 覆盖 109 种语言。

Q3: 和直接用 CLI 有什么区别?

安装技能后,Agent 可以自动完成整个流程,你只需要用自然语言描述需求。

Q4: 和 MCP server 方案怎么选?

  • 技能方案:轻量,一行命令搞定,适合简单场景
  • MCP 方案:适合需要长期运行、复杂状态管理的场景

总结

MinerU 是一个功能强大的文档提取工具,特别适合需要处理复杂 PDF 文档的场景。通过 CLI 工具、Agent 技能、MCP Server 等多种集成方式,可以轻松融入现有的开发工作流。

对于 AI Agent 来说,MinerU 提供了"读懂 PDF"的能力,让 Agent 能够直接处理 PDF、扫描件、Word、PPT 等多种格式的文档,大大扩展了 Agent 的应用范围。

参考资料

  1. MinerU 官方文档
  2. MinerU GitHub 仓库
  3. MinerU API 文档
  4. OpenClaw 技能市场