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.
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
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.