AI 十一月 30, 2025

内网环境在 RAGFlow 中使用 MinerU

文章字数 9.4k 阅读约需 9 mins. 阅读次数

本文可作为 使用教程:如何在 RAGFlow 中使用 MinerU 的补充,介绍如何在内网环境下配置 MinerU 解析器以供 RAGFlow 使用。

前提假设

  1. 已通过 docker 的形式在内网环境部署 RagFlow
  2. RAGFlow 版本 >= v0.21.1
  3. 有内网环境 pip 源

安装 MinerU

更新 .env 文件

.env 文件中添加如下内容:

MINERU_EXECUTABLE=/ragflow/uv_tools/.venv/bin/mineru
MINERU_MODEL_SOURCE=local

其中 MINERU_MODEL_SOURCE=local 表示 MinerU 使用 本地模型

注意需保持 USER_MINERU=false,若设为 true,启动容器时会自动执行 MinerU 的安装,在内网环境不适用。

创建 mineru.json

根据 MinerU 配置模板 或下面内容,创建 mineru.json 配置文件,放在 volume 路径下供后面 docker-compose.yml 中使用:

{
    "bucket_info":{
        "bucket-name-1":["ak", "sk", "endpoint"],
        "bucket-name-2":["ak", "sk", "endpoint"]
    },
    "latex-delimiter-config": {
        "display": {
            "left": "$$",
            "right": "$$"
        },
        "inline": {
            "left": "$",
            "right": "$"
        }
    },
    "llm-aided-config": {
        "title_aided": {
            "api_key": "your_api_key",
            "base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
            "model": "qwen3-next-80b-a3b-instruct",
            "enable_thinking": false,
            "enable": false
        }
    },
    "models-dir": {
        "pipeline": "",
        "vlm": ""
    },
    "config_version": "1.3.1"
}

更新 docker-compose.yml 文件

更新 docker-compose.yml 文件,为 ragflow-cpu 服务挂载本地路径,以免重建容器时需重新安装:

diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index ce9823a..8416cce 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -42,6 +42,9 @@ services:
       - ../history_data_agent:/ragflow/history_data_agent
       - ./service_conf.yaml.template:/ragflow/conf/service_conf.yaml.template
       - ./entrypoint.sh:/ragflow/entrypoint.sh
+      - ./volume/mineru.json:/root/mineru.json
+      - ./volume/.cache/modelscope:/root/.cache/modelscope
+      - ./volume/.venv:/ragflow/uv_tools/.venv
     env_file: .env
     networks:
       - ragflow

重建 ragflow-cpu 容器

ragflow/docker 路径下执行:

$ docker compose down ragflow-cpu
$ docker compose up -d ragflow-cpu

安装 MinerU

通过 docker exec -ti docker-ragflow-cpu-1 bash 进入容器执行安装:

$ pwd
/ragflow
$ cd uv_tools
$ uv venv .venv
$ source .venv/bin/activate
# 创建配置文件,使用内网 pip 源
$ cat > /ragflow/uv_tools/pyproject.toml << EOF
[[tool.uv.index]]
name = "nexus"
url = "http://192.168.1.16:8080/pypi/web/simple"
EOF
$ uv pip install -U "mineru[core]"
...
$ uv pip list | grep mineru
mineru                   2.6.4
mineru-vl-utils          0.1.16

下载模型文件

MinerU 使用的模型文件可提前下载至 ragflow/docker/volume/.cache/modelscope/hub/models/OpenDataLab 路径下。

例如 pipeline 模型可从 https://www.modelscope.cn/OpenDataLab/PDF-Extract-Kit-1.0 下载,放到 ragflow/docker/volume/.cache/modelscope/hub/models/OpenDataLab/PDF-Extract-Kit-1___0 目录下:

vlm 模型可从 https://www.modelscope.cn/models/OpenDataLab/MinerU2.5-2509-1.2B 下载。

$ tree -L 3
.
├── PDF-Extract-Kit-1___0
│   └── models
│       ├── Layout
│       ├── MFD
│       ├── MFR
│       ├── OCR
│       ├── OriCls
│       ├── ReadingOrder
│       ├── TabCls
│       └── TabRec
└── PDF-Extract-Kit-1.0 -> /root/.cache/modelscope/hub/models/OpenDataLab/PDF-Extract-Kit-1___0

10 directories, 1 file

如果内网有 ModelScope 的镜像地址,也可通过修改 modelscope SDK 的方式从内网地址下载模型。

修改 /ragflow/uv_tools/.venv/lib/python3.10/site-packages/modelscope/hub/constants.py 文件中的 MODELSCOPE_URL_SCHEME = 'http://'DEFAULT_MODELSCOPE_DOMAIN = 'www.modelscope.cn' 为内网地址,例如:

$ cat /ragflow/uv_tools/.venv/lib/python3.10/site-packages/modelscope/hub/constants.py |grep -B 1 "DEFAULT_MODELSCOPE_DOMAIN ="
MODELSCOPE_URL_SCHEME = 'http://'
DEFAULT_MODELSCOPE_DOMAIN = '192.168.1.16:8093'

之后通过 mineru-models-download 命令下载模型(以下载 pipeline 模型为例):

# 临时关闭本地模式,以能够下载模型
$ unset MINERU_MODEL_SOURCE
$ mineru-models-download -s modelscope -m pipeline
# 下载后恢复本地模式
$ export MINERU_MODEL_SOURCE=local

模型下载后会自动更新 /root/mineru.json 文件中的 models-dir 路径,手动下载模型后,也可根据实际路径参照下面内容进行修改:

$ cat ~/mineru.json
{
    "bucket_info": {
        "bucket-name-1": [
            "ak",
            "sk",
            "endpoint"
        ],
        "bucket-name-2": [
            "ak",
            "sk",
            "endpoint"
        ]
    },
    "latex-delimiter-config": {
        "display": {
            "left": "$$",
            "right": "$$"
        },
        "inline": {
            "left": "$",
            "right": "$"
        }
    },
    "llm-aided-config": {
        "title_aided": {
            "api_key": "your_api_key",
            "base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
            "model": "qwen3-next-80b-a3b-instruct",
            "enable_thinking": false,
            "enable": false
        }
    },
    "models-dir": {
        "pipeline": "/root/.cache/modelscope/hub/models/OpenDataLab/PDF-Extract-Kit-1___0",
        "vlm": "/root/.cache/modelscope/hub/models/OpenDataLab/MinerU2___5-2509-1___2B"
    },
    "config_version": "1.3.1"
}

验证功能

完成安装后通过命令行验证 MinerU 功能:

$ mineru -p test.pdf -o ./

发布 MinerU API 服务

$ mineru-api --host 0.0.0.0 --port 9382

之后可通过宿主机 IP 和端口 9382 访问 MinerU API:

API

在 RAGFlow 中使用

RAGFlow 知识库配置中,选择 MinerU 作为 PDF 解析器后,上传文档执行解析任务,可在容器中看到 MinerU 进程在运行:

$ ps -ef|grep mineru|grep -v grep
root      1863    25 99 22:04 ?        00:00:39 /ragflow/uv_tools/.venv/bin/python3 /ragflow/uv_tools/.venv/bin/mineru -p /tmp/mineru_bin_pdf_vqf00tlw/20251126-090158.pdf -o /tmp/mineru_pdf_k3y3cwp7 -m auto -b pipeline

执行效果:

RAGFlow

0%