Cos’è l’OCR?
Il riconoscimento ottico dei caratteri (OCR) si riferisce al processo di identificazione automatica da un’immagine di caratteri o simboli appartenenti a un alfabeto specifico. In questo post ci concentreremo sulla spiegazione di come utilizzare l’OCR su Android.
Una volta riconosciuto il testo dell’immagine, può essere utilizzato per:
-
- Salvarlo nella memoria.
- Elabora o modifica.
- Tradurlo in un’altra lingua.
La popolarità degli smartphone unita a fotocamere sempre migliori ha portato a un aumento dell’uso di questo tipo di tecniche di riconoscimento e a una nuova categoria di applicazioni mobili che ne fanno uso.
Sul dispositivo o nel cloud?
Prima di utilizzare una libreria OCR, è necessario decidere dove il processo OCR deve avvenire, sullo smartphone o nel cloud.
A seconda delle esigenze dell’app, ogni approccio ha i suoi vantaggi e svantaggi.
Se l’app richiede, per esempio, di eseguire il riconoscimento dei caratteri senza connessione internet, il motore OCR sarà lanciato sul dispositivo stesso. In questo modo, l’invio di immagini a un server potrebbe essere evitato perché le fotocamere montate sui dispositivi attuali possono scattare foto di grandi dimensioni.
D’altra parte, le librerie OCR tendono a occupare molto spazio, essendo necessario scaricare ciascuna delle lingue da riconoscere, come spiegheremo di seguito.
Quali librerie possono essere utilizzate?
Nel seguente link a Wikipedia c’è una tabella comparativa con tutte le librerie OCR, piattaforme supportate, linguaggi di programmazione utilizzati nel suo sviluppo e altre informazioni rilevanti.
Link: http://en.wikipedia.org/wiki/ List_of_optical_character_recognition_software
In questo post useremo la libreria Tesseract, che si distingue dal resto. È Open Source, ha SDK, è stata creata da HP ed è attualmente sviluppata da Google.
OCR su Android usando la libreria Tesseract
Anche se Tesseract può essere eseguito su un server Linux come servizio cloud, in questo post implementeremo la libreria Tesseract in un’applicazione Android, lanciando il motore OCR sul dispositivo stesso.
Il progetto originale Tesseract per Android si chiama Tesseract Android Tools e contiene strumenti per compilare le librerie Tesseract e Leptonica per l’uso sulla piattaforma Android, e una API Java per accedere a queste librerie compilate nativamente.
Link: https://github.com/rebbix/tesseract-android-tools/tree/master/tesseract-android-tools
Per il nostro esempio, useremo un fork di Tesseract Android Tools, che aggiunge più funzionalità.
Link: https://github.com/rmtheis/tess-two
Esempio OCR su Android
Abbiamo bisogno di alcuni semplici passi per eseguire OCR su Android:
Considerazioni
- La qualità del riconoscimento può variare a seconda delle condizioni di illuminazione dell’immagine, la risoluzione della fotocamera, il carattere del testo, la dimensione del testo e altri…
- Per ottenere la massima qualità possibile, è molto importante che il testo sia centrato nell’immagine e che l’immagine sia correttamente a fuoco.
Anteprima usando OCR in un’app per traduttori
Il seguente video mostra parte dell’app che sto sviluppando per il mio progetto finale di laurea (TFG), dove uso le tecniche OCR descritte.