Dify应用MinerU处理pdf等文档(Docker本地化部署MinerU详细步骤)

目录

1 事由

2 Dify使用MinerU API

3 环境配置

4 MinerU本地化Doker部署 

5 Dify使用本地部署的MinerU

6 换行符LF与 CRLF 格式


1 事由

Dify的Pdf文档处理器功能偏弱,需要解决Dify下处理Pdf文件识别问题,Dify插件市场亦有MinerU插件使用。

首先,MinerU插件和Ollama、LM Studio等不同,它不是本地化部署的模型类插件,而是工具类插件,插件市场的注释如下:

MinerU

0.2.0

MinerU是一款可以在本地部署的将FILES转化为机器可读格式的工具(如markdown、json),可以很方便地抽取为任意格式。MinerU诞生于书生-浦语的预训练过程中,我们将会集中精力解决科技文献中的符号转化问题,希望在大模型时代为科技发展做出贡献。https://github.com/opendatalab/MinerU

PS:官网的WebAPI本地化部署readme写的太简单了(MinerU/projects/web_api/README.md at master · opendatalab/MinerU · GitHub) 

2 Dify使用MinerU API

先试着MinerU插件API功能,需要去MinerUMineru 智能数据提取https://mineru.net/apiManage/token官网申请API Key,这里填好信息后需要有一个审核过程,大概半天时间。插件设置授权如下:

这里设置需要查看Dify的插件官网文档,MinerU的官网文档好像没有提到

MinerU服务的Base URL*填https://mineru.net

令牌就是在MinerU官网上申请通过后创建API Token获得Key(要保存下来,一旦创建成功后就看不到Key信息,否则只有重新创建)

服务类型选MinerU的官方API

之后点保存就成功对插件进行了授权。

3 环境配置

Dify流程中使用MinerU还需要进行环境配置(FILES_URL):

为保证 MinerU 插件能够正常处理文件上传,需要在 Dify 中配置 FILES_URL 设置:

  1. 找到您的 Dify 部署目录并编辑 .env 文件。

  2. 根据您的部署方法修改 FILES_URL 配置:

    • Docker Compose 部署:将 FILES_URL 设置为 http://api:5001
    • 其他部署方法:将 FILES_URL 设置为 http://DIFY_HOST_IP:5001(例如,http://192.168.1.101:5001,其中 IP 通常是运行 Dify 的机器)
  3. 确认 Dify API 服务的 5001 端口对外暴露(查看 docker-compose.yaml 文件中的端口映射)。

  4. 保存 .env 文件后,重启 Dify 服务,配置才能生效:

在.env文件中定义FILES_URL(注释中有类似的意思)

# File preview or download Url prefix.
# used to display File preview or download Url to the front-end or as Multi-model inputs;
# Url is signed and has expiration time.
# Setting FILES_URL is required for file processing plugins.
#   - For https://example.com, use FILES_URL=https://example.com
#   - For http://example.com, use FILES_URL=http://example.com
#   Recommendation: use a dedicated domain (e.g., https://upload.example.com).
#   Alternatively, use http://<your-ip>:5001 or http://api:5001,
#   ensuring port 5001 is externally accessible (see docker-compose.yaml).
FILES_URL= http://api:5001

保存.env文件后,重启 Dify 服务,配置才能生效:

docker compose down
docker compose up -d

 需要注意的是,每次更新升级完dify后,.env文件需要同步更新,升级dify方式见:dify1.0.0版本以上添加ollama本地化模型报错或无反应(dify 1.3及以上版本需如何有效更新)_dify 1.3 ollama-CSDN博客因此都要记得修改FILES_URL参数。

环境更新配置好后,dify中设计个简单的Pdf识别流程,顺利通过:

4 MinerU本地化Doker部署 

 首先,下载MinerU代码Zip文件

GitHub - opendatalab/MinerU: A high-quality tool for convert PDF to Markdown and JSON.一站式开源高质量数据提取工具,将PDF转换成Markdown和JSON格式。

或者执行:

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

进入MinerU文件夹下projects\web_api文件夹:

cd MinerU\projects\web_api

执行命令:

docker build -t mineru-api .

可能会出现:“ERROR: failed to solve: ubuntu:22.04: failed to resolve source metadata for docker.io/library/ubuntu:22.04” 报错,这里需要设置Docker的拉取镜像源。如果使用DockerDesk,在Settings中的Docker Engine中增加仓库镜像(mirrors)配置如下:

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "https://docker.registry.cyou/",
    "https://docker-cf.registry.cyou/",
    "https://dockercf.jsdelivr.fyi/",
    "https://docker.jsdelivr.fyi/",
    "https://dockertest.jsdelivr.fyi/",
    "https://mirror.aliyuncs.com/",
    "https://dockerproxy.com/",
    "https://mirror.baidubce.com/",
    "https://docker.m.daocloud.io/",
    "https://docker.nju.edu.cn/",
    "https://docker.mirrors.sjtug.sjtu.edu.cn/",
    "https://docker.mirrors.ustc.edu.cn/",
    "https://mirror.iscas.ac.cn/",
    "https://docker.rainbond.cc/",
    "https://jq794zz5.mirror.aliyuncs.com"
  ]
}

此次,再次运行上述docker build命令(这个命令会在当前目录下寻找名为Dockerfile文件,并根据其中的指令来构建镜像),就可以正常拉取镜像(Images)并建立容器了(注意这里镜像和上文镜像不同概念、参见英文):

powershell中可能的报错:

 => ERROR [build 5/5] RUN . /app/venv/bin/activate &&     ./download_models.py                                     0.3s
------
 > [build 5/5] RUN . /app/venv/bin/activate &&     ./download_models.py:
0.270 /usr/bin/env: ‘python\r’: No such file or directory
0.270 /usr/bin/env: use -[v]S to pass options in shebang lines
------
Dockerfile:33
--------------------
  32 |     COPY download_models.py .
  33 | >>> RUN . /app/venv/bin/activate && \
  34 | >>>     ./download_models.py
  35 |
--------------------
ERROR: failed to solve: process "/bin/sh -c . /app/venv/bin/activate &&     ./download_models.py" did not complete successfully: exit code: 127

对应dockerdesktop报错:

# Download models

33

COPY download_models.py .

34

RUN . /app/venv/bin/activate && \

35

./download_models.py

/usr/bin/env: ‘python\r’: No such file or directory /usr/bin/env: use -[v]S to pass options in shebang lines

报错显示行尾符(CRLF vs LF)未彻底转换

错误信息中的 python\r 表明 download_models.py 的 Shebang 行中存在 Windows 的 CRLF 换行符(\r\n),导致解释器路径被截断为 python\r,而 Linux 仅识别 LF(\n)。

问题的原因是Windows上的Git将行尾从Unix样式(LF)转换为Windows样式(CRLF)。

OK,用一文本编辑工具将download_models.py文件的换行符由CRLF调整为LF并存盘。(或者直接见本片最后一节“换行符”)

再次build:

docker build -t mineru-api .

快build完镜像:

建立的docker镜像如下:

编写docker-compose.yml 

services:
  mineru-api:
    image: mineru-api
    ports:
      - "8000:8000"
    stdin_open: true   # 对应 -i 参数
    tty: true          # 对应 -t 参数
    runtime: nvidia    # 使用 NVIDIA 容器运行时
    environment:
      - NVIDIA_VISIBLE_DEVICES=all  # 允许访问所有 GPU

启动

docker compose up -d

出现了/usr/bin/env: ‘bash\r’: No such file or directory的异常,

同样原因,还是换行符的问题。先将MinerU\projects\web_api下的文件全部调整为LF换行符,再重新build就OK,可以看到容器已经运行起来:

输入

http://localhost:8000/docs

看到MinerU界面

 测试解析文件时候,可能出现报错

{ "error": "Must provide either file or file_path" }

继续查看docker中的logs:

RuntimeError: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx⁠

INFO: 172.22.0.1:59268 - "POST /file_parse?parse_method=auto&return_layout=False&return_info=False&return_content_list=True&return_images=True HTTP/1.1" 500 Internal Server Error

INFO: 172.22.0.1:36166 - "POST /file_parse HTTP/1.1" 400 Bad Request

INFO: 172.22.0.1:43522 - "POST /file_parse HTTP/1.1" 400 Bad Request

系统中没有找到NVIDIA驱动程序。这可能是由于缺少NVIDIA GPU或尚未安装相应的驱动程序。

注:没有英伟达显卡无法安装 NVIDIA Container Toolkit。NVIDIA Container Toolkit 是用于在 Docker 容器中支持英伟达显卡的工具包,安装该工具包需要满足以下条件:  x86_64 架构的 Linux 系统  已安装 Docker  英伟达 GPU 显卡  英伟达显卡驱动,版本大于等于 418.81.07。如果没有英伟达显卡,将无法利用 NVIDIA Container Toolkit 的功能,因为该工具包的核心目的是为了让容器能够利用英伟达显卡的 GPU 加速能力。

因此集显等目前可能只能纯CPU方式跑MinerU。同时关注下有没有用集显参与运算的可能,如Ollama 就有英特尔优化版(英特尔亚太研发提供魔搭社区),速度会快不少。

5 Dify使用本地部署的MinerU

  1. 进入 “Tools” -> “Plugin Market”,搜索 “MinerU” 插件并添加。

  2. 配置 MinerU 插件参数:

    • 本地部署的 MinerU 服务的基本 URL:http://YOUR_LOCAL_IP:8888(例如,http://192.168.1.100:8888
    • Token:留空(本地部署不需要)
    • 服务类型:选择“本地部署”

    注意:确保 Dify 服务可以访问此基 URL。如:http://host.docker.internal:port

  3. 保存配置。

6 换行符LF与 CRLF 格式

在本地化部署MinerU时遇到的换行符问题,最后要单列一节说说。

在 Windows 上使用 Git 时,默认情况下,Git 会自动将提交到仓库的换行符LF转换为 CRLF 格式,以便在 Windows 的文本编辑器中正确显示。为了确保docker build过程顺利,开始克隆使用Windows git就需要禁用这种自动转换行为,通过配置 Git 来实现。

全局配置:
如果想对所有仓库禁用自动换行符转换,可以使用以下命令:

git config --global core.autocrlf false

 局部配置:
如果只想对某个特定的仓库禁用自动换行符转换,可以在该仓库目录下运行:

git config core.autocrlf false

 查看当前配置:
可以通过以下命令查看当前的 core.autocrlf 配置:

git config --get core.autocrlf

 如果禁止就会显示:

完整命令可以是

# 设置全局配置,禁用自动换行符转换
git config --global core.autocrlf false

# 克隆 MinerU 仓库
git clone https://github.com/opendatalab/MinerU.git

重置文件的换行符:
如果已经有一些文件被自动转换了换行符,可以使用以下命令来重置这些文件的换行符(待验证):

git add --renormalize .
git commit -m "Normalize line endings"

<think>好的,我需要帮助用户了解如何在Dify部署MinerU。首先,我需要回顾用户提供的引用内容,找到相关的信息。根据引用[2],用户已经安装了MinerU,并且成功将PDF转换为Markdown,这对于Dify的知识库构建很重要。引用[4]提到MinerU的功能,包括处理PDF和转换为LaTeX,这可能与Dify的知识库集成有关。 用户的问题是如何在Dify部署或配置MinerU。从引用[2]中,用户已经通过Docker安装了MinerU,并进行了PDF转换测试。可能需要将MinerU处理后的Markdown文件导入Dify的知识库。引用[1]提到Dify使用BGE-M3作为嵌入模型,可能涉及知识库的配置步骤步骤可能包括:1. 使用MinerU处理PDF生成Markdown;2. 将这些文件上传到Dify的知识库;3. 配置Dify使用正确的嵌入模型。需要确保文件路径正确,并且Dify能访问处理后的文件。另外,引用[5]提到Docker拉取镜像的问题,可能需要确认CUDA版本或使用特定标签的镜像以避免错误。 总结步骤:安装MinerU,转换PDF,将输出导入Dify知识库,配置嵌入模型,处理可能的Docker问题。需要检查Dify文档是否有直接集成MinerU的方法,或者是否需要手动上传生成的文件。</think>### Dify平台部署MinerU的配置方法 #### 1. MinerUDify的集成逻辑 MinerU作为PDF处理工具,其输出结果需要手动导入Dify知识库系统。核心流程为: - **PDF处理**:使用MinerUPDF转换为带LaTeX公式的Markdown文件[^4] - **文件导入**:将生成的结构化文件上传至Dify知识库 - **向量化处理**:Dify自动调用已配置的BGE-M3嵌入模型进行向量化[^1] #### 2. 具体操作步骤 **(1) MinerU环境部署** ```bash # Windows WSL环境下构建Docker镜像 docker build -t mineru:latest . # 运行容器时需挂载GPU(确保已安装CUDA 11.8+[^3]) docker run --rm -it --gpus=all mineru:latest /bin/bash ``` **(2) 文件转换操作** ```bash # 在容器内执行转换命令(需提前用docker cp导入PDF) magic-pdf -p test.pdf -o output_dir -m auto ``` 转换后的Markdown文件将包含: $$ E = mc^2 $$ 等LaTeX公式,保持数学表达式结构化[^4] **(3) Dify知识库配置 1. 登录Dify控制台 2. 创建新知识库 -> 选择"文件上传"类型 3. 上传MinerU输出的Markdown文件夹 4. 验证索引状态(确保BGE-M3模型已正常加载[^1]) #### 3. 常见问题处理 - **CUDA版本冲突**:需匹配NVIDIA驱动版本,推荐使用`nvidia/cuda:11.8.0-base`等明确版本标签[^5] - **路径权限问题**:WSL环境下需确保`/mnt`目录挂载权限正确 - **公式渲染异常**:检查Dify的Markdown解析器是否支持LaTeX语法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值