惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Full Disclosure
博客园 - 三生石上(FineUI控件)
MyScale Blog
MyScale Blog
Apple Machine Learning Research
Apple Machine Learning Research
L
LINUX DO - 最新话题
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
宝玉的分享
宝玉的分享
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
GbyAI
GbyAI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
Visual Studio Blog
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
月光博客
月光博客
博客园 - 叶小钗
D
Docker
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
Tailwind CSS Blog
D
DataBreaches.Net
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog RSS Feed
量子位
美团技术团队
Vercel News
Vercel News
Y
Y Combinator Blog
IT之家
IT之家
Martin Fowler
Martin Fowler
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
SegmentFault 最新的问题
腾讯CDC
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
罗磊的独立博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
The Register - Security
The Register - Security
博客园 - 司徒正美
N
Netflix TechBlog - Medium
S
Schneier on Security
博客园 - 聂微东
U
Unit 42
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
雷峰网
雷峰网
Latest news
Latest news

博客园 - work hard work smart

使用 LangChain + Hugging Face 构建文本向量化服务 SQLAlchemy 使用详解 Python 中使用 Elasticsearch 的完整指南 Qdrant 向量数据库使用指南 OpenEvals 快速入门:LLM 评估指南 DeepEval 快速入门:LLM 应用评估指南 LangSmith 批量评估完全指南 Qwen-Agent 入门指南:快速构建智能体应用 LangSmith 集成实战:从追踪到评估的完整指南 初识 go-zero:一款让你写后端更规范、更高效的 Go 微服务框架 RAG 中为什么需要 Rerank,以及如何使用 Rerank LangChain4j RAG 核心组件与组合方式 如何使用 Elasticsearch 进行全文检索和向量检索 5 分钟上手:为 Cline 配置一个免费的 MCP 天气服务 Neo4j 图数据库安装与 Spring Boot 集成实战指南 LangFuse 实战指南:用 @observe 三行代码给 LLM 应用加上全链路追踪 Function Call 深度解析:让大模型从"嘴炮"到"实干"的技术革命 Spring AI 提示词模板实战:告别硬编码,实现提示词工程化管理 LangChain4j 实战指南:用 Java 轻松构建 AI 应用 Spring AI 对话短期记忆实战:让大模型拥有"记忆力" Spring AI 提示词工程实战:让大模型更懂你的意图 Spring AI ChatClient 深度解析:优雅构建大模型应用的利器 Spring AI Alibaba DashScopeChatModel 实战 Spring 中 SSE 流式输出的多种实现方式详解 OpenSandbox 实战指南:为 AI Agent 构建安全的代码执行沙箱 在本机启动 LangGraph 开发服务器:完整指南 DeepAgents中Backend的奥秘:让AI Agent拥有文件操作能力 为什么选择 Go 开发 Web 接口?从入门到实践 智能搜索DeepAgent笔记 RAG学习笔记2--系统查询流程 RAG学习笔记1--系统文件导入流程 百炼 WebSearch 快速入门指南 Python 连接 MongoDB 完整指南:从连接配置到增删改查实战 一行命令搞定 MongoDB 开发环境:Docker Compose 部署 + 可视化管理 使用 Attu 可视化管理 Milvus 向量数据库 在 Windows Docker 中快速安装 Milvus 2.5.6 minio使用 Spark 集群搭建 hadoop集群安装 Spring AI Alibaba 入门实战 Windows 安装 OpenClaw 实战指南 MyBatis 核心流程和原理 Idea中安装Claude code插件 Spark 编程 使用Matplotlib 绘制直方图 Flink安装部署 Flume安装 查找导致cpu过高的代码方法 JVisualVM监控远程Java进程 jmap jacoco多模块生成java单元测试报告实践 arthas 使用demo LockSupport Exchanger CyclicBarrier CountDownLatch 手把手教你用python开始第一个机器学习项目
MinerU Docker 部署指南
work hard work smart · 2026-06-19 · via 博客园 - work hard work smart

MinerU Docker 部署指南(RAG 场景)

本文面向 RAG 系统开发者,介绍为何 MinerU 是理想的文档解析引擎,并重点讲解 Docker 部署中的关键配置改动(特别是 CUDA 版本适配问题)。本文仅涵盖安装部署,不涉及 RAG 使用细节。

一、为什么 RAG 需要 MinerU?

在 RAG(检索增强生成)系统中,文档解析的质量直接决定了整个系统的性能天花板。如果解析环节出错,后续的文本分块、向量检索和模型生成都难以补救。

RAG 文档解析的三大痛点

痛点 说明
版面结构丢失 传统工具按物理顺序提取文本,双栏、表格等复杂版面会被打乱,导致分块后语义断裂
复杂元素乱码 扫描件、复杂表格、数学公式无法被正确识别,表格变成无结构数字流,公式变成乱码
处理效率低下 面对海量企业文档,传统解析方式周期漫长,拖慢系统上线进度

MinerU 的核心优势

MinerU 专为 RAG 场景设计,扮演 "结构化抽取层" 的角色:

  • 高精度:MinerU 2.5 仅以 12 亿参数,在权威测试中超越 GPT-4o、Qwen2.5-VL-72B,PDF 转 Markdown 准确率提升至 92%,RAG Top-1 召回率提升 25%。

  • 深度结构化:精准识别并还原文档的层级结构、表格、公式、列表,输出 Markdown 或元素级 JSON,为分块提供天然语义边界。

  • 高效率:解析速度可达 200 页/分钟,在消费级显卡(RTX 4090)上达 1.7 页/秒。

  • 多格式支持:支持 PDF、DOCX、PPTX、XLSX、图片等,可无缝集成 LangChain、LlamaIndex、Dify、RAGFlow 等框架。

二、环境准备

硬件要求

项目 要求
GPU NVIDIA Volta 架构及以上(RTX 20xx/30xx/40xx 等)
显存 8GB+(hybrid/vlm 模式),4GB+(pipeline 模式)
内存 16GB 最低,32GB 推荐
磁盘 20GB 最低

软件要求

  • Docker Desktop 20.10+(Windows 需启用 WSL2)
  • NVIDIA 驱动:支持 CUDA 12.9+(推荐 560.x 或更高版本)
  • NVIDIA Container Toolkit:让容器能访问 GPU

三、获取源码与构建镜像(含关键改动)

3.1 克隆项目

git clone https://github.com/opendatalab/MinerU.git
cd MinerU/docker

3.2 选择 Dockerfile(国内环境推荐)

进入国内优化目录:

cd china

🔥 关键改动 1:修改基础镜像的 CUDA 版本

docker/china/Dockerfile 默认使用 vllm/vllm-openai:v0.21.0(基于 CUDA 13.0)。如果你的驱动不支持 CUDA 13.0(或遇到 cuda>=13.0 报错),必须切换到 v0.21.0-cu129 版本(CUDA 12.9):

# 注释掉默认的 CUDA 13.0 版本
# FROM docker.m.daocloud.io/vllm/vllm-openai:v0.21.0

# 启用 CUDA 12.9 兼容版本
FROM docker.m.daocloud.io/vllm/vllm-openai:v0.21.0-cu129

如何确认需要哪个版本:运行 nvidia-smi,查看右上角的 CUDA Version。如果显示为 12.x,建议使用 cu129;如果显示为 13.0,可使用默认版本。

🔥 关键改动 2:优化 APT 源(加速构建)

在 Dockerfile 的 apt-get update 前插入换源命令,避免因海外源缓慢导致构建卡顿:

RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list && \
    sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list && \
    apt-get update && \
    apt-get install -y \
        fonts-noto-core \
        fontconfig \
        libgl1 && \
    fc-cache -fv && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

3.3 构建镜像

docker build --network=host -t mineru:cu129 -f Dockerfile .

注意:建议使用自定义标签(如 mineru:cu129)而非 latest,便于区分不同 CUDA 版本。

构建过程约需 20-40 分钟,主要耗时在下载基础镜像和 AI 模型。

四、启动服务(含 GPU 配置改动)

MinerU 的 compose.yaml 定义了 4 种服务模式,通过 --profile 参数按需启动:

服务 端口 用途 适用场景
gradio 7860 Web 图形界面 可视化操作、演示
api 8000 FastAPI 解析服务 程序调用、批量处理
openai-server 30000 OpenAI 兼容 API 与 OpenAI SDK 集成
router 8002 负载均衡路由 多 GPU 集群部署

4.1 启动 Gradio WebUI(推荐新手)

docker compose -f compose.yaml --profile gradio up -d

访问 http://localhost:7860

4.2 启动 API 服务(推荐开发者)

docker compose -f compose.yaml --profile api up -d

API 文档:http://localhost:8000/docs

4.3 启动 OpenAI 兼容服务

docker compose -f compose.yaml --profile openai-server up -d

🔥 关键改动 3:为服务添加 GPU 运行时和跳过版本检查

此步至关重要,否则会遇到 cuda>=12.9No CUDA GPUs 等报错。

compose.yaml 中,为需要 GPU 的服务(如 mineru-gradiomineru-api)添加以下配置:

mineru-gradio:
    image: mineru:cu129                     # 使用你构建的镜像标签
    container_name: mineru-gradio
    restart: always
    profiles: ["gradio"]
    ports:
      - 7860:7860
    runtime: nvidia                         # 【必须】启用 NVIDIA 运行时
    environment:
      MINERU_MODEL_SOURCE: local
      NVIDIA_DISABLE_REQUIRE: "true"        # 【必须】跳过 CUDA 版本硬性检查
    entrypoint: mineru-gradio

同理,mineru-api 也需做相同改动:

mineru-api:
    image: mineru:cu129
    container_name: mineru-api
    runtime: nvidia
    environment:
      MINERU_MODEL_SOURCE: local
      NVIDIA_DISABLE_REQUIRE: "true"
    # ... 其他配置

为什么需要 NVIDIA_DISABLE_REQUIRE:即使驱动满足 CUDA 12.9 要求,在某些环境(如 WSL2)中,nvidia-container-toolkit 可能误判版本,导致容器无法启动。设置该变量可绕过检查,让容器正常启动。

4.4 常用管理命令

# 查看运行状态
docker compose ps

# 查看日志
docker compose logs -f mineru-gradio

# 停止服务
docker compose down

# 进入容器调试
docker exec -it mineru-gradio /bin/bash

五、验证部署

5.1 检查容器状态

docker ps | grep mineru

5.2 验证 GPU 可用性

docker exec -it mineru-gradio nvidia-smi

5.3 验证解析功能(API 模式)

curl -X POST "http://localhost:8000/file_parse" \
  -F "files=@你的文档.pdf" \
  -F "backend=hybrid-engine"

六、常见问题

Q1: 构建镜像时提示 cuda>=13.0 不满足?

解决方案:按 关键改动 1 将基础镜像切换为 v0.21.0-cu129,并重新构建。

Q2: 启动容器时提示 cuda>=12.9 不满足?

解决方案:按 关键改动 3compose.yaml 中添加 runtime: nvidiaNVIDIA_DISABLE_REQUIRE: "true"

Q3: 容器内提示 No CUDA GPUs are available

检查是否已配置 runtime: nvidia,并确认 Docker Desktop 中已启用 GPU 支持(WSL2 后端需安装 NVIDIA CUDA on WSL 驱动)。

Q4: Docker Desktop 频繁崩溃?

执行 WSL2 重置:

wsl --shutdown
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data

然后重启 Docker Desktop。

Q5: 解析速度慢?

  • 确认使用 GPU 模式(CPU 模式慢约 5 倍)
  • 使用 hybrid-engine 后端,在 GPU 上比纯 CPU 模式快 8-12 倍

七、参考资源