Riconoscimento automatico dei caratteri (OCR) con Linux Ubuntu


Problema: ho molti fogli di testo da copiare, e metterli sul pc. Come faccio?

Soluzione 1: mi armo di pazienza, mi siedo ed inizio a copiare tutto, magari con qualcuno affianco che mi aiuti.
Soluzione 2: uso un software OCR che faccia tutto il lavoro per me.

Vediamo come fare per usare un sistema OCR su Linux Ubuntu.
Userò un programma, Tesseract OCR che è rilasciato sotto licenza Apache License v2.0

I sistemi OCR ovvero “Optical Character Recognition” (tradotto risulta essere: “riconoscimento ottico dei caratteri” od anche OCR) sono programmi dedicati alla conversione di un’immagine contenente testo in testo modificabile con un normale programma di videoscrittura. Questi programmi di OCR si avvalgono dei progressi dell’intelligenza artificiale e dell’evoluzione degli algoritmi legati al riconoscimento delle immagini.

Preparazione del sistema

Come sempre, prima di tutto è consigliabile aggiornare il computer.
Ora dobbiamo avere qualcosa per acquisire immagini. In genere, avremo bisogno di uno scanner, in primo luogo se lo scanner che abbiamo è supportato. Come ho scritto qualche articolo fa, potete trovare la lista degli scanner supportati qui: sane-project.

Imagemagick

La versione attuale di tesseract che sta nei repo di ubuntu, supporta solo file tiff compressi con G3 oppure non compressi.
Per sicuri che tesseract possa processare le nostre immagini, dovremo convertirle in tiff non compresse. Dal momento che la conversione di immagini con gimp per trasformarle in tiff non compresse è inutilizzabile, useremo un programma: imagemagick, che ho già recensito. Installiamo quindi Imagemagick dai repositories di Ubuntu, con Synaptic.

Tesseract

Rimanendo su synaptic, installiamo i pacchetti:

tesseract-ocr
tesseract-ocr-data

che sono disponibili nei repositories di Ubuntu.

Preparazione delle immagini

Per ottenere i migliori risultati da tesseract, abbiamo bisogno di ottimizzare le immagini. Mi raccomando: per fare questo genere di cose, usiamo immagini con una risoluzione di circa 200dpi.

Ho usato Gimp nei prossimi tre passaggi.

Pulizia dell’immagine

Andiamo a rimuovere ogni contenuto non alfa-numerico dall’immagine, in modo tale da non far produrre a tesseract dei blocchi di testo caotici. Possiamo fare questa operazione per mezzo del semplice strumento cancellino, (scelta rapida Maiusc+E).

Soglia del colore

Convertiamo l’immagine da RGB a scala di grigi

Con gimp:

Immagine -> Modalità -> Scala di grigi

Usiamo adesso la funzione di thereshold per ridurre eventuali disturbi e rimuovere macchie. Scegliamo il menù Strumenti -> Colore -> Soglia.
Ci si apre una finestra, dove, per mezzo di una slide (nell’immagine sotto è la freccetta nera che sta sotto alla barra colorata), potremo definire il limite tra area nera e bianca. Questo ci permetterà di eliminare eventuali “grigi” indesiderati nell’immagine.

ScreenShot1-OCR UBUNTU

Bianco e nero

Per permettere il riconoscimento del testo, andiamo a ridurre i colori da “scala di grigi” ad un bianco e nero assoluto. Scegliamo quindi:

Immagine -> Modalità -> Indicizzata

ScreenShot2-OCR UBUNTU

Dobbiamo essere sicuri di non aver abilitato il dithering in quest’ultima finestra.
A questo punto salviamo l’immagine ed usciamo da Gimp

Conversione ad immagine tiff

Adesso dobbiamo convertire l’immagine a tiff non compressa.
Da terminale andiamo ad usare il comando “convert”, con questa sintassi:

convert %file_sorgente% %file_destinazione%

esempio:

convert ciao.jpg ciao.tif

Usare Tesseract per ottenere il file di testo

A questo punto tutti i preparativi sono stati fatti, e possiamo prendere tesseract.

tesseract %file_tiff_da_far_leggere% %nome_del_file_di_uscita%

esempio:

tesseract ciao.tif risultato

Tesseract aggiungerà l’estensione al file di uscita da solo.


Lascia un Commento!