miércoles, 19 de octubre de 2011

Escanear con OCR (Reconocimiento Óptico de Caracteres): xSane

Un programa para el Reconocimiento Óptico de Caracteres (en inglés OCR)  es una aplicación dirigida a la digitalización de textos. Identifica automáticamente símbolos o caracteres que pertenecen a un determinado alfabeto, a partir de una imagen para almacenarla en forma de datos con los que podremos interactuar mediante un programa de edición de texto o similar. En este tema voy a explicar como hacerlo con el programs xSane

Además del modo de hacer un OCR  que explico en este tema, también se puede hacer como lo explico con gscan2pdf: http://hatteras-blog.blogspot.com.es/2011/10/escanear-con-ocr-reconocimiento-optico.html o con ocrFeeder: http://hatteras-blog.blogspot.com.es/2011/10/escanear-con-ocr-reconocimiento-optico_28.html

xSane + sxane2tess + tesseract-ocr

El programa xSane tal y como se instala por defecto no permite usar el motor de OCR tesseract, pero con unos pocos ajustes al sistema podemos hacer que si que se pueda utilizar dicho motor.

1-Paquetes necesarios: el paquete principal del programa:  xsane, e imagemagick los paquetes para instalar el motor ocr: tesseract-ocr, tesseract-ocr-spa, tesseract-ocr-eng ( para que el motor reconozca los idiomas español e ingles; si es necesario se pueden instalar mas paquetes de otros idiomas ) , y un script (xsane2tess ) que es el que hace que xsane use el motor tesseract-ocr.

2-Pasos previos: creación e instalación del script xsane2tess:

-- Con el texto abajo indicado se crea un script de la forma indicada en el tema: Crear un script básico

-- Una vez creado el script xsane2tess,  hay que copiarlo (abriendo con sudo nautilus el administrador de archivos en modo root ) en el directorio /usr/bin, asegurarse de que tiene permisos de ejecución como en la ventana siguiente.




(El script xsane2tess también se puede instalar a partir de un paquete .deb que nos podemos descargar desde : xsane2tess.deb)

-- Asegurarse de que existe, o si no crearlo, el directorio /home/usuario/tmp  ( es decir un directorio temporal tmp en el directorio del usuario )

-- Ejecutar xSane y  abrir  Preferencias –> Configuración -> pestaña OCR. Sustituimos el comando gocr (que es el que viene por defecto ) por xsane2tess.sh -l spa, ( cambiando el idioma, si es necesario, con las tres letras del nombre del paquete instalado: “eng” para inglés, etc ).

-- Dejamos las opciones archivo de entrada ( -i  ) y archivo de salida ( -o  ) como están; y  la opción de salida-fd interfaz ( -x  )

Orden OCR:  xsane2tess -l spa

Opción del archivo de entrada:  -i

Opción del archivo de salida:  -o

Opción de salida-fd de interfaz:  -x



De nuevo en la ventana principal de xSane:

-- Para automatizar al máximo el proceso de guardar el texto del documento tras realizar un OCR , en la lista desplegable, debajo de Ver-Ventana-Ayuda, seleccionaremos “Guardar Imagen” (en la imagen en recuadro rojo ) y en el campo de texto justo debajo, pondremos la ruta al directorio y al fichero que queremos, por ejemplo “/home/usuario/Documentos/0001.txt” ( en la imagen en recuadro amarillo ).

-- Debajo de la ruta, veremos dos desplegables más, una lista desplegable con el tipo de fichero que queremos, y que cambiaremos a “TEXT” ( en la imagen en recuadro azul ), y uno con números ( del +2 al -2 )  ( en la imagen en recuadro verde )  que indica que hacer con los nombres de fichero para escaneados consecutivos:si lo cambiamos a “+1″, una vez escaneada la página 1 y guardado en “/home/usuario/Documentos/0001.txt”, el siguiente fichero será “0002.txt”, luego “0003.txt”…etc



-------------------------------------------------------

3- Texto del Script sxane2tess: 

( Copiado desde http://doc.ubuntu-fr.org/xsane2tess   - en el apartado 2.2-1- )

#!/bin/bash
# xsane2tess 1.0
# tesseract made simple # xsane2tess is a TesseractOCR wrapper to be able to use tesseract with xsane #
TEMP_DIR=~/tmp/      # folder for temporary files (TIFF & tesseract data)
ERRORLOG="xsane2tess.log"  # file where STDERR goes
if [[ -z "$1"  ]]
then
echo "Usage: $0 [OPTIONS]
xsane2tess converts files to TIF, scans them with TesseractOCR
and outputs the text in a file.
OPTIONS:
-i <file1>  define input file (any image-format supported)
-o <file2>  define output-file (*.txt)
-l <lang>  define language-data tesseract should use
Progress- & error-messages will be stored in this logfile:
$TEMP_DIR$ERRORLOG
xsane2tess depends on
- ImageMagick  http://www.imagemagick.org/
- TesseractOCR http://code.google.com/p/tesseract-ocr/
Some coding was stolen from 'ocube'
http://www.geocities.com/thierryguy/ocube.html
"
exit
fi
# get options...
while getopts ":i:o:l:" OPTION
do
case $OPTION in
i)  # input filename (with path)
FILE_PATH="$OPTARG"
;;
o )  # output filename
FILE_OUT="$OPTARG"
;;
l )  # Language-selection
TES_LANG="$OPTARG"
;;
esac
done
# redirect STDOUT to FILE_OUT
exec 1>>$FILE_OUT
# redirect STDERR to ERRORLOG
exec 2>>$TEMP_DIR$ERRORLOG
# strip path from FILE_PATH, use filename only
IN_FILE=${FILE_PATH##*/}
TIF_FILE="$TEMP_DIR""${IN_FILE%.*}".tif
TXT_FILE="$TEMP_DIR""${IN_FILE%.*}"
# converting image into TIFF (ImageMagick)
convert "$FILE_PATH" -compress none  "$TIF_FILE" 1>&2
# start OCR (tesseract expands output with *.txt)
tesseract "$TIF_FILE" "$TXT_FILE" -l "$TES_LANG" 1>&2
# STDOUT scanned text => FILE_OUT
cat "$TXT_FILE".txt
# delete graphic file after use
rm "$TIF_FILE"
# delete tesseract output
rm "$TXT_FILE".txt

----------------------------------------------------------

4-Uso básico de OCR en xSane:

En este tema no se trata de aprender a usar xSane, sino a como usarlo para hacer un reconocimiento óptico de caracteres (OCR) con él; por lo tanto doy por supuesto que se sabe usar xSane para escanear un documento.



Una vez escaneado de forma habitual el documento, se abre la ventana de Guardar el documento escaneado



Pero en vez de hacer click en el icono verde y guardarlo en forma de imagen (.jpeg, .png, etc ) como seria habitual si no se fuera a hacer el OCR ( si no se hubieran hecho los pasos previos indicados en el apartado 2  ) se hace click en Archivo-> OCR-Guardar como texto , tras lo cual se abre un administrador de archivos donde elegir la ruta donde guardar el texto simple, y luego el programa ejecuta en segundo plano, a través del script xsane2tess, el motor de OCR tesseract-ocr, y guarda el texto plano extraido del documento digitalizado, en un archivo simple de texto editable por cualquier procesador de textos; si lo editamos con LibreOffice, posteriormente lo podemos exportar como archivo en formato .pdf



Mientras se está ejecutando el motor OCR el icono en verde de la Ventana Guardar se pone en gris, y vuelve a verde cuando el proceso OCR se ha terminado y ya podemos ver el archivo simple de texto creado en la dirección que hayamos elegido.

Resumen del uso básico de OCR en xSane:

Documento -> xSane -> escanear documento -> Archivo -> OCR guardar como texto ->>  archivo.txt ->>  editado con LibreOffice ->>  exportado como .pdf

-----------------------------------------------------------

No hay comentarios:

Publicar un comentario

A la vez que haces un comentario, por favor da una puntuación al tema: malo, normal, bueno o muy bueno.
Gracias.