OCR
Da MontelLUG WIKI.
Riconoscimento ottico dei caratteri HOWTO sui programmi per fare OCR optical character recognition
Capita sovente di dover rielaborare il testo di documenti che abbiamo scansionato. Normalmente dalla scansione si ottengono documenti di tipo grafico, che non sono editabili con i programmi di editing del testo, quali LibreOffice Writer e affini.
E allora che si fa? Anche in Linux ci sono degli ottimi programmi che si occupano di svolgere questo lavoro: esaminare un documento di tipo grafico ed estrapolarne il testo. Purtroppo sono pochi i programmi che hanno una interfaccia grafica utile (invito chi li conosce ad integrare questa pagina), ma si può a tal proposito usare un comodo script che riporto di seguito.
Comandi utili da utilizzare
Se il file di origine è un PDF di una sola pagina è possibile utilizzare direttamente i comandi che seguono.
Prima fase: conversione del file di origine in PDF in un file tif, utilizzando il programma convert
convert -monochrome -density 300 sorgente.pdf nuovo_sorgente.tif
Ulteriori opzioni: in alcuni casi, convertire il file di origine in un file bianco e nero consente di ottenere migliori risultati: provare quindi con
convert -density 300 sorgente.pdf -depth 8 -background white +matte nuovo_sorgente.tif
Seconda fase: lettura del file .tif e salvataggio del testo contenuto, utilizzando il programma tesseract
tesseract nuovo_sorgente.tif testo.txt
Ulteriori opzioni: è possibile dire al programma in quale in lingua è scritto il testo; in più si può specificare se il testo è in una sola colonna o più: provare quindi con
tesseract -l ita -psm 4 nuovo_sorgente.tif testo.txt
Script per automatizzare il riconoscimento
Se, come di solito capita, il documento è composto di più pagine possiamo automatizzare la lettura dell'intero documento con il seguente script.
PAGINE=11 # imposta il numero delle pagine di cui si compone il PDF SORGENTE=sorgente.pdf # imposta il nome del file PDF da elaborare OUTPUT=testo.txt # imposta il nome del file di output RESOLUTION=400 # imposta la risoluzione utilizzata dallo scanner di elaborazione touch $OUTPUT for i in `seq 1 $PAGINE`; do convert -density $RESOLUTION $SORGENTE\[$i\] -depth 8 -background white +matte page$i.tif tesseract page$i.tif page$i -l ita -psm 4 cat $OUTPUT page$i.txt > temp.txt rm $OUTPUT rm page$i.tif rm page$i.txt mv temp.txt $OUTPUT done
Programmi con interfaccia grafica
- ocropy https://github.com/tmbdev/ocropy
- OCRFeeder scaricabile tramite repository
Ogni integrazione è ben gradita.