Files
flywms/aggiornamento-2026-05-16-17-19.md
2026-05-19 08:52:44 +02:00

2.1 KiB

Aggiornamento 2026-05-16 17:19

Milestone OCR alternativo

Stato corrente

EasyOCR e' stato giudicato troppo fragile e troppo pesante per la demo attuale:

  • confonde cifre critiche, ad esempio 8 e 2;
  • puo' consumare molta RAM;
  • puo' rallentare o bloccare i test;
  • non e' adatto a restituire codici WMS se la confidenza e' bassa.

La regola semantica decisa e':

meglio "udc non determinato" che un codice sbagliato

Decisione

Testare Tesseract come alternativa piu' leggera e piu' controllabile per OCR numerico.

La logica prevista:

  • whitelist solo cifre 0123456789;
  • piu' preprocess OpenCV;
  • consenso tra varianti;
  • soglia di confidenza;
  • fallback udc non determinato se il risultato e' assente o ambiguo.

Implementazione fatta

In flywms_wms_server.py:

  • aggiunto supporto a ocr_mode = tesseract;
  • aggiunto uso opzionale di pytesseract;
  • aggiunto controllo preventivo del binario tesseract.exe;
  • aggiunti preprocess:
    • grayscale;
    • sharpen;
    • Otsu threshold;
    • adaptive threshold;
    • Otsu invertito;
  • aggiunta logica di consenso;
  • se Tesseract manca, il server non resta appeso.

Ambiente

Wrapper Python installato:

pytesseract

Binario non trovato:

tesseract.exe

Verifica:

Tesseract fallback: tesseract.exe non trovato nel PATH
OcrServerResult(text='udc non determinato', raw_text='', confidence=0.0, backend='tesseract-missing', fallback_used=True)

Prossimi passi

  1. Installare Tesseract per Windows.
  2. Verificare se tesseract.exe entra nel PATH.
  3. Se non entra nel PATH, avviare il server con:
python flywms_wms_server.py --ocr-mode tesseract --tesseract-cmd "C:\Program Files\Tesseract-OCR\tesseract.exe"
  1. Testare sui crop etichetta gia' salvati.
  2. Se resta fragile, valutare una mini rete neurale dedicata ai 10 caratteri numerici.

Nota

Il file flywms_navigation.ini non e' ancora stato aggiornato con la voce wms_tesseract_cmd perche' in questa fase il patch tool non e' riuscito a scriverlo. Il server ha comunque default interni funzionanti.