# 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: 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: ```ini 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.