From d8b5a8dbe24bb036879a6841e6ea1f66fe86751a Mon Sep 17 00:00:00 2001 From: Jas Bogan Date: Sun, 19 Jul 2026 10:03:48 +0200 Subject: [PATCH] Fix duplicate cross-class form detections --- commonforms/inference.py | 1 + tests/inference_test.py | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/commonforms/inference.py b/commonforms/inference.py index f8d5a6b..52089cd 100644 --- a/commonforms/inference.py +++ b/commonforms/inference.py @@ -158,6 +158,7 @@ def extract_widgets( augment=True, imgsz=image_size, device=self.device, + agnostic_nms=True, ) widgets = {} diff --git a/tests/inference_test.py b/tests/inference_test.py index f70ec5b..0190510 100644 --- a/tests/inference_test.py +++ b/tests/inference_test.py @@ -5,7 +5,7 @@ import pytest from PIL import Image -from commonforms.inference import promote_signature_widgets +from commonforms.inference import FFDNetDetector, promote_signature_widgets from commonforms.utils import BoundingBox, Page, TextFragment, Widget @@ -71,6 +71,23 @@ def test_inference_ffdetr(tmp_path): doc.document.close() +def test_ffdnet_enables_class_agnostic_nms(): + class Model: + def predict(self, source, **kwargs): + assert len(source) == 1 + assert kwargs["agnostic_nms"] is True + return [] + + detector = FFDNetDetector.__new__(FFDNetDetector) + detector.device = "cpu" + detector.fast = False + detector.model = Model() + + pages = [Page(image=Image.new("RGB", (1, 1)), width=1, height=1, text_fragments=[])] + + assert detector.extract_widgets(pages) == {} + + def test_promote_signature_widgets_uses_signature_label_on_test_pdf(): pages = [ Page(