Ricevute del cliente
Immagini e file TXT provenienti dal database, puliti e riorganizzati per addestramento ed estrazione dei campi.
Il progetto realizza un motore OCR completamente offline, progettato per elaborare le ricevute sui dispositivi Android. L’intera pipeline funziona localmente, senza API cloud o servizi esterni, ed è ottimizzata per l’hardware mobile. Il sistema include un framework di preelaborazione personalizzato, un modello OCR leggero per le ricevute e una conversione TensorFlow Lite pronta per l’integrazione in un ambiente di test Android.
Il cliente aveva bisogno di un sistema di lettura delle ricevute interamente offline, senza inviare dati a server esterni o utilizzare servizi OCR cloud come Azure Document Intelligence. La soluzione esistente dipendeva da API di terze parti e non poteva funzionare sul dispositivo. L’obiettivo era creare un motore OCR locale capace di elaborare ricevute reali estratte dal database del cliente, sufficientemente veloce per l’hardware mobile e compatibile con la futura app Android e React Native.
Ho progettato una pipeline di Machine Learning in tre fasi, incentrata sulle prestazioni offline. Il processo è iniziato con la preparazione e la pulizia di migliaia di immagini di ricevute e file TXT esportati dal database del cliente. Questi dati sono stati utilizzati per addestrare e adattare architetture OCR adatte a un impiego leggero su dispositivi mobili, tra cui Donut per l’OCR e RoBERTa per la classificazione.
Nella seconda fase ho sviluppato un’applicazione capace di eseguire sia l’OCR sia l’estrazione con LLM, utilizzando modelli compatti come Qwen-2-0.5B, risultati sufficientemente rapidi e precisi per l’inferenza sul dispositivo. Nella fase finale il sistema completo è stato convertito in TensorFlow Lite per funzionare localmente su Android, senza comunicazioni con il cloud.
Immagini e file TXT provenienti dal database, puliti e riorganizzati per addestramento ed estrazione dei campi.
Valutazione di Donut, RoBERTa e Qwen-2-0.5B per combinare lettura del testo, classificazione ed estrazione locale.
Conversione dei modelli e delle logiche di inferenza in un pacchetto TensorFlow Lite integrabile nell’app Android.
Schema descrittivo del flusso di lavoro del progetto.
3 fasi, dalla preparazione iniziale agli strumenti da consegnare.
Tutte le immagini delle ricevute e gli output TXT di Azure sono stati puliti, suddivisi e preparati per l’addestramento. Ogni riga delle ricevute è stata ritagliata e normalizzata e il dataset è stato riorganizzato per il fine tuning OCR e l’estrazione con LLM. Questa fase ha prodotto l’intera raccolta pronta per l’addestramento.
Sono stati testati diversi modelli OCR, tra cui Donut per l’estrazione del testo e RoBERTa per la classificazione. La combinazione migliore è stata addestrata sui dati del cliente. È stata consegnata un’applicazione capace di eseguire OCR ed estrazione con LLM, insieme a codice sorgente, pesi dei modelli e spiegazioni delle fasi di addestramento.
I modelli e le logiche di inferenza sono stati convertiti in TensorFlow Lite per l’impiego su dispositivi mobili. Il risultato è un pacchetto di codice completo e pronto per i test, conforme ai vincoli Android, integrabile nell’app del cliente e valutabile su dispositivi reali.
La pipeline offline è stata sviluppata, testata e consegnata con successo. Il motore OCR funzionava localmente, senza dipendenze dal cloud o chiamate ad API esterne. Il cliente ha potuto eseguire i modelli, esaminare il codice e testare diversi campioni di ricevute. La precisione raggiunta ha superato il 95%. Sono state fornite ulteriori versioni per semplificare l’esecuzione, con miglioramenti nella gestione dei percorsi e nelle prestazioni.
Le prestazioni riportate descrivono i risultati indicati nella scheda originale e i dati di quel progetto. Accuratezza e tempi di elaborazione dipendono da dataset, hardware e condizioni di test.
Descrivimi cosa vuoi ottenere e quali dati hai a disposizione. La prima call di 30 minuti è gratuita.