记录基于 sglang 基础镜像构建 MinerU 官方 Docker 镜像的过程:安装 mineru core 依赖、下载并配置模型权重、设置容器入口命令,并说明视觉语言模型在整个文档解析链路中的角色定位。
https://hf-mirror.com/opendatalab/MinerU2.0-2505-0.9B
一、mineru:v2.0.6版本镜像
1、MinerU镜像官网方式构建
1、基于lmsysorg/sglang:v0.4.7-cu124构建mineru:v2-sh
1 | # Use the official sglang image |
2、启动服务
1 | sudo docker run --gpus '"device=0"' \ |
3、启动日志
1 | WARNING:sglang.srt.models.registry:Ignore import error when loading sglang.srt.models.torch_native_llama. tensor model parallel group is not initialized |
4、调用服务
1 | mineru |
客户端显示的日志

服务端的日志

2、MinerU模型分析
1 | { |
MinerU2.0-2505-0.9B(2.0G):https://huggingface.co/opendatalab/MinerU2.0-2505-0.9B,单模型涵盖所有文档解析任务

1 | ┌──────────────────────────────┐ |
其整体架构和 Qwen2.5-VL没有本质上的差别。VLM解析方法能有效提取大表格的内部信息,并进行标题、正文划分。VLM模型需要将图像编码成token,一旦图像分辨率很高,图像编码所带来的显存占用,甚至会远高于模型本身的显存占用。
3、VLM的角色定位
- 解析模块的核心:VLM(如
vlm-transformers或vlm-sglang后端)专门负责高精度的文档理解,包括: - 非全流程覆盖:全流程为预处理-解析-后处理。VLM不参与预处理(如PDF去噪、页码过滤)或后处理(如Markdown格式转换),这些由
pipeline后端或其他模块处理 - MinerU的VLM模块是一个端到端的多模态文档理解模型,覆盖了从视觉感知到结构化输出的完整解析链路
- VLM模块的token输入格式:<|box_start|>x0 y0 x1 y1<|box_end|><|ref_start|>type<|ref_end|><|md_start|>content<|md_end|>
模块 VLM的作用 其他模块的作用 预处理 不参与 由 pipeline处理(如页眉页脚移除)解析 核心作用(布局分析、OCR、公式识别) pipeline使用传统OCR/模型后处理 输出结构化JSON/Markdown 统一由中间格式 middle_json处理
PDF-Extract-Kit-1.0(2.4G):Layout MFD MFR OCR ReadingOrder TabRec
https://pdf-extract-kit.readthedocs.io/zh-cn/latest/
Layout(文档布局分析 (Detectron2)):YOLO——doclayout_yolo_docstructbench_imgsz1280_2501.pt(38M)
MFD(数学公式检测 (PyTorch)):YOLO——yolo_v8_ft.pt(334M)
MFR(数学公式识别 (BERT-based)):unimernet_hf_small_2503(776M)
OCR:paddleocr_torch(522M)
ReadingOrder:layout_reader(681M)
TabRec(表格识别与重建 (T5-based)):SlanetPlus(7.5M)
通过 -b 或 --backend参数,可指定使用基础解析方式或vlm解析方式:
- pipeline:基础解析方式
- vlm-transformers:vlm解析方式
- vlm-sglang-engine:vlm加速解析方式
- vlm-sglang-client:vlm加速解析方式(连接sglang 服务调用)
二、mineru:v1.3.12版本镜像
1、MinerU镜像官网方式构建
1、基于ubuntu:22.04构建mineru:wangkaihan-test
1 | # Use the official Ubuntu base image |
2、基于mineru:wangkaihan-test构建mineru:wangkaihan-test-20250610
1 | FROM mineru:wangkaihan-test |
3、构建新的mineru:wangkaihan-test-20250610镜像
1 | sudo docker build -t mineru:wangkaihan-test-20250610 . |
4、基于mineru:wangkaihan-test-20250610创建容器
1 | sudo docker run -it --name mineru --gpus=7 mineru:wangkaihan-test-20250610 /bin/bash -c "echo 'source /opt/mineru_venv/bin/activate' >> ~/.bashrc && exec bash" |
2、MinerU自定义方式构建
1、基于mineru:wangkaihan-test构建mineru:wangkaihan-test-20250610095346
1 | FROM mineru:wangkaihan-test |
2、构建mineru:wangkaihan-test-20250610095346新镜像(更换ENTRYPOINT兼容sh)
1 | sudo docker build -t mineru:wangkaihan-test-20250610095346 . |
3、基于自定义的mineru:wangkaihan-test-20250610095346构建容器
1 | sudo docker run -it --name mineru-test-20250610095346 --gpus=7 mineru:wangkaihan-test-20250610095346 sh |
3、MinerU服务启动
1、进入对应的mineru_project目录文件夹
1 | cd mineru_project |
2、安装mineru_project服务所需的pip包
1 | pip install fastapi==0.115.12 loguru==0.7.3 tenacity==9.1.2 httpx==0.28.1 pymysql==1.1.1 python-multipart==0.0.20 uvicorn==0.34.3 -i https://pypi.tuna.tsinghua.edu.cn/simple |
3、启动unvicorn服务
1 | uvicorn main:app --host 0.0.0.0 --port 8888 |
4、服务curl调用
1 | curl --location 'http://10.39.214.112:8998/pdf_parse_async?parse_method=auto&is_json_md_dump=false&return_images=true&env=dev' \ |
4、MinerU服务重新启动
1、将mineru-test-20250610095346容器打包成mineru:v1-20250610镜像
1 | sudo docker commit mineru-test-20250610095346 mineru:v1-20250610 |
2、重新启动mineru容器
1 | sudo docker run -it --name mineru-test-20250610135010 --gpus=7 -P -p 8998:8998 mineru:v1-20250610 sh |
3、进入对应的mineru_project目录文件夹
1 | cd mineru_project |
4、启动unvicorn服务
1 | uvicorn main:app --host 0.0.0.0 --port 8998 |
5、服务curl调用
1 | curl --location 'http://10.39.214.112:8998/pdf_parse_async?parse_method=auto&is_json_md_dump=false&return_images=true&env=dev' \ |
6、服务端日志调用

三、Mineru v1.2.2版本
https://mineru.readthedocs.io/zh-cn/latest/user_guide/install/install.html

1、MinerU环境安装
1. 检测是否已安装 nvidia 驱动
nvidia-smi
如果看到类似如下的信息,说明已经安装了 nvidia 驱动,可以跳过步骤2
Important
CUDA Version 显示的版本号应 >=12.1,如显示的版本号小于12.1,请升级驱动
1 | +---------------------------------------------------------------------------------------+ |
2. 安装驱动
如没有驱动,则通过如下命令
1 | sudo apt-get update |
安装专有驱动,安装完成后,重启电脑
reboot
3. 安装 anacoda
如果已安装 conda,可以跳过本步骤
1 | wget -U NoSuchBrowser/1.0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2024.06-1-Linux-x86_64.sh |
最后一步输入yes,关闭终端重新打开
4. 使用 conda 创建环境
需指定 python 版本为3.10
1 | conda create -n MinerU python=3.10 |
5. 安装应用
1 | pip install -U magic-pdf[full] --extra-index-url https://wheels.myhloli.com -i https://mirrors.aliyun.com/pypi/simple |
下载完成后,务必通过以下命令确认magic-pdf的版本是否正确
magic-pdf --version
如果版本号小于0.7.0,请到issue中向我们反馈
2、MinerU模型下载
使用python脚本 从Hugging Face下载模型文件
1 | pip install huggingface_hub |
python脚本会自动下载模型文件并配置好配置文件中的模型目录
或者使用python脚本从 ModelScope 下载模型文件
1 | pip install modelscope |
python脚本会自动下载模型文件并配置好配置文件中的模型目录
配置文件可以在用户目录中找到,文件名为magic-pdf.json
了解配置文件存放的位置
完成下载模型步骤后,脚本会自动生成用户目录下的magic-pdf.json文件,并自动配置默认模型路径。您可在【用户目录】下找到magic-pdf.json文件。
linux用户目录为 “/home/用户名”
3、MinerU服务启动
从仓库中下载样本文件,并测试
1 | wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/demo/small_ocr.pdf |
测试CUDA加速
如果您的显卡显存大于等于 8GB ,可以进行以下流程,测试CUDA解析加速效果
首先修改【用户目录】中配置文件 magic-pdf.json 中”device-mode”的值
1 | { |
然后运行以下命令测试 cuda 加速效果
1 | magic-pdf -p small_ocr.pdf -o ./output |
CUDA 加速是否生效可以根据 log 中输出的各个阶段 cost 耗时来简单判断,通常情况下, layout detection cost 和 mfr time 应提速10倍以上。
ocr 开启 cuda 加速
首先下载paddlepaddle-gpu, 安装完成后会自动开启ocr加速
1 | python -m pip install paddlepaddle-gpu==3.0.0b1 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/ |
然后运行以下命令测试ocr加速效果
1 | magic-pdf -p small_ocr.pdf -o ./output |
CUDA 加速是否生效可以根据 log 中输出的各个阶段 cost 耗时来简单判断,通常情况下, ocr cost 应提速10倍以上。
示例
1 | import os |
运行以上的代码,会得到如下的结果
1 | output/ |
除去初始化环境,如建立目录、导入依赖库等逻辑。真正将 pdf 转换为 markdown 的代码片段如下
1 | read bytes |
ds.apply(doc_analyze, ocr=True) 会生成 InferenceResult 对象。 InferenceResult 对象执行 pipe_ocr_mode 方法会生成 PipeResult 对象。 PipeResult 对象执行 dump_md 会在指定位置生成 markdown 文件。

