Motore OCR offline per ricevute su Android
OCR • TensorFlow Lite • AI sul dispositivo • Analisi delle ricevute
OCR • TensorFlow Lite • AI sul dispositivo • Analisi delle ricevute
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.
Fasi del progetto
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.
Conclusione del progetto
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.
Risultati
Il sistema OCR e NLP ha superato il 95% di precisione sulle ricevute reali.
Elabora oltre 1.000 ricevute in pochi secondi, completamente offline.
Eliminazione dell’OCR cloud: l’intera pipeline funziona localmente.
Precisione migliorata con nuovi dati di ricevute ed esportazioni TXT di Azure.
Consegna di un modello TensorFlow Lite pronto per la distribuzione e l’integrazione Android.
⭐ Recensioni dei clienti