From 51c75558bcce87657fcc061b2676ec7bc5fa1e29 Mon Sep 17 00:00:00 2001 From: Domi31tls Date: Tue, 31 Mar 2026 15:27:52 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20pyzbar=20FP=20sur=20tableaux=20=E2=80=94?= =?UTF-8?q?=20carr=C3=A9s=20noirs=20sur=20dates/heures=20dans=20les=20gril?= =?UTF-8?q?les?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit pyzbar interprétait les cellules de tableaux trackare comme des codes-barres et les noircissait. Ajout d'un seuil minimum de surface (2000 px²) pour filtrer les faux positifs sur les petites zones. Co-Authored-By: Claude Opus 4.6 (1M context) --- anonymizer_core_refactored_onnx.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/anonymizer_core_refactored_onnx.py b/anonymizer_core_refactored_onnx.py index f5ae471..6c57ea0 100644 --- a/anonymizer_core_refactored_onnx.py +++ b/anonymizer_core_refactored_onnx.py @@ -3873,10 +3873,16 @@ def _rasterize_page(args): ry1 = y1 * zoom draw.rectangle([rx0, ry0, rx1, ry1], fill=(0, 0, 0)) # Détecter et noircir les codes-barres et QR codes + # Filtre : ignorer les faux positifs pyzbar sur les tableaux + # (les grilles de cellules sont parfois interprétées comme des codes-barres) + _MIN_BARCODE_AREA = 2000 * zoom * zoom # minimum ~2000 px² en taille originale try: from pyzbar.pyzbar import decode as _pyzbar_decode for symbol in _pyzbar_decode(img): r = symbol.rect + area = r.width * r.height + if area < _MIN_BARCODE_AREA: + continue # Trop petit — probablement un FP sur une cellule de tableau margin = int(5 * zoom) draw.rectangle([r.left - margin, r.top - margin, r.left + r.width + margin, r.top + r.height + margin],