Aprendre a reconèixer correctament el text d'una imatge amb tesseract i ocrfeeder.

Molts de vostès ja han de conèixer els programes de reconeixement òptic de caràcters (OCR), si és així s'han topat amb alguns que no reconeixen caràcters propis de l'idioma espanyol com la ñ, l'accent entre d'altres (ñ, o, ü).

Ara gràcies a tesseract i a el paquet tesseract-ocr-spa podrem reconèixer aquests caràcters i veurem com tractar certes imatges on els nivells de color o píxels no són els correctes.

Primer haurem d'instal·lar els següents programes:

tesseract-ocr
tesseract-ocr-spa
ocrfeeder

A Debian els aconsello instal·lar sense instal·lar els programaris recomanats:

sudo apt-get --no-install-recommends install ocrfeeder tesseract-ocr-spa tesseract-ocr

Si comptem amb una imatge (Document escanejat) en el qual la lletra sigui llegible serà possible reconèixer el text en un 90% aproximadament dels casos, les taules no seran reconegudes, si la imatge té 2 columnes aquest automàticament reconeixerà primer una columna i després l'altra per mantenir l'ordre de el text.

Existeixen 2 formes de reconèixer el text, una mitjançant la línia d'ordres en una terminal o mitjançant ocrfeeder, aquesta última requerirà més temps de processament:

Mètode de línia d'ordres:

tesseract "/entrada/fichero.jpg" "/salida/fichero.txt" -l spa -psm 3

Per a la conversió de múltiples imatges farem servir la següent comanda:

cd /carpeta/imagenes
find ./ -name "*.jpg" | sort | while read file; do tesseract "$file" "`basename "$file" | sed 's/\.[[:alnum:]]*$//'`.txt" -l spa -psm 3; done

Per unir els fitxers de text resultants en la carpeta farem servir la següent comanda amb el qual els paràgrafs quedessin units correctament.

cd /carpeta/imagenes
find ./ -name "*.txt" | sort | while read file; do cat "$file" | sed 's|^$|##|g' | tr '\n' " " | tr '##' "\n" >> Texto-unido.txt; done

Mètode amb ocrfeeder:
1- Obrim el programa ocrfeeder.
2- Editem el motor donant un clic a Eines - Motors OCR, vam seleccionar el motor esseract i donem un clic a editar, i on diu arguments de l'motor canviem la seqüència de comandaments per aquesta:

$IMAGE $FILE -l spa -psm 3 > /dev/null 2> /dev/null; cat $FILE.txt; rm $FILE $FILE.txt

3- Importem una imatge o una carpeta on es troben diverses imatges.
4- Donem un clic a identificar document, un cop identificat el document es pot seleccionar manualment que parts d'aquest seran imatges o text.
5- Abans d'exportar el document fem un clic a Edita - Edita pàgina, seleccionem la pàgina desitjada, la més usual és carta (letter).
6- Per exportar el document fem un clic a Fitxer - Exporta, vam seleccionar el format de sortida desitjat, si el document té imatges els aconsello fer servir el format odt o html, si és sol text el millor és fer servir el format Text Pla (txt) .

Això no acaba aquí perquè hi ha moltes fotocòpies la qualitat no és l'adequada, per reparar aquestes farem servir el gimp i el filtre repujat (Aquest procés pot ser lent):
1- Obrim la imatge amb el gimp.
2- Fem un clic a Filtres - Distorsions - Repujat, Seleccionem la casella mapa de relleu ajustem els nivells d'azimut a 162,25 aproximadament, elevació a 88,73 i profunditat en 6 o 3. Guardem la imatge amb un 100% de qualitat si és jpg, a exportar - nombre.jpg.

Opcionalment poden ajustar els nivells de blanc donant un clic a Colors - Nivells - acte.