[Bug]: Go DeepDOC can attach diagram captions to nearby equations

这个报错通常出现在用 Go 版 DeepDOC 解析 PDF 版面时,图注(caption)被错误挂到附近的公式上,而不是挂到上方的图上。优先排查 MergeCaptions 的父级选择逻辑( nearestFigureIn )是否按中心距离而非边缘距离排序。

快速结论:这个报错通常出现在用 Go 版 DeepDOC 解析 PDF 版面时,图注(caption)被错误挂到附近的公式上,而不是挂到上方的图上。优先排查 MergeCaptions 的父级选择逻辑(nearestFigureIn)是否按中心距离而非边缘距离排序。

适用环境:RAGFlow Go DeepDOC 解析器,代码提交 a485a564f(基于上游 65f543a63),本地 Go 源码构建,未使用 Docker 镜像;Issue 中的几何复现位于 internal/deepdoc/parser/pdf/table,该几何用例不需要 PDF 模型推理。Issue 未提供操作系统、Python、CUDA、显卡信息。

最快修复方案:暂无确认的一步修复方案。该问题已由 PR #21448(572eb775e,2026-10-29 合并)修复,图注归属改为按边缘间距距离计算,并补充了回归测试覆盖。升级到包含该提交的版本即可验证。

注意事项:Issue 明确说明整篇文档的解析结果会随上游文本/几何改进而变化,可复现的是文中给出的同页几何用例;该问题与 #15872 的排版编号冲突无关。是否升级后仍需针对自己的 PDF 复测,Issue 未对此作出说明。

问题场景

用户在用 RAGFlow 的 Go DeepDOC 解析 PDF 版面、调用 MergeCaptions 合并图注时触发问题。同一页上存在三个 pdf.Section:上方的总线图(LayoutTypeFigure)、下方的公式(在标注阶段同样被映射为 LayoutTypeFigure),以及位于两者之间的图注 Figure 12. I2C bus(DLALabelFigureCaption)。调用 MergeCaptions 后,图注被追加到公式上,而预期应归属到紧邻其上的图。

报错原文

[Bug]: Go DeepDOC can attach diagram captions to nearby equations

原因分析

可能原因:nearestFigureIn 按候选框的中心点平方距离排序,而不是按与图注边缘的间距排序。在 Issue 给出的坐标中,图注下边缘距下方公式上边缘约 31 点,距上方图上边缘仅约 12 点;但由于公式尺寸更小、中心点更靠近图注中心,公式反而在中心距离排序中胜出,被错误选为图注父级。DLA 公式在标注时被映射为 LayoutTypeFigure,因此和图一样有资格成为父级,放大了该排序缺陷的影响。

环境排查

  • 确认 Go DeepDOC 解析器的代码版本,Issue 对应提交 a485a564f,上游基线 65f543a63。
  • 确认是否本地源码构建(Issue 中未使用 Docker 镜像)。
  • 确认修改涉及 internal/deepdoc/parser/pdf/table/merge_captions.go,重点查看 nearestFigureIn 的距离计算方式。
  • 确认目标版本是否已包含修复提交 572eb775e(PR #21448)。
  • Issue 未涉及 Python、CUDA、PyTorch、显卡等依赖版本,无需排查这些项。

解决步骤

  1. 先用 Issue 提供的同页几何用例复现:构造三个 pdf.Section,坐标分别为图(左 260、右 420、上 132、下 201)、公式(左 279、右 399、上 257、下 283)、图注(左 280、右 388、上 213、下 226),每个位置都设置 PageNumbers: []int{10}。
  2. 文本分别设为 Bus diagram、Rp(min) = ...、Figure 12. I2C bus,调用 MergeCaptions(sections)。
  3. 检查图注被追加到哪个 Section:缺陷存在时第二个 Section(公式)会获得图注,第一个 Section 缺少 Figure 12.。
  4. 升级到包含 PR #21448(572eb775e)的版本;该 PR 将图注归属改为按边缘间距距离计算,并加入回归测试。
  5. 升级后重新执行上述几何用例,确认图注归属到图而非公式。

验证方法

对 Issue 中的几何用例断言第一个 Section 包含 Figure 12.,且第二个 Section 不再收到该图注;缺陷版本下该断言会失败。也可以查看修复提交附带的回归测试是否覆盖此场景。若用真实 PDF 复测(如 an0590scv140.pdf 第 11 页图 12),结果可能因上游文本/几何改进而变化,应以几何用例的断言为准。

参考来源

infiniflow/ragflow #21389

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 31220

发表回复

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