[Bug]: MinerU unsplit-task mode still queues one task per configured page range

当 RAGFlow 对 MinerU 文档启用了 unsplit-task mode(不分页模式),却在 Page Ranges 中配置了多段页码范围时, queue_tasks 的外层循环仍会为每个范围各建一个任务,导致同一个 PDF 被重复上传多次,并打印 "MinerU unsplit-tas

快速结论:当 RAGFlow 对 MinerU 文档启用了 unsplit-task mode(不分页模式),却在 Page Ranges 中配置了多段页码范围时,queue_tasks 的外层循环仍会为每个范围各建一个任务,导致同一个 PDF 被重复上传多次,并打印 “MinerU unsplit-task mode” 日志与真实任务数不符。优先检查你的文档是否同时设置了 MinerU 与多段 Page Ranges。

适用环境:RAGFlow workspace code commit 4168b3f9df26f76bd91875b5ca04d6d72f4b8f99(源码构建,非官方镜像);macOS 26.6.2;Apple M1 Pro;Python 3.13.14。

最快修复方案:升级到已修复的 main 分支提交 302ada2cd(由 PR #19183 引入)。该修复让 queue_tasks 在 MinerU unsplit-task mode 下把配置的所有页码范围合并成一个任务跨度,从而实现一次上传。

注意事项:修复后仍会对配置范围之间的空白页执行 MinerU 解析计算(结果块由 MinerUParser._select_configured_pages 过滤掉),这与本 Issue 报告的重复上传是两种不同的成本,Issue 作者明确未扩大范围处理。若无法升级,暂无确认的一步修复方案。

问题场景

在 RAGFlow 中使用 MinerU 作为 layout recognizer 解析 PDF 文档,并且该文档的 Page Ranges 配置了不止一段(例如两行及以上范围)。此时提交解析任务,RAGFlow 会为每一段页码范围分别排队一个任务,而每个任务都会重新上传整份 PDF 到 MinerU API server。

报错原文

[Bug]: MinerU unsplit-task mode still queues one task per configured page range

原因分析

PR #18617 引入 MinerU unsplit-task mode 时,只在 api/db/services/task_service.py 中将 page_size 设为 MAXIMUM_TASK_PAGE_NUMBER,这只收敛了内层循环;外层循环仍然遍历 parser_config["pages"],因此每个配置的范围都会生成一个任务。

同时 web/src/components/chunk-method-dialog/index.tsx 中的 showPages 只判断文件类型与 chunk method,没有判断 layout recognizer,所以 MinerU 文档的 Page Ranges 仍保持可见,用户添加第二行后 pages 就会包含多个条目。

每个任务都会调用 _run_mineru_api 打开源文件并以 open(pdf_file_path, "rb") 上传整份 PDF,start_page_idend_page_id 仅作为表单字段传递,只影响解析范围,不缩减传输体积。结果就是配置四段范围会上传四次完整 PDF,正好抵消了 #18617 想消除的网络开销。

环境排查

  • 确认 RAGFlow 提交版本,Issue 中为源码构建的 4168b3f9df26f76bd91875b5ca04d6d72f4b8f99
  • 确认 Python 版本,Issue 中为 3.13.14。
  • 确认操作系统与硬件,Issue 中为 macOS 26.6.2 / Apple M1 Pro。
  • 确认目标文档的 layout recognizer 是否为 MinerU。
  • 确认该文档的 Page Rangesparser_config["pages"])是否配置了多段范围。
  • 确认日志中是否同时出现 “MinerU unsplit-task mode” 与实际排队任务数量不一致的情况。

解决步骤

  1. 确认你遇到的是同一问题:文档使用 MinerU,且 Page Ranges 中配置了不止一段范围。
  2. 升级到修复后的提交 302ada2cd(对应 PR #19183),该 PR 已合入 main
  3. 升级后,queue_tasks 会在 MinerU unsplit-task mode 下将配置的所有页码范围合并为单个任务跨度(api/db/services/task_service.py:511),一次任务即一次上传。
  4. 解析阶段由 MinerUParser._select_configured_pages 丢弃落在各范围之间空白页上的结果块。
  5. 若暂时无法升级,可优先尝试减少 Page Ranges 段数(例如合并为一段),以降低重复上传次数;这属于规避手段,并非 Issue 中验证过的修复。

验证方法

对配置了多段 Page Ranges 的 MinerU 文档提交解析,观察 MinerU API 侧只收到一次完整 PDF 上传,且排队任务数与 “MinerU unsplit-task mode” 日志相符;解析结果中落在空白页范围的内容已被过滤,仅保留配置范围内的块。

参考来源

infiniflow/ragflow #19180

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 24373

发表回复

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