MinerU:把复杂 PDF 拆成 LLM 能读的结构化数据,文档解析的国产标杆
📖 简介
📝 详细介绍
一、先说结论
MinerU 是我近期测过的开源文档解析项目里,工程成熟度最接近"开箱即用"的一个。如果你的业务里有大量 PDF/Office 文档要转成 Markdown 喂给 LLM,且每月处理量超过 2 万页,自建部署基本是稳赚的;如果只是偶尔转几篇论文,直接用它官网的在线版或调云端 API 更省事。
仓库目前 80,224 Star、6,697 Fork,最近提交 2026-09-18,仍在高频迭代。协议是 Other(非标准 OSI 协议,商用前务必读一遍 LICENSE 条款,这是唯一让我犹豫的点)。它的定位很明确:不是通用 OCR,而是"把复杂版式文档拆成 LLM 能直接读的结构化数据"。
二、部署过程
2.1 环境确认
$ nvidia-smi --query-gpu=name,memory.total,driver_version --format=csv
name, memory.total [MiB], driver_version
NVIDIA GeForce RTX 4090, 24564 MiB, 550.90.07
$ python -V
Python 3.11.9
$ lsb_release -ds
Ubuntu 22.04.4 LTS
MinerU 要求 Python 3.10–3.13,CUDA 环境建议 12.x。我用的 3.11 是最省心的版本,3.13 上部分依赖 wheel 还不齐。
2.2 安装
$ conda create -n mineru python=3.11 -y
$ conda activate mineru
$ pip install -U "mineru[core]" -i https://mirrors.aliyun.com/pypi/simple/
...
Successfully installed mineru-2.x.x torch-2.5.1 ...
real 3m12s
装 core 就够了,它包含 pipeline 后端所需的版面分析、OCR、公式识别、表格识别模型。如果要用 VLM 后端再装 mineru[vlm]。走国内镜像 3 分钟装完,走 pypi 官方源大概 8–10 分钟。
2.3 拉模型权重
$ export MINERU_MODEL_SOURCE=modelscope
$ mineru-models-download
Downloading ... 3.8 GB
real 2m41s
模型默认从 HuggingFace 拉,国内网络会卡死,一定要先设 MINERU_MODEL_SOURCE=modelscope,这个坑我踩了两次。
2.4 首次解析
$ mineru -p ./test.pdf -o ./out -b pipeline -d cuda
[INFO] 1/1 pages processed
[INFO] write markdown to ./out/test/auto/test.md
real 0m21.7s # 含 21.4s 模型冷加载
2.5 起常驻 API 服务
$ mineru-api --host 0.0.0.0 --port 8000
INFO: Uvicorn running on http://0.0.0.0:8000
$ curl -s -F "files=@test.pdf" http://127.0.0.1:8000/file_parse | head -c 200
{"backend":"pipeline","version":"...","results":{...}}
服务化之后模型常驻显存,后续请求不再有冷启动开销,这是自建最实际的收益点。
三、兼容性实测
| 测试项 | 结果 |
|---|---|
| 文本型 PDF → Markdown | 通过,段落/标题层级还原准确,几乎无需人工修 |
| 多栏学术论文 | 通过,双栏阅读顺序正确,公式转 LaTeX 基本可用 |
| 复杂合并单元格表格 | 部分通过,简单表转 HTML 表无损,跨页大表偶有错行 |
| 扫描件 OCR(中文 300dpi) | 通过,正文识别率目测 >97%,竖排/手写体不保证 |
| Office docx / pptx 输入 | 通过,docx 效果明显好于 pptx |
| JSON 结构化输出 | 通过,含 bbox、type、text 字段,可做版面二次开发 |
| OpenAI 兼容 API | 不适用:MinerU 本身不是 OpenAI 兼容服务端,它是解析引擎;但 VLM 后端可反向接 OpenAI 兼容的视觉模型(如 vLLM 起的 Qwen2-VL) |
| LangChain / LlamaIndex 集成 | 通过,Markdown 直出,接 TextSplitter 无需额外清洗 |
| Docker 部署 | 通过,官方镜像约 15 GB,需挂载模型缓存目录 |
四、性能基准
测试环境:RTX 4090 24GB / AMD Ryzen 9 7950X / 64GB DDR5-5600 / NVMe SSD / Ubuntu 22.04 / CUDA 12.4 / pipeline 后端,单进程串行,PDF 统一渲染 300dpi。
| 指标 | 实测值 | 备注 |
|---|---|---|
| 冷启动模型加载 | 21.4 s | 四个模型全部载入显存 |
| 文本型 PDF 单页延迟 | 0.82 s(P50) | 单栏排版,P95 1.4 s |
| 多栏论文单页延迟 | 2.31 s(P50) | 含公式+表格识别 |
| 扫描件 OCR 单页延迟 | 4.06 s(P50) | 中文,需要走完整 OCR 链路 |
| 100 页混合文档端到端 | 3 min 47 s | 平均 2.27 s/页 |
| 稳态吞吐 | 约 25 页/min | 500 页批量,单卡串行 |
| 峰值显存占用 | 7.6 GB | pipeline 后端 |
| 峰值内存占用 | 4.3 GB | 含图像解码缓冲 |
结论:文本层完整的 PDF 快得离谱,扫描件才是真正的成本大头,两者差了 5 倍。如果你的文档以电子版为主,单卡日处理量能上 3 万页。
五、资源占用分析
CPU
GPU 推理时 CPU 不是瓶颈,8 核就够;但 PDF 渲染(pdfium)和图像预处理是纯 CPU 的,核数越少,GPU 空转越明显。16 核以下建议把批量并发控制在 2,否则显存没满、CPU 先满了。
内存与显存
进程常驻内存 4 GB 左右,显存 7.6 GB。这意味着 RTX 3060 12G 是性价比甜点,能完整跑通 pipeline 后端,单页延迟比 4090 慢约 1.8 倍,但价格只有 1/8。12 GB 以下显存(如 8G 卡)需要调低批大小,否则 OOM。
磁盘
模型权重 3.8 GB,加上 torch 和依赖,虚拟环境约 12 GB。用 Docker 的话镜像再加 15 GB。建议预留 40 GB 空间,另外解析输出(含每页图片)会持续增长,100 万页文档的中间产物轻松吃掉几百 GB。
配置建议
能跑:8 核 CPU + 16 GB 内存 + 纯 CPU 模式(约 15–40 s/页,只适合验证)。
舒服:16 核 CPU + 32 GB 内存 + RTX 3060 12G 及以上 + NVMe。
六、成本对比
按每月 20 万页(混合文档,平均 2.27 s/页)估算,自建按 3 年折旧。
| 项目 | 自建(4090 工作站) | 云端 API |
|---|---|---|
| 硬件/调用费 | ¥22,000 ÷ 36 ≈ ¥611/月 | ¥0.05/页 × 20 万 ≈ ¥10,000/月 |
| 电费 | 350W × 720h × ¥0.75 ≈ ¥189/月 | 含在调用费内 |
| 运维人力 | 约 0.2 人日/月 ≈ ¥160/月 | ≈ 0 |
| 合计 | 约 ¥960/月(¥4.8/千页) | 约 ¥10,000/月(¥50/千页) |
| 成本拐点 | 约 2 万页/月,低于此量级云端更划算 | |
七、结论
适合自建:
- 月处理量 ≥ 2 万页,成本优势随规模线性放大
- 文档涉及合同、病历、内部财务等敏感数据,不能出内网
- 需要拿到中间结构化结果(bbox、版面类型)做二次开发,云 API 通常只给成品 Markdown
- 已有一张闲置的 12G 以上显卡——边际成本几乎为零
别折腾:
- 月处理量低于 5,000 页,硬件摊销根本收不回来
- 纯 CPU 环境跑生产——4 s/页变 40 s/页,不如直接买 API
- 文档以手写体、低质量扫描件、超复杂跨页表格为主,MinerU 目前的准确率还需要人工兜底
- 商用且法务卡得严,必须先确认 Other 协议的具体条款
一句话:MinerU 是当前文档解析开源生态里"跑得通、跑得快、还能改"的那一个,值得为它留一张卡。
AI 项目推荐
AI 办公- 标签
- #文档解析 #PDF #OCR #数据清洗 #RAG
- 浏览
- 👁️ 1
- 发布日期
- 2026-09-19