OCR con tesseract in XSane

Da Linux@P2P Forum Italia.

Segnali009.png Convenzioni Segnali009.png
All'inizio di ogni comando troverete uno di questi due simboli: $ (dollaro) e # (cancelletto). La presenza di $ indica che il comando può essere eseguito anche come normale utente, mentre il simbolo # indica che il comando che lo segue deve essere eseguito con privilegi di amministratore (root). Da utenti normali è possibile divenire root in questo modo: da terminale, si digiti:
$ su

oppure, su Ubuntu e varianti:

$ sudo su

Verrà richiesta la password di amministratore (su Ubuntu e varianti quella dell'utente): per motivi di sicurezza e riservatezza non verrà mostrata durante la digitazione.

A questo punto (si noti # al posto di $, segno che ora si è root) sarà possibile lanciare il comando:

# comando

NOTA: per Ubuntu e varianti, nel caso si necessiti di eseguire solo pochi comandi, esiste un'alternativa: basta far precedere il comando da eseguire da "sudo", in questo modo:

$ sudo comando

Per altre indicazioni sulle convenzioni della linea di comando vedere "introduzione all'uso della shell"

Xsane-logo2.jpg

XSane è il front-end più diffuso per la gestione degli scanner e dispone della possibilità di inviare direttamente l'immagine acquisita con il vostro scanner ad un motore OCR per la trasformazione in testo editabile. Xsane utilizza normalmente gocr, che però dà risultati alquanto deludenti. Un ottimo motore OCR su riga di comando, che invece fornisce risultati paragonabili a softare commerciali è tesseract. Purtroppo tesseract non può interfacciarsi direttamente con XSane perchè prevede una sintassi di input differente da gocr e non supporta l'input in formato .pnm fornito da Xsane.

gocr supporta un input del tipo:

$ gocr -i filegrafico -o filetesto

ed è in questo formato che Xsane effettua la chiamata all'OCR, mentre tesseract richiede la seguente sintassi:

$ tesseract filegrafico.tif filetesto

Spulciando la rete ho trovato uno script per interfacciare le chiamate di XSane con tesseract, ma funziona solo con la V.2 e con il pieno supporto dell'opzione -l language. La versione di tesseract recuperabile nei repositories è attualmente la 1.02-3, che non supporta la localizzazione. Inoltre, nella v.2 ci sono ancora problemi nell'installazione dei file di lingua.

Lo script, con piccole modifiche, può però essere utilizzato anche con tesseract V1.02-3.

Ecco come fare.

Indice

Prerequisiti

tesseract non accetta input in formato .pnm e pertanto serve una suite di conversione grafica su linea di comando, chiamata imagemagick per effetuare la conversione in .tif.

Installiamola con il nostro gestore di pacchetti, su distro debian-based l'operazione si riduce a:

# apt-get install imagemagick

poi installiamo tesseract, anche qui su distro debia-based la procedura si riduce a dare:

# apt-get install tesseract-ocr

verrà installato automaticamente anche tesseract-ocr-data.

Si possono effetuare entrambe le operazioni da synaptic o dal front-end grafico del vostro gestore di pacchetti.

Creare lo script

Ora bisogna impostare lo script. Create un file di testo vuoto, incollate questo codice e salvatelo con il nome xsane2tess.

Lo script richiede una directory tmp nella vostra home, che andrà creata

$ mkdir ~/tmp

Assegnate i permessi allo script e rendetelo eseguibile

# chmod a+rx xsane2tess

Infine copiatelo nella directory dei binari per renderlo disponibile a tutti gli utenti del sistema:

# cp xsane2tess /usr/bin

Eseguiti questi passaggi sarà possibile richiamare lo script come un normale comando di sistema.

Impostare XSane

A questo punto aprite XSane ed andate in Preferenze -> impostazioni -> OCR

Settate il campo Comando OCR con

xsane2tess

il campo Opzione file di ingresso con

-i

il campo Opzione file di uscita con

-o

confermate con OK. Ora XSane potrà effettuare la chiamata allo script, che a sua volta convertirà il file grafico e produrrà il file di testo.

Lo script crea di volta in volta dei file di lavoro in ~/tmp, che vengono cancellati dallo script alla fine delle operazioni, ad eccezione del file xsane2tess.log, che contiene eventuali errori.

E' un file minuscolo, che cresce di pochi byte ad ogni operazione OCR, ma di tanto in tanto conviene andare a cancellarlo manualmente.

Usare tesseract in standalone con la sua GUI

Xsane, per quanto valido non è più incluso di default nelle distribuzioni *buntu.

Lo strumento di default per la scansione di documenti è oggi Simple Scan, che non consente l'integrazione diretta con tesseract.

Fortunantamente esiste un buon progetto di frontend grafico per tesseract: gimagereader che permette di effettuare l'OCR su qualsiasi file grafico e .PDF, impostando anche i layout di localizzazione di tesseract (lingue). Si può scaricare il pacchetto .deb e salvarlo.

Quindi, se non l'habbiamo già fatto, installiamo tesseract ed il file di lingua per l'italiano

sudo apt-get install tesseract-ocr tesseract-ocr-ita

installiamo il pacchetto del frontend grafico precedentemente scaricato

sudo gdebi gimagereader_0.7-2_all.deb

Naturalmente se siete in ambiente grafico basterà un doppio click sul .deb

lanciamolo (sarà presente anche nel menu di gnome nella categoria "grafica")

gimagereader

settiamo la lingua di default:

File > Configure , cliccare sul pulsante di selezione della lingue e selezionare italiano (it_IT) > Applica.

L'interfaccia, seppur ancora in inglese è talmente semplice da non richiedere spiegazioni.

Strumenti personali
Namespace
Varianti
Azioni
Navigazione
CollectionTricks
Siti amici
Strumenti