[Bug]: MinerU parser reparses the entire PDF for every page-splitting task, causing duplicate computation and poor performance

用户在 RAGFlow (commit cb93883, v0.26.4, Ubuntu 22.04) 中配置 MinerU 解析器,上传一个数百页的大 PDF 文件,启动文档解析任务时触发。

[Bug]: MinerU parser reparses the entire PDF for every page-splitting task, causing duplicate computation and poor performance

[Bug]: MinerU parser reparses the entire PDF for every page-splitting task, causing duplicate computation and poor performance

快速结论:该 Bug 出现在 RAGFlow 使用 MinerU 解析器处理大型 PDF 时,每个页范围任务都会重复解析整个 PDF。优先排查 deepdoc/parser/mineru_parser.py 文件中 _run_mineru_api 函数是否硬编码了 start_page_id: 0end_page_id: 99999

问题场景

用户在 RAGFlow (commit cb93883, v0.26.4, Ubuntu 22.04) 中配置 MinerU 解析器,上传一个数百页的大 PDF 文件,启动文档解析任务时触发。

报错原文

Page(1~13): [MinerU] Received binary PDF -> /tmp/mineru_bin_pdf_7_8g3ixe/量子信息技术发展与应用研究报告(2020年).pdf
Page(1~13): [MinerU] Parsed 442 blocks from PDF.
Page(13~25): [MinerU] Received binary PDF -> /tmp/mineru_bin_pdf_ex5qic55/量子信息技术发展与应用研究报告(2020年).pdf
Page(13~25): [MinerU] Parsed 442 blocks from PDF.

日志显示每个页范围任务都解析到相同数量的 block(442 blocks)和 image 数(27 images),说明整个 PDF 被重复解析。

原因分析

根因已确认:_run_mineru_api 函数在 deepdoc/parser/mineru_parser.py 中硬编码了 start_page_id: 0end_page_id: 99999,无论任务分配的页范围如何,都会解析整个 PDF。这是从 Issue #16586 复现的已知问题。

环境排查

  • RAGFlow workspace code commit ID: cb93883
  • RAGFlow image version: cb93883 (v0.26.4)
  • 操作系统: ubuntu22.04
  • MinerU 解析器版本(需检查是否使用 API 模式,日志显示调用 http://127.0.0.1:8000/file_parse)

解决步骤

  1. 确认 deepdoc/parser/mineru_parser.py 文件(约第 275-301 行)中 _run_mineru_api 函数是否硬编码了 start_page_id: 0end_page_id: 99999
  2. 检查三个待合并的修复 PR:
    • PR #16600 — 原始修复,将 from_page/to_page 传入 MinerU API 调用
    • PR #16957 — 改进版本,包含边界转换(RAGFlow 独占 → MinerU 包含)和单元测试
    • PR #16857 — 最全面修复,同时处理 MinerU、OpenDataLoader、Docling 解析器中的相同问题,并修正 page_idx 重新索引
  3. 可优先尝试手动合并 PR #16600 的改动:修改 _run_mineru_api 函数,将传递的 from_pageto_page 参数正确赋值给 start_page_idend_page_id
  4. 若使用 Docker,重新构建镜像或直接修改代码后重启服务。

验证方法

重复触发同一个大 PDF 的解析任务,检查日志确认每个页范围任务(如 Page(1~13)、Page(13~25))是否只解析对应范围内的页面。例如:

  • 期望:Page(1~13) 解析约 13 页内容,Page(13~25) 解析约 12 页内容
  • 修复前:两个任务都解析相同的 500 页(442 blocks)

参考来源

infiniflow/ragflow #16971

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 13607

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注