|
@@ -721,7 +721,6 @@ class CellFusionEngine:
|
|
|
过滤边界噪声单元格
|
|
过滤边界噪声单元格
|
|
|
|
|
|
|
|
过滤条件:
|
|
过滤条件:
|
|
|
- 1. 单元格标记为 'unet_only'(只在 UNet 中检测到,RT-DETR 未匹配)
|
|
|
|
|
2. 单元格位于表格边界(左边界或右边界)
|
|
2. 单元格位于表格边界(左边界或右边界)
|
|
|
3. 单元格内没有任何 OCR 文本框(说明是空白区域)
|
|
3. 单元格内没有任何 OCR 文本框(说明是空白区域)
|
|
|
|
|
|
|
@@ -748,6 +747,14 @@ class CellFusionEngine:
|
|
|
# continue
|
|
# continue
|
|
|
|
|
|
|
|
x1, y1, x2, y2 = cell
|
|
x1, y1, x2, y2 = cell
|
|
|
|
|
+
|
|
|
|
|
+ # 过滤极薄/极窄的噪声框(无论是否在边界)
|
|
|
|
|
+ if tol > 0.0 and (abs(x2 - x1) < tol or abs(y2 - y1) < tol):
|
|
|
|
|
+ logger.debug(
|
|
|
|
|
+ f"🗑️ 过滤异常细线框: [{x1:.1f}, {y1:.1f}, {x2:.1f}, {y2:.1f}] (tol={tol})"
|
|
|
|
|
+ )
|
|
|
|
|
+ filtered_count += 1
|
|
|
|
|
+ continue
|
|
|
|
|
|
|
|
# 检查是否在边界(加入容忍范围,避免贴边被误判)
|
|
# 检查是否在边界(加入容忍范围,避免贴边被误判)
|
|
|
is_left_boundary = x1 <= (rtdetr_bbox[0] - tol)
|
|
is_left_boundary = x1 <= (rtdetr_bbox[0] - tol)
|