fix: pyzbar FP sur tableaux — carrés noirs sur dates/heures dans les grilles

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) <noreply@anthropic.com>
This commit is contained in:
2026-03-31 15:27:52 +02:00
parent 2f19f7c470
commit 51c75558bc

View File

@@ -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],