3.1 KiB
3.1 KiB
Aggiornamento 2026-05-16 19:46
Valutazione YOLO digits come OCR alternativo
Abbiamo analizzato il progetto thawro/yolov8-digits-detection:
- repository: https://github.com/thawro/yolov8-digits-detection
- modello ONNX disponibile: https://huggingface.co/spaces/thawro/yolov8-digits-detection/tree/main/models
L'idea e' usare YOLO non per trovare il gaylord o l'etichetta, ma per leggere le cifre dentro il crop etichetta:
- il client
flywms_navigation.pyindividua gaylord ed etichetta come oggi; - il server WMS riceve il crop dell'etichetta;
- il server passa il crop a un detector YOLO digits;
- il detector restituisce bbox e classe delle singole cifre;
- il server ordina le cifre da sinistra a destra;
- il codice UDC finale e' la concatenazione delle cifre riconosciute;
- 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.onnxe' 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.onnxin una cartella locale, ad esempiomodels/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
onnxruntimeoppure OpenCV DNN per l'inferenza; - restituire sempre un risultato conservativo:
- codice numerico solo se la sequenza supera i controlli minimi;
udc non determinatoin 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':
- integrare il modello come modalita' sperimentale separata;
- non sostituire ancora EasyOCR/Tesseract;
- eseguire test sui crop etichetta salvati dal nostro server;
- confrontare errori e tempi rispetto a EasyOCR e Tesseract;
- decidere se basta il modello esistente oppure serve fine-tuning su nostre etichette.