unet表格识别连通域图-算法.md 2.9 KB

User Input

如果unet可以正确识别出横竖线,能否输出横竖线的坐标, 然后根据横竖线的坐标焦点计算出连通域? 这种做饭与现有做法对比,哪种更稳定,为什么?

Planner Response

这是一个非常深入且专业的问题。简短的回答是:先提取线坐标,计算焦点并延长连接,再重新生成Mask进行连通域分析(即“先矢量化梳理,再栅格化分析”),是目前公认最稳定的有线表格恢复方案。

这也是 MinerU(以及许多商业级OCR引擎)采用的核心策略。

我为您详细对比这两种方案的优劣和原理:

方案对比

特性 方案A:基于Mask的直接连通域 (现有做法) 方案B:基于矢量线的重构连通域 (推荐做法/MinerU做法)
核心逻辑 UNet -> 概率图 -> 二值化 -> 也就是现在的做法 UNet -> 概率图 -> 提取线段坐标 -> 数学延长线段使其相交 -> 重绘Mask -> 连通域
处理交叉点 依赖形态学膨胀(Dilate)去"糊"住缺口。如果缺口大或错位,容易失败。 依赖几何计算。强制将线段延伸直到与另一条线相交,从数学上消灭缺口。
抗干扰性 弱。噪点、虚线、污渍会直接影响连通域形状。 强。只提取显著的长线段,过滤掉细碎噪点。
抗形变性 强。弯曲的表格也能很好适配(因为Mask是像素级的)。 较弱。如果表格弯曲严重,直线拟合误差会变大(需引入曲线拟合)。
复杂度 低。主要靠OpenCV基础算子。 高。涉及线段聚类、直线方程求解、交点计算等。
稳定性 中等。容易出现“单元格漏检”(线没连上)或“单元格粘连”。 极高。只要线被检出,单元格就一定闭合,且形状非常规整。

为什么方案B(矢量化重构)更稳定?

您遇到的 *"明明肉眼看线是清楚的,但连通域却漏了"*,通常是因为 像素级的断连

  • Mask方案的局限:在交叉点(十字或T字路口),预测的像素可能只差 1-2 个像素没连上。虽然肉眼看着是挨着的,但在计算机算法里,它们就是断开的,导致这个“房间”漏风,连通域分析时背景灌入,单元格就消失了。
  • 矢量化方案的优势
    1. 强制闭合:它计算出横线 $y=100$ 和竖线 $x=50$。即使预测的竖线只画到了 $y=98$(差2像素),矢量算法会强制将竖线延长,直到撞上横线。
    2. 结构规整:重绘出的表格一定是横平竖直的,消除了手写或扫描带来的边缘抖动。

结论与建议

目前我们尝试的 enhance_box_line (膨胀) 依然属于 方案A 的修补措施。如果您的业务场景中包含大量打印不清、有轻微断线的表格,方案B 是终极解决方案