Bug découvert pendant test live du 2026-05-08. _text_match_fuzzy valide la présence du texte dans le crop (560×560 px) sans vérifier sa position au point cliqué. Sur onglets serrés (3 px), valide à tort les clics adjacents. À fixer post-démo Kerella - Option B préférée (bboxes EasyOCR + distance). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.0 KiB
Bug — Pré-check OCR spatialement aveugle
Date de découverte
2026-05-08, lors du test live du commit 2e76b44ff (log instrumentation)
Constat
Sur les onglets adjacents (Imagerie / Notes médicales à 3 px d'écart dans la maquette urgences), le pré-check OCR valide à tort des clics sur le mauvais onglet.
Cause technique
La fonction _text_match_fuzzy (resolve_engine.py:2285) vérifie la PRÉSENCE du texte attendu dans le crop OCR (radius_px=280, soit zone 560×560 px) mais pas sa POSITION par rapport au point cliqué.
Le crop englobe plusieurs onglets adjacents → n'importe lequel des onglets matchant valide le clic.
Logs exemples
Trois logs représentatifs du test du 2026-05-08 :
mai 08 22:16:26.977119 [REPLAY] Pre-check OCR ACTIF : 'Examens cliniques' attendu @ (0.2280, 0.2805) via hybrid_text_direct — observed='Al Voice Generator Bookmarks archivtech com Maquette POC ssier en cours Codage ' is_valid=True (115ms)
mai 08 22:16:33.048260 [REPLAY] Pre-check OCR ACTIF : 'Imagerie' attendu @ (0.2305, 0.2676) via hybrid_text_direct — observed='9 Al Voice Generator_ Bookmarks archivtech.com Maquette POC sier en cours Statis' is_valid=True (86ms)
mai 08 22:16:43.045705 [REPLAY] Pre-check OCR ACTIF : 'Notes médicales' attendu @ (0.2020, 0.2800) via template_matching — observed='18 Al Voice Generator_ Bookmarks archivtech. Urgences Maquette POC Dossier en co' is_valid=True (99ms)
Options de fix
Option A — Réduire radius_px
- Pro : simple (1 ligne)
- Con : casse la validation des textes longs ("Synthèse Urgences")
Option B — Bboxes individuelles EasyOCR + vérification distance
- Pro : robuste, gère textes longs et onglets serrés
- Con : changement de logique de _text_match_fuzzy, pas tweak
Décision
Reporté à post-démo Kerella. À traiter à froid. Préférence : Option B (plus pérenne).