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

3.1 KiB

Aggiornamento 2026-05-16 19:46

Valutazione YOLO digits come OCR alternativo

Abbiamo analizzato il progetto thawro/yolov8-digits-detection:

L'idea e' usare YOLO non per trovare il gaylord o l'etichetta, ma per leggere le cifre dentro il crop etichetta:

  1. il client flywms_navigation.py individua gaylord ed etichetta come oggi;
  2. il server WMS riceve il crop dell'etichetta;
  3. il server passa il crop a un detector YOLO digits;
  4. il detector restituisce bbox e classe delle singole cifre;
  5. il server ordina le cifre da sinistra a destra;
  6. il codice UDC finale e' la concatenazione delle cifre riconosciute;
  7. se la sequenza non e' valida, il server deve rispondere udc non determinato.

Considerazioni tecniche

Il progetto dichiara un dataset basato su cifre manoscritte HWD+, ma il demo video mostra anche riconoscimento su caratteri stampati. Questo significa che non va escluso a priori: va provato sui nostri crop reali, perche' potrebbe generalizzare abbastanza bene sulle etichette del video.

Vantaggi:

  • modello piccolo: yolo.onnx e' circa 12 MB;
  • potenzialmente molto piu' leggero di EasyOCR;
  • puo' evitare il caricamento di EasyOCR/PyTorch nel server WMS;
  • architettura adatta al nostro caso, perche' il codice UDC e' composto da cifre;
  • output interpretabile: bbox, confidenza e classe di ogni cifra.

Rischi:

  • il dominio di training non e' identico alle nostre etichette industriali;
  • alcune cifre critiche, ad esempio 8 e 2, potrebbero comunque essere confuse;
  • serve una fase di validazione su immagini reali delle nostre etichette;
  • la licenza del repository/modello deve essere verificata prima di un uso oltre la demo;
  • il modello riconosce singole cifre, quindi dovremo implementare noi ordinamento, filtri e validazione.

Proposta di integrazione

Non conviene importare tutto il progetto come package. Conviene invece:

  • scaricare/posizionare il modello yolo.onnx in una cartella locale, ad esempio models/yolo_digits/yolo.onnx;
  • aggiungere una modalita' OCR nel server:
wms_ocr_mode = yolo_digits
wms_yolo_digits_model = models/yolo_digits/yolo.onnx
wms_yolo_digits_conf = 0.35
wms_yolo_digits_expected_len = 6
  • implementare nel server una classe tipo YoloDigitsOcr;
  • usare onnxruntime oppure OpenCV DNN per l'inferenza;
  • restituire sempre un risultato conservativo:
    • codice numerico solo se la sequenza supera i controlli minimi;
    • udc non determinato in caso di ambiguita', crop tagliato o confidenza insufficiente.

Decisione pratica

La strada e' promettente e probabilmente piu' coerente del generico OCR classico. La prova corretta da fare e':

  1. integrare il modello come modalita' sperimentale separata;
  2. non sostituire ancora EasyOCR/Tesseract;
  3. eseguire test sui crop etichetta salvati dal nostro server;
  4. confrontare errori e tempi rispetto a EasyOCR e Tesseract;
  5. decidere se basta il modello esistente oppure serve fine-tuning su nostre etichette.