mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-09 21:04:49 +08:00
### What problem does this PR solve? Package refactor and PDF post process. ### Type of change - [x] Refactoring --------- Co-authored-by: Claude <noreply@anthropic.com>
62 lines
2.2 KiB
Go
62 lines
2.2 KiB
Go
package table
|
|
|
|
import (
|
|
"testing"
|
|
|
|
pdf "ragflow/internal/deepdoc/parser/pdf/type"
|
|
)
|
|
|
|
// ---- regionOverlapsBox ----
|
|
|
|
func TestRegionOverlapsBox_StrongOverlap(t *testing.T) {
|
|
region := pdf.DLARegion{X0: 0, Y0: 0, X1: 216, Y1: 108} // DLA coords at 216 DPI
|
|
box := pdf.TextBox{X0: 0, X1: 100, Top: 0, Bottom: 50}
|
|
if !regionOverlapsBox(region, box, 3.0) {
|
|
t.Error("full overlap should match")
|
|
}
|
|
}
|
|
|
|
func TestRegionOverlapsBox_NoOverlap(t *testing.T) {
|
|
region := pdf.DLARegion{X0: 0, Y0: 0, X1: 216, Y1: 108}
|
|
box := pdf.TextBox{X0: 500, X1: 600, Top: 500, Bottom: 550}
|
|
if regionOverlapsBox(region, box, 3.0) {
|
|
t.Error("no overlap should return false")
|
|
}
|
|
}
|
|
|
|
func TestRegionOverlapsBox_WeakOverlap(t *testing.T) {
|
|
// Overlap at 30% → below 40% threshold → false.
|
|
region := pdf.DLARegion{X0: 0, Y0: 0, X1: 90, Y1: 90} // 30x30 at scale 3
|
|
box := pdf.TextBox{X0: 0, X1: 100, Top: 0, Bottom: 100} // overlap = 30*30/10000 = 9%? No: 30x30=900 / 10000 = 9%
|
|
if regionOverlapsBox(region, box, 3.0) {
|
|
t.Error("9% overlap should return false")
|
|
}
|
|
// Overlap ≥ 40% → should match (Python thr=0.4).
|
|
// box 100x100=10000 area; region 100x40=4000 → exactly 40%.
|
|
region2 := pdf.DLARegion{X0: 0, Y0: 0, X1: 300, Y1: 120, Label: "table"} // 100x40 at scale 3
|
|
if !regionOverlapsBox(region2, box, 3.0) {
|
|
t.Error("40% overlap should match (>= 0.4)")
|
|
}
|
|
// Region that covers most of the box → should match
|
|
region3 := pdf.DLARegion{X0: 0, Y0: 0, X1: 270, Y1: 270} // 90x90 at scale 3
|
|
if !regionOverlapsBox(region3, box, 3.0) {
|
|
t.Error("81% overlap should match")
|
|
}
|
|
}
|
|
|
|
func TestRegionOverlapsBox_ThresholdAt040(t *testing.T) {
|
|
// Exact 40% overlap: 100x100 box, region just covering 40%
|
|
// 0.4 * 10000 = 4000. Need region with area 4000 in box space.
|
|
// 63.2*63.2 ≈ 3994. Let's use 100x40 = 4000.
|
|
box := pdf.TextBox{X0: 0, X1: 100, Top: 0, Bottom: 100}
|
|
region := pdf.DLARegion{X0: 0, Y0: 0, X1: 300, Y1: 120, Label: "table"} // 100x40 at scale 3
|
|
if !regionOverlapsBox(region, box, 3.0) {
|
|
t.Error("exact 40% overlap should match (>= 0.4)")
|
|
}
|
|
// 39% overlap should NOT match
|
|
region2 := pdf.DLARegion{X0: 0, Y0: 0, X1: 300, Y1: 117, Label: "table"} // 100x39 at scale 3
|
|
if regionOverlapsBox(region2, box, 3.0) {
|
|
t.Error("39% overlap should NOT match")
|
|
}
|
|
}
|