Ocr en linux
Cuando escaneamos la página de un libro, se graba en la compu una imagen, como una foto de esa página, generalmente en formato .jpg. Esto significa que no podemos hacer sobre esa imagen las operaciones básicas de procesamiento de texto como borrado de caracteres, copiado, pegado, indentación, etc., simplemente porque es una imagen. Si lo abrimos con un procesador de textos, deberá ser uno que soporte imágenes y no admitirá ninguno de los procedimientos antes mencionados. Para que esa imagen se tranforme en un archivo de texto (de un .jpg a un .txt, .rtf, .doc, o lo que sea) necesitamos hacer reconocimiento óptico de caracteres(OCR) que es el proceso por el cual un programa de ocr leerá la imagen y reconocerá que ese rendondelito es una "o", ese palito una "I", etc. En Windows existe un magnífico programa, Abbyy Fine Reader, que permite hacer esto de una manera simple y automática. En linux, como siempre, tenemos varias opciones. La que voy a explicar se hace desde la consola, y requiere un poco de trabajo, pero, también nos otorga bastante control sobre lo que queremos hacer.
Ingredientes nesarios:
-tesseract-ocr
-teseract-ocr-spa
-imagemagick
Suelen venir instalados en ubuntu, pero sin no te vino, ya sabés: sistema, administración, gestor de paquetes synaptic (o la manera que vos tengas de instalar paquetes).
Tesseract
El programa en cuestión se llama tesseract y tiene una sintaxis bastante simple:
tesseract elcastillo.tif elcastillo -l spa
Produce un archivo de texto elcastillo.txt
Como pueden ver el archivo de imagen no es un .jpg sino un .tif con lo cual si tenemos un .jpg hay que convertirlo. Para eso usaremos un programa que forma parte del paquete de manipulación de imágenes imagemagick y se llama convert. En este caso, la sintaxis para la conversión es:
convert elcastillo.jpg elcastillo.tif
Si tenemos un libro escaneado lo mejor será colocar todos los .jpg en una carpeta y correr estas sentencias que recorren toda la carpeta y se ejecutan:
for k in $(ls *.jpg); do convert $k $k.tif; done
Con lo cual aplicamos la orden convert con extensión .tif a todas las imágenes .jpg de la carpeta.
Una vez que tenemos los tif, corremos lo siguiente:
for i in *.tif;do tesseract $i $i -l spa; done
que significa , correr el ocr (tesseract) sobre todos los .tif que haya en esa carpeta.
De esta manera nos quedarán archivos individuales elcastillo001.jpg.tif.txt (que son archivos de texto).
Como verás no es tan simple como otras cosas pero en el medio aprender a hacer varias cosas.
Para ampliar temas:
Sobre ocr:
http://es.wikipedia.org/wiki/OCR
Manual del excelente gestos de imágenes de consola imagemagick
http://www.rpublica.net/imagemagick/
Suerte
pablo
Cuando escaneamos la página de un libro, se graba en la compu una imagen, como una foto de esa página, generalmente en formato .jpg. Esto significa que no podemos hacer sobre esa imagen las operaciones básicas de procesamiento de texto como borrado de caracteres, copiado, pegado, indentación, etc., simplemente porque es una imagen. Si lo abrimos con un procesador de textos, deberá ser uno que soporte imágenes y no admitirá ninguno de los procedimientos antes mencionados. Para que esa imagen se tranforme en un archivo de texto (de un .jpg a un .txt, .rtf, .doc, o lo que sea) necesitamos hacer reconocimiento óptico de caracteres(OCR) que es el proceso por el cual un programa de ocr leerá la imagen y reconocerá que ese rendondelito es una "o", ese palito una "I", etc. En Windows existe un magnífico programa, Abbyy Fine Reader, que permite hacer esto de una manera simple y automática. En linux, como siempre, tenemos varias opciones. La que voy a explicar se hace desde la consola, y requiere un poco de trabajo, pero, también nos otorga bastante control sobre lo que queremos hacer.
Ingredientes nesarios:
-tesseract-ocr
-teseract-ocr-spa
-imagemagick
Suelen venir instalados en ubuntu, pero sin no te vino, ya sabés: sistema, administración, gestor de paquetes synaptic (o la manera que vos tengas de instalar paquetes).
Tesseract
El programa en cuestión se llama tesseract y tiene una sintaxis bastante simple:
tesseract elcastillo.tif elcastillo -l spa
Produce un archivo de texto elcastillo.txt
Como pueden ver el archivo de imagen no es un .jpg sino un .tif con lo cual si tenemos un .jpg hay que convertirlo. Para eso usaremos un programa que forma parte del paquete de manipulación de imágenes imagemagick y se llama convert. En este caso, la sintaxis para la conversión es:
convert elcastillo.jpg elcastillo.tif
Si tenemos un libro escaneado lo mejor será colocar todos los .jpg en una carpeta y correr estas sentencias que recorren toda la carpeta y se ejecutan:
for k in $(ls *.jpg); do convert $k $k.tif; done
Con lo cual aplicamos la orden convert con extensión .tif a todas las imágenes .jpg de la carpeta.
Una vez que tenemos los tif, corremos lo siguiente:
for i in *.tif;do tesseract $i $i -l spa; done
que significa , correr el ocr (tesseract) sobre todos los .tif que haya en esa carpeta.
De esta manera nos quedarán archivos individuales elcastillo001.jpg.tif.txt (que son archivos de texto).
Como verás no es tan simple como otras cosas pero en el medio aprender a hacer varias cosas.
Para ampliar temas:
Sobre ocr:
http://es.wikipedia.org/wiki/OCR
Manual del excelente gestos de imágenes de consola imagemagick
http://www.rpublica.net/imagemagick/
Suerte
pablo