pipeline in linea single thread
This commit is contained in:
69
aggiornamento-2026-05-16-19-46.md
Normal file
69
aggiornamento-2026-05-16-19-46.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# 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.
|
||||
|
||||
Reference in New Issue
Block a user