Come eseguire l’OCR dalla riga di comando di Linux utilizzando Tesseract

È possibile estrarre il testo dalle immagini sulla riga di comando di Linux utilizzando il motore OCR Tesseract. È veloce, preciso e funziona in circa 100 lingue. Ecco come usarlo.

Riconoscimento ottico dei caratteri

Riconoscimento ottico dei caratteri (OCR) è la capacità di guardare e trovare parole in un’immagine, quindi estrarle come testo modificabile. Questo semplice compito per gli esseri umani è molto difficile da svolgere per i computer. I primi sforzi erano goffi, per non dire altro. I computer erano spesso confusi se il carattere tipografico o le dimensioni non erano di gradimento del software OCR.

Tuttavia, i pionieri in questo campo erano ancora tenuti in grande considerazione. Se hai perso la copia elettronica di un documento, ma hai ancora una versione stampata, OCR potrebbe ricreare una versione elettronica modificabile. Anche se i risultati non erano accurati al 100%, questo è stato comunque un ottimo risparmio di tempo.

Con un po ‘di riordino manuale, riavresti il ​​tuo documento. Le persone perdonavano gli errori commessi perché capivano la complessità del compito che doveva affrontare un pacchetto OCR. Inoltre, era meglio che riscrivere l’intero documento.

Da allora le cose sono migliorate notevolmente. L’applicazione Tesseract OCR, scritta da Hewlett Packard, iniziato negli anni ’80 come applicazione commerciale. Era open source nel 2005 ed è ora supportato da Google. Ha funzionalità multilingue, è considerato uno dei sistemi OCR più accurati disponibili e puoi usarlo gratuitamente.

Installazione di Tesseract OCR

Per installare Tesseract OCR su Ubuntu, usa questo comando:

sudo apt-get install tesseract-ocr

sudo apt installa tesseract-ocr in una finestra di terminale.

Su Fedora, il comando è:

sudo dnf install tesseract

sudo dnf installa tesseract in una finestra di terminale.

Su Manjaro, devi digitare:

sudo pacman -Syu tesseract

sudo pacman -Syu tesseract in una finestra di terminale.

Utilizzando Tesseract OCR

Porremo una serie di sfide a Tesseract OCR. La nostra prima immagine che contiene testo è un estratto dal considerando 63 del Regolamento generale sulla protezione dei dati. Vediamo se OCR è in grado di leggere questo (e rimanere sveglio).

estratto dal Considerando 63 del GDPR

È un’immagine complicata perché ogni frase inizia con un debole numero in apice, tipico dei documenti legislativi.

Dobbiamo fornire al comando tesseract alcune informazioni, tra cui:

Il nome del file immagine che vogliamo che elabori.
Il nome del file di testo che creerà per contenere il testo estratto. Non dobbiamo fornire l’estensione del file (sarà sempre .txt). Se esiste già un file con lo stesso nome, verrà sovrascritto.
Possiamo usare l’opzione –dpi per dire a tesseract cosa è il file punti per pollice (dpi) la risoluzione dell’immagine è. Se non forniamo un valore dpi, tesseract proverà a capirlo.

Il nostro file immagine si chiama “recital-63.png” e la sua risoluzione è di 150 dpi. Creeremo un file di testo da esso chiamato “recital.txt”.

Il nostro comando ha questo aspetto:

tesseract recital-63.png recital --dpi 150

tesseract recital-63.png recital --dpi 150 in una finestra terminale.

I risultati sono molto buoni. L’unico problema sono gli apici: erano troppo deboli per essere letti correttamente. Un’immagine di buona qualità è fondamentale per ottenere buoni risultati.

Testo estratto dal considerando 63.

tesseract ha interpretato i numeri in apice come virgolette (“) e simboli dei gradi (°), ma il testo effettivo è stato estratto perfettamente (il lato destro dell’immagine doveva essere ritagliato per adattarsi qui).

Il carattere finale è un byte con il valore esadecimale di 0x0C, che è un ritorno a capo.

Di seguito c’è un’altra immagine con testo di diverse dimensioni, sia in grassetto che in corsivo.

Immagine con testo di diverse dimensioni in grassetto e corsivo.

Il nome di questo file è “bold-italic.png”. Vogliamo creare un file di testo chiamato “bold.txt”, quindi il nostro comando è:

tesseract bold-italic.png bold --dpi 150

tesseract bold-italic.png bold --dpi 150 in una finestra di terminale.

Questo non ha posto problemi e il testo è stato estratto perfettamente.

testo estratto da grassetto-corsivo.png.

Utilizzo di lingue diverse

Tesseract OCR supporta circa 100 lingue. Per usare una lingua, devi prima installarla. Quando trovi la lingua che desideri utilizzare nell’elenco, prendi nota della sua abbreviazione. Installeremo il supporto per il gallese. La sua abbreviazione è “cym”, che è l’abbreviazione di “Cymru”, che significa gallese.

Il pacchetto di installazione si chiama “tesseract-ocr-” con l’abbreviazione della lingua contrassegnata alla fine. Per installare il file della lingua gallese in Ubuntu, useremo:

sudo apt-get install tesseract-ocr-cym

sudo apt-get install tesseract-ocr-cym in una finestra di terminale.

L’immagine con il testo è sotto. È la prima strofa dell’inno nazionale gallese.

immagine contenente il testo del primo verso dell'inno nazionale gallese.

Vediamo se Tesseract OCR è all’altezza della sfida. Useremo l’opzione -l (lingua) per far conoscere a tesseract la lingua in cui vogliamo lavorare:

tesseract hen-wlad-fy-nhadau.png anthem -l cym --dpi 150

tesseract hen-wlad-fy-nhadau.png anthem -l cym --dpi 150 in una finestra di terminale.

tesseract si adatta perfettamente, come mostrato nel testo estratto di seguito. Da iawn, Tesseract OCR.

Testo gallese estratto.

Se il tuo documento contiene due o più lingue (come un dizionario dal gallese all’inglese, ad esempio), puoi utilizzare un segno più (+) per dire a tesseract di aggiungere un’altra lingua, in questo modo:

tesseract image.png textfile -l eng+cym+fra

Utilizzo di Tesseract OCR con i PDF

Il comando tesseract è progettato per funzionare con i file di immagine, ma non è in grado di leggere i PDF. Tuttavia, se è necessario estrarre del testo da un PDF, è possibile utilizzare prima un’altra utilità per generare una serie di immagini. Una singola immagine rappresenterà una singola pagina del PDF.

L’utilità pdftppm di cui hai bisogno dovrebbe essere già installato sul tuo computer Linux. Il PDF che utilizzeremo per il nostro esempio è una copia del documento fondamentale di Alan Turing sull’intelligenza artificiale, “Computing Machinery and Intelligence”.

PDF del frontespizio di

Usiamo l’opzione -png per specificare che vogliamo creare file PNG. Il nome del file del nostro PDF è “turing.pdf”. Chiameremo i nostri file di immagine “turing-01.png”, “turing-02.png” e così via:

pdftoppm -png turing.pdf turing

pdftoppm -png turing.pdf turing in una finestra di terminale.

Per eseguire tesseract su ogni file immagine utilizzando un singolo comando, è necessario utilizzare un file per loop. Per ciascuno dei nostri file “turing-nn.png” eseguiamo tesseract e creiamo un file di testo chiamato “text-” più “turing-nn” come parte del nome del file immagine:

for i in turing-??.png; do tesseract "$i" "text-$i" -l eng; done;

per i in turing - ??. png;  fare tesseract

Per combinare tutti i file di testo in uno, possiamo usare cat:

cat text-turing* > complete.txt

cat text-turing *> complete.txt in una finestra di terminale. ”  larghezza = “646 ″ altezza =” 57 “onload =” pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this); ”  onerror = “this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”> </p>
<p> Allora, come ha fatto?  Molto bene, come puoi vedere di seguito.  La prima pagina sembra piuttosto impegnativa, però.  Ha diversi stili e dimensioni di testo e decorazioni.  C’è anche una “filigrana” verticale sul bordo destro della pagina. </p>
<p> Tuttavia, l’output è vicino all’originale.  Ovviamente la formattazione è andata perduta, ma il testo è corretto. </p>
<p> <img loading =

La filigrana verticale è stata trascritta come una riga senza senso nella parte inferiore della pagina. Il testo era troppo piccolo per essere letto con precisione da tesseract, ma sarebbe stato abbastanza facile trovarlo ed eliminarlo. Il risultato peggiore sarebbe stato caratteri randagi alla fine di ogni riga.

Curiosamente, le singole lettere all’inizio dell’elenco di domande e risposte a pagina due sono state ignorate. La sezione del PDF è mostrata di seguito.

Un elenco di domande e risposte dal PDF dell'articolo di Turing.

Come puoi vedere sotto, le domande rimangono, ma la “Q” e la “A” all’inizio di ogni riga sono andate perse.

Testo estratto dalla pagina di domande e risposte del PDF di Turing.

Anche i diagrammi non verranno trascritti correttamente. Diamo un’occhiata a cosa succede quando proviamo a estrarre quello mostrato sotto dal PDF di Turing.

Un diagramma di

Come puoi vedere nel nostro risultato qui sotto, i caratteri sono stati letti, ma il formato del diagramma è andato perso.

Testo estratto da un diagramma nel PDF di Turing.

Ancora una volta, tesseract ha lottato con le piccole dimensioni dei pedici e sono stati resi in modo errato.

In tutta onestà, però, è stato comunque un buon risultato. Non siamo stati in grado di estrarre un testo semplice, ma questo esempio è stato scelto deliberatamente perché rappresentava una sfida.

Una buona soluzione quando ne hai bisogno

L’OCR non è qualcosa che dovrai usare quotidianamente. Tuttavia, quando se ne presenta la necessità, è bene sapere che hai uno dei migliori motori OCR a tua disposizione.