MinerU 能够准确识别并提取 PDF 中的图文、表格、公式等复杂元素

1、github路径

https://github.com/opendatalab/MinerU

2、docker 部署

https://opendatalab.github.io/MinerU/zh/quick_start/docker_deployment/

通过 Docker Compose 直接启动服务

提供了compose.yml文件,可以通过它来快速启动MinerU服务。

复制代码
# 下载 compose.yaml 文件
wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/docker/compose.yaml
  • compose.yaml文件中包含了MinerU的多个服务配置,可以根据需要选择启动特定的服务。
  • 不同的服务可能会有额外的参数配置,可以在compose.yaml文件中查看并编辑。
  • 由于vllm推理加速框架预分配显存的特性,可能无法在同一台机器上同时运行多个vllm服务,因此请确保在启动vlm-openai-server服务或使用vlm-vllm-engine后端时,其他可能使用显存的服务已停止。

启动 openai兼容接口 服务

并通过vlm-http-client后端连接openai-server

复制代码
docker compose -f compose.yaml --profile openai-server up -d

在另一个终端中通过http client连接openai server(只需cpu与网络,不需要vllm环境)

复制代码
mineru -p <input_path> -o <output_path> -b vlm-http-client -u http://<server_ip>:30000

启动 Web API 服务

复制代码
docker compose -f compose.yaml --profile api up -d

在浏览器中访问 http://<server_ip>:8000/docs 查看API文档。


启动 MinerU Router 服务

复制代码
docker compose -f compose.yaml --profile router up -d
  • 默认配置会以 --local-gpus auto 模式在容器内自动拉起本地 worker,并通过 http://<server_ip>:8002/docs 暴露统一入口。
  • 如果您希望聚合已有的 mineru-api 服务而不是启动本地 worker,可直接参考 compose.yamlmineru-router 服务下的注释示例,改为使用 --upstream-url

启动 Gradio WebUI 服务

复制代码
docker compose -f compose.yaml --profile gradio up -d
  • 在浏览器中访问 http://<server_ip>:7860 使用 Gradio WebUI。

3、参数解释

在浏览器中访问 http://<server_ip>:8000/docs 查看API文档

接口功能说明

接口 方法 功能 使用场景
/file_parse POST 同步解析 小文件、实时返回结果
/tasks POST 提交异步任务 大文件、批量处理
/tasks/{task_id} GET 查询任务状态 轮询异步任务进度
/tasks/{task_id}/result GET 获取任务结果 获取异步任务解析结果
/health GET 健康检查 监控服务状态

什么时候用异步任务?

场景 推荐方式 原因
文件 < 10MB 同步 /file_parse 快速返回,简单直接
文件 > 10MB 异步 /tasks 避免超时,可轮询
批量处理多个文件 异步 /tasks 后台处理,不阻塞
网页集成 异步 /tasks 更好的用户体验
脚本/自动化 同步或异步均可 根据文件大小选择

核心参数详解

必填参数

参数 说明 示例
files 要解析的文件(PDF/图片/DOCX) 支持多文件上传

语言设置 (lang_list)

根据文档类型选择:

复制代码
# 中文文档(推荐)
lang_list: ["ch"]           # 中英繁混合

# 纯英文文档
lang_list: ["en"]           # 英文

# 日文文档
lang_list: ["japan"]        # 中日英繁

# 多语言混合(欧洲语言)
lang_list: ["latin"]        # 支持法语、德语、西班牙语等37种语言

# 俄语/乌克兰语
lang_list: ["east_slavic"]  # 俄语、白俄语、乌克兰语

# 阿拉伯语
lang_list: ["arabic"]       # 阿拉伯语、波斯语、乌尔都语等

后端选择 (backend)

后端 适用场景 硬件要求 特点
pipeline 通用场景 CPU/GPU 均可 无幻觉、多语言、资源占用低
hybrid-auto-engine 高精度需求 GPU 8GB+ 下一代方案,精度最高
vlm-auto-engine 中英文高精度 GPU 8GB+ 基于VLM,精度高
vlm-http-client 远程调用 仅需网络 连接 OpenAI 兼容服务器

解析方法 (parse_method)

仅对 pipeline/hybrid 后端有效:

复制代码
parse_method: "auto"    # 自动选择(推荐)
parse_method: "txt"     # 强制文本提取(适合文本型PDF)
parse_method: "ocr"     # 强制OCR(适合扫描件)

功能开关

复制代码
formula_enable: true     # 启用公式解析(转为LaTeX)
table_enable: true       # 启用表格解析(转为HTML)

返回内容控制

复制代码
return_md: true              # Markdown格式(最常用)
return_content_list: true    # 结构化内容列表
return_middle_json: false    # 中间结果(调试用)
return_model_output: false   # 模型输出(调试用)
return_images: true          # 提取的图片

高级选项

复制代码
start_page_id: 0        # 起始页(从0开始)
end_page_id: 10         # 结束页(不包含10)
response_format_zip: true   # 返回ZIP包
return_original_file: true  # 包含原文件(ZIP模式)

4、示例1

针对不确定是文字版还是扫描版含有表格 的PDF,auto + table_enable=true 是最佳组合。

复制代码
parse_method: "auto"     # 自动识别文档类型,智能选择txt/ocr
table_enable: true       # 启用表格解析,转为HTML格式
formula_enable: true     # 启用公式解析(如果文档有公式)

auto 模式的工作原理

auto 模式会智能判断:

文档类型 自动选择方法 说明
文字版PDF(可选中的文本) txt 模式 直接提取文本,速度快,无OCR误差
扫描版PDF(图片形式) ocr 模式 自动调用OCR识别文字
混合型PDF(部分页面扫描) 逐页判断 每页独立选择最优方法

推荐的完整配置

针对此场景,建议这样设置:

复制代码
# 基础配置
files: 你的文档.pdf
parse_method: auto           # 自动识别文字版/扫描版
backend: pipeline            # 通用后端,兼容性好
lang_list: ["ch"]            # 中文文档(根据实际调整)

# 功能开关
table_enable: true           # 表格解析(推荐)
formula_enable: true         # 公式解析(如果有公式)
return_md: true              # 返回Markdown

# 输出控制
return_content_list: true    # 返回结构化内容(方便程序处理)
response_format_zip: false   # 先用JSON测试,需要图片再改ZIP

5、使用如下

方式1:cURL 命令

复制代码
curl -X POST "http://服务器ip:port/file_parse" \
  -F "files=@document.pdf" \
  -F "parse_method=auto" \
  -F "table_enable=true" \
  -F "formula_enable=true" \
  -F "lang_list=ch" \
  -F "backend=pipeline" \
  -F "return_md=true" \
  -F "return_content_list=true"

方式2:Python 调用

复制代码
import requests

url = "http://服务器ip:port/file_parse"

files = {
    'files': ('document.pdf', open('document.pdf', 'rb'))
}

data = {
    'parse_method': 'auto',      # 自动识别
    'table_enable': True,        # 解析表格
    'formula_enable': True,      # 解析公式
    'lang_list': ['ch'],         # 中文
    'backend': 'pipeline',       # 通用后端
    'return_md': True,
    'return_content_list': True
}

response = requests.post(url, files=files, data=data)
result = response.json()

# 保存 Markdown
with open('output.md', 'w', encoding='utf-8') as f:
    f.write(result['md_content'])

# 如果包含表格,在Markdown中会呈现为HTML格式
print(result['md_content'])

表格解析效果

启用 table_enable=true 后,表格会被解析为 HTML 格式嵌入在 Markdown 中:

复制代码
# 解析结果示例

这是文档中的一段文字。

<table>
  <tr>
    <th>姓名</th>
    <th>年龄</th>
    <th>职位</th>
  </tr>
  <tr>
    <td>张三</td>
    <td>28</td>
    <td>工程师</td>
  </tr>
  <tr>
    <td>李四</td>
    <td>32</td>
    <td>经理</td>
  </tr>
</table>

后续文字...

如何确认解析效果

方法1:查看返回的 content_list

复制代码
{
  "content_list": [
    {"type": "text", "content": "段落文字..."},
    {"type": "table", "content": "<table>...</table>", "html": "..."},
    {"type": "formula", "content": "$$E=mc^2$$", "latex": "..."}
  ]
}

方法2:检查 parse_method 实际使用的方法

从日志或响应中可以看到系统选择了哪种方法:

  • 如果是文字版:自动用 txt

  • 如果是扫描版:自动用 ocr

高级建议

如果表格解析不理想

复制代码
# 可以尝试 hybrid 后端(如果GPU显存≥8GB)
backend: hybrid-auto-engine
table_enable: true

如果文档包含多种语言

复制代码
lang_list: ["ch", "en"]  # 同时支持中文和英文

如果需要提取表格中的公式

复制代码
table_enable: true
formula_enable: true    # 表格内的公式也会被解析

注意事项

  1. 表格复杂度:简单表格(3-5列)解析效果好,复杂嵌套表格可能有偏差

  2. OCR准确性:扫描版表格的识别精度取决于扫描质量

  3. 性能auto 模式会逐页判断,大文件处理时间稍长

相关推荐
ZOOOOOOU2 小时前
智慧社区云对讲门禁系统架构设计:中优云联免布线、全免费核心功能技术解析
数据库·人工智能·架构·边缘计算
@不误正业2 小时前
AI-Agent记忆系统深度实战-3大范式源码对比与鸿蒙端实现
人工智能·agent·鸿蒙
汤姆yu2 小时前
Hermes Agent全面介绍
人工智能·hermes
测绘第一深情2 小时前
自动驾驶核心技术:BEV 特征 + Transformer 解码器
人工智能·自动驾驶·transformer
RxGc2 小时前
2026年AI Agent开发实战:MCP协议深度解析与多智能体协作架构完全指南
人工智能·agent·mcp
Kel2 小时前
CrewAI v1.14.2 双模式架构深度剖析:当角色协作遇上事件驱动
人工智能·设计模式·架构
Narrastory2 小时前
Note:强化学习(一)
人工智能·算法·强化学习
做萤石二次开发的哈哈2 小时前
智能AI云存储|萤石蓝海大模型加持,解锁视频数据新价值
大数据·人工智能
AgiWorldxy2 小时前
CozeFlow Autopilot Pro – CLI 自动化之王
人工智能