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:
@@ -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],
|
||||
|
||||
Reference in New Issue
Block a user