MinerU 部署调研报告:NVIDIA 与海光 DCU 双路径
风险声明
⚠️ 本文为调研报告,未经实测验证。所有命令均来自 MinerU 官方文档(opendatalab/MinerU)、海光开发者社区文档、FlyAIBox/dcu-in-action 实战仓库及对应 GitHub Issues。实际落地前请在目标环境复现,并核对当前最新版本号。
一、MinerU 项目现状
支持的输入格式(3.1 起全格式原生)
- PDF(含扫描件自动 OCR)
- DOCX(3.0 起原生,无需先转 PDF)
- PPTX(3.1 起原生)
- XLSX(3.1 起原生)
- 图片(PNG / JPG / TIFF 等)
解析能力
- OCR:内置 PP-OCRv6(3.4 升级),支持 109 种语言
- 公式 → LaTeX
- 表格 → HTML(含跨页表格合并)
- 阅读顺序自动还原(去除页眉页脚脚注)
- 扫描件检测:自动识别图像型 PDF 并启用 OCR
- 印章识别、竖排文本、行内公式编号(3.0 pipeline 后端新增)
解析后端(5 种)
推荐选型:
- 扫描件多、要稳 → pipeline
- 综合体验最好 → hybrid-engine medium(默认)
- 极致精度 → hybrid-engine high 或 vlm-engine
二、NVIDIA GPU 部署路径(标准路径)
2.1 系统要求
- GPU:Volta 架构及以后(V100 / T4 / A10 / A100 / RTX 20/30/40/50 系列)
- 显存:pipeline 4GB / VLM 后端 8GB
- 内存:≥ 16GB,推荐 32GB+
- 磁盘:≥ 20GB SSD
- CUDA:由 PyTorch wheel 自带(无需单独装 CUDA Toolkit,但需 NVIDIA 驱动 ≥ 525)
2.2 安装方式
方式一:pip/uv 安装(推荐简单场景)
1 2 3
| pip install --upgrade pip pip install uv uv pip install -U "mineru[all]"
|
mineru[all] 包含所有核心依赖,已自动选择匹配 CUDA 的 PyTorch wheel。
方式二:源码安装
1 2 3
| git clone https://github.com/opendatalab/MinerU.git cd MinerU uv pip install -e .[all]
|
方式三:Docker 部署(推荐生产)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/docker/compose.yaml
docker compose -f compose.yaml --profile api up -d
docker compose -f compose.yaml --profile openai-server up -d
docker compose -f compose.yaml --profile router up -d
docker compose -f compose.yaml --profile gradio up -d
|
镜像需要本地构建(docker build -t mineru:latest),依赖 NVIDIA Container Toolkit。
2.3 模型下载
首次运行会自动从 ModelScope / HuggingFace 下载模型(约几 GB)。可设置 MINERU_MODEL_SOURCE=local 走本地缓存,3.4 起支持自动选择更优源。
2.4 验证
1
| mineru -p demo.pdf -o ./output -b pipeline
|
三、海光 DCU K100 部署路径
3.1 现状
- README 顶部将 Hygon 列为受支持的国产 AI 芯片之一
- 官方文档没有单独章节讲 DCU 部署路径
- 实际机制:DTK(Deep Computing Toolkit)提供 ROCm/HIP 兼容层,PyTorch 在 DCU 上伪装为 CUDA 设备(
torch.cuda.is_available() 返回 True、torch.cuda.0 指 DCU 0)
- 也就是说:MinerU 代码本身不需要改,只要把 PyTorch 换成海光自家编译的 wheel + 装好 DTK 即可
3.2 系统与硬件要求
3.3 部署步骤(物理机 + Docker 两种)
方式 A:Docker 容器化部署(推荐)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.10.0-centos7.6-dtk-22.10-py38-latest
docker run -it \ --name=mineru-dcu \ --device=/dev/kfd \ --device=/dev/dri \ --security-opt seccomp=unconfined \ --cap-add=SYS_PTRACE \ --ipc=host \ --network host \ --shm-size=16G \ --group-add 39 \ -v /opt/hyhal:/opt/hyhal \ image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.10.0-centos7.6-dtk-22.10-py38-latest
pip install uv uv pip install -U "mineru[all]"
mineru-api --host 0.0.0.0 --port 8000
|
注意:源码仓库 FlyAIBox/dcu-in-action 给出的示例镜像是 dtk-22.10,实际部署时建议向光源平台申请 dtk-25.04 镜像,与当前 MinerU 3.4 的 PyTorch 2.4+/torch2.9.0 兼容。
方式 B:物理机部署
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| chmod 755 rock*.run && ./rock*.run && reboot
usermod -a -G 39 $USER
yum install -y epel-release centos-release-scl yum groupinstall -y "Development tools" yum install -y cmake hwloc openmpi glog-devel lmdb-devel opencv-devel openblas-devel \ libibverbs-devel gflags-devel gstreamer1* ...
tar -xvf DTK-*.tar.gz -C /opt/ ln -s /opt/dtk-* /opt/dtk
cat > /etc/profile.d/dtk.sh <<'EOF' export LD_LIBRARY_PATH=/usr/local/lib/:/usr/local/lib64/:$LD_LIBRARY_PATH export PATH=/usr/local/bin:$PATH source /opt/dtk/env.sh EOF source /etc/profile.d/dtk.sh
rocm-smi rocminfo | grep gfx
wget https://download.sourcefind.cn:65024/file/4/torch/DAS1.5/torch-2.4.1+das.opt2.dtk2504-cp310-cp310-manylinux_2_28_x86_64.whl pip install torch-2.4.1+das.opt2.dtk2504-cp310-cp310-manylinux_2_28_x86_64.whl
python -c "import torch; print(torch.__version__, torch.cuda.is_available())"
pip install uv uv pip install -U "mineru[all]"
mineru-api --host 0.0.0.0 --port 8000
|
3.4 DCU 上 MinerU 的已知坑(来自 issue)
四、API 服务化(满足”提供 HTTP API”要求)
结论:MinerU 自带的 mineru-api(FastAPI)完全够用,无需自写包装。
4.1 启动方式
1 2 3 4 5 6 7 8
| mineru-api --host 0.0.0.0 --port 8000
mineru-router --host 0.0.0.0 --port 8002 --local-gpus auto
mineru-openai-server --host 0.0.0.0 --port 30000
|
4.2 API 端点(来自源码 mineru/cli/fast_api.py)
请求参数(典型):
1 2 3
| curl -X POST http://localhost:8000/file_parse \ -F "file=@report.pdf" \ -F 'options={"backend":"pipeline","lang":"ch"}'
|
4.3 三种服务选型
4.4 多卡并行 / 路由
mineru-router 是 3.0 引入的多机多卡统一入口:
1 2 3 4 5 6 7 8
| mineru-router --host 0.0.0.0 --port 8002 --local-gpus auto
mineru-router --host 0.0.0.0 --port 8002 \ --local-gpus none \ --upstream-url http://api-node-1:8000 \ --upstream-url http://api-node-2:8000
|
五、格式与扫描件覆盖核对
六、推荐部署方案
方案 A:NVIDIA 单卡/多卡(最稳)
1 2 3 4 5 6
| pip install uv uv pip install -U "mineru[all]"
mineru-api --host 0.0.0.0 --port 8000 --backend pipeline
|
方案 B:海光 DCU K100 单卡(pipeline 后端)
1 2 3 4 5 6 7
|
pip install torch-2.4.1+das.opt2.dtk2504-cp310-cp310-manylinux_2_28_x86_64.whl
uv pip install -U "mineru[all]"
mineru-api --host 0.0.0.0 --port 8000 --backend pipeline
|
方案 C:混合(NVIDIA + 海光 共存)
- 用
mineru-router 聚合两边:1 2 3
| mineru-router --host 0.0.0.0 --port 8002 \ --upstream-url http://nvidia-node:8000 \ --upstream-url http://hygon-node:8000
|
- 客户端只对 router 8002,开发不用关心后端跑哪张卡
七、执行清单
立刻可做
- ✅ API 选
mineru-api(8000 端口)—— 不需要自己写 FastAPI
- ✅ 后端先用
pipeline —— 4GB 显存即可、支持扫描件 OCR、国产卡上最稳
- ✅ PDF/Word/Excel/PPT/图片全格式都直接传 —— 3.1 起原生,无需先转 PDF
DCU K100 上线注意
- DTK 版本与 PyTorch wheel 必须严格匹配(DTK 25.04 ↔
torch-2.4.1+das.opt2.dtk2504-...)
- 容器跑要给
--device=/dev/kfd --device=/dev/dri --group-add 39
- 第一批先跑 pipeline 验证——不要一上来就上 vlm/hybrid
- 驱动/DTK/wheel 三个东西都从海光官方源拿,不要混用第三方编译版本
长期规划
- 等 MinerU 官方对国产芯片的 VLM 后端适配完成(issue #4583 已暴露问题)
- 多卡场景直接上
mineru-router 聚合,不用自己写调度
- 接 RAG 工具链时用
mineru-openai-server(30000 端口),对接 LangChain / Dify / RAGFlow 都是 OpenAI 兼容协议
八、信息源
附录:调研元信息
- 调研时间:2026-06-29
- 信息源:GitHub
opendatalab/MinerU README / 源码、官方文档、Pypi、国内 DCU 实战仓库、Issues
- 后续行动:建议在拿到 DCU K100 物理机或 NVIDIA 测试卡后,按”方案 A/B”实测一遍,将实测结果回填到本文「执行清单」与「风险声明」两节。