OCR neurale sui dispositivi mobili: CRAFT, CRNN, EasyOCR ed ExecuTorch
Il riconoscimento ottico dei caratteri (OCR) si è evoluto dai vecchi filtri di elaborazione immagini alle reti neurali profonde. Nelle applicazioni per smartphone, un flusso in due fasi è ormai lo standard: il detector localizza il testo, il recognizer legge i caratteri. Il classico pattern introdotto da EasyOCR può essere riproposto anche in locale, senza sgan sull'cloud. Questo articolo spiega il funzionamento di CRAFT e CRNN, i limiti di dimensione dell'immagine e il modo per portare l'approccio EasyOCR in un ambiente mobile con ExecuTorch.
CRAFT e CRNN: i due componenti della pipeline OCR
CRAFT, acronimo di Character Region Awareness for Text Detection, si occupa della localizzazione del testo. Invece di usare semplici caselle con ancor verb dal contorno, CRAFT calibrata una mappa di regione per i caratteri e una mappa di affinità. La prima mappa indica dove un carattere è presente; la seconda segnala se due caratteri adiacenti appartengono alla stessa parola. Questo approccio è molto efficace su testi ruotati, curvi o con density tipografie non troppo comuni.
Il lavoro di riconoscimento è svolto dalla CRNN, cioè una rete neurale convoluzionale ricorrente. La parte convolvione estrae le caratteristiche visive, poi una LSTM bidirezionale legge le feature come una sequenza e per la data CTC produce il testo finale. Poi è riapplicare la segmentazione a livello di singolo carattere, il che rende il modello più veloce e semplice per le librerie di pixel su smartphone.
Limiti della dimensione dell'immagine e vincoli hardware
Gli smartphone hanno una memoria RAM ridotta, una batteria limitata e un budget termico molto piccolo. Se si passa una foto angiagnale da 12 megapixel direttamente alla CRAFT, i tensimi intermedi diventano enormi e la latenza aumenta. Per posta si ridimensiona l'immagine a un lato di 512, 768 o 960 pixel, oppure si selezione solo un'area di interesse.
Il layout del modello è un'altro restrizione. ExecuTorch, come ma desktop, richiede in molti casi l'input con forma fissa: l'operatore è stato compilato per un tensore preciso. Pertanto la CRAFT viene esportata con profilo quadrato, ad esempio 768 per 768. Alla parte opposta il chirurgo CRNN usato con un'altezza fissa di 32 e una larghezza scelta tra 128, 256 e 512 pixel in base alla lunghezza del testo.
Un trucco efficace è ridurre il numero di pixel che attraversano la rete pesante. Prima della CRAFT si può applicare un semplice mettodo di rilevamento bordi, che individua i candidati zone di testo. A quel punto, la CRAFT e la CRNN processano solo piccole aree cropped, abbassando notevolmente tempo e memoria.
Portare l'approccio di EasyOCR in ExecuTorch
EasyOCR costruisce una libreria modulare: il rilevatore testo è basato su CRAFT, il riconoscimento usa una CRNN con diverse back opzioni base. Questo schema può essere esportato con pochi passaggi. La parte di PyTorch viene convertita nel formato nativo di ExecuTorch, senza passare per ONNX o TFLite. In questo modo non si perdono informazione di debug e il modello mantiene lo stesso comportamento del laboratorio.
Il primo passo è esportare CRAFT con un input di forma fissa e poi applicare la quantizzazione. La quantizzazione tipica da float32 a int8 riduce drasticamente il peso del file e accelera le operazioni sul chip mobile. Per la CRNN si preparano più varianti del modello, una con larghezza 128, una con 256 e una con 512, in modo da scegliere quella ideale in base al output del rilevatore.
Nel codice mobile, dopo il preprocessing, si esegue CRAFT, poi si decodifica le mappe e si estraggono i box contenenti testo. Questi box vengono ridimensionati all'inizio adatto alla CRNN. Infine il decoder CTC trasforma le probabilità emesse in stringa finale. Il risultato è una The OCR completamente offline, con bassa latenza e favore della privacy.
| Aspetto | CRAFT | CRNN |
|---|---|---|
| Ruolo | Rilevamento testo | Riconoscimento testo |
| Uscita | Mappa caratteri + mappa affinita | Sequenza di caratteri |
| Input su mobile | Profilo quadrato fisso | Larghezza fissa, altezza variabile |
| Costo tipico | Alto | Moderato sulle aree piccole |
In sintesi, CRAFT e CRNN rappresentano una base solida per l'ora metrica su smartphone. Le principale difficoltà sono la memoria, la temperatura e le dimensioni dell'input. Con l'uso di ExecuTorch e di opportune ottimizzazioni, quali ridimensionamento e quantizzazione, è possibile ottenere un OCR garantito veloce e offline per la maggior parte delle app.
Lavoriamo insieme
Hai bisogno di maggiori informazioni, aiuto con il tuo progetto o di sviluppare un'idea?
Che si tratti di una domanda semplice, un dubbio rapido o una chat di 5 minuti, mandami un messaggio—non costa nulla e sono sempre pronto ad aiutare. Mi piace ascoltare per capire il problema, essere creativo nelle soluzioni e puntare a idee semplici, affidabili e non complicate da realizzare rapidamente.
Contattami →