domingo, 23 de febrero de 2014

OCR (Reconocimiento de Caracteres)

No es que yo use mucho el OCR (Optical Character Recognition) para pasar un documento escaneado como imagen, o un PDF, a documento de texto, y poderlo modificar, pero en mis tiempos de windowsero, y tras el clásico OmniPage, encontré un magnífico software para eso, el Abbyy FineReader. Luego, cuando me pasé a Linux, descubrí que podía hacerlo funcionar (incluso en una versión 'portable' que me había hecho) con Wine. Y no me preocupé más. 
Pero hace mucho tiempo que decidí prescindir del Wine, usar siempre aplicaciones nativas de Linux... y tenía esta asignatura pendiente.
Primero leí que la mejor aplicación para el Reconocimiento Optico de Caracteres, en Linux, podía ser gscan2pdf. La instalé en mi Debian, junto con el paquete de idiomas español (el tesseract-ocr-spa, hay otros pero dicen que este es bueno)... y un fracaso. Vamos, que ni siquiera veía cosas que leía como 'Importar PDF'), etc, así que lo dejé. Además, me instalaba un montonazo de paquetes en mi Debian.
Luego leí cosas sobre la aplicación OCRFeeder. Y me decidí a instalarla. Así:
sudo aptitude install ocrfeeder tesseract-ocr-spa
que, por cierto, exige instalar muchos menos paquetes que el gscan2pdf. (Y, también por cierto, necesité reiniciar el PC para que me arrancase la aplicación)

Hacer funcionar OCDRFeeder exige un pequeño 'manual'
El primer lugar, tienes que añadir la imagen (JPG, PNG...) o el PDF ('importar PDF'), desde el menú 'Archivo'. También se puede hacer directamente desde el escaner... pero a mi no me lo reconoce. No Problem, se escanea con Simple Scan... y se guarda el documento escaneado.
Añadida la imagen, que te aparece en la ventana principal de la Aplicación, tienes que ir seleccionando, arrastrando con el ratón, los cuadrados que quieres reconocer. 
Entonces te aparecerá, a la derecha, otra ventana, y cuidadín, a veces tienes que 'mover' a la izquierda la ventana principal, para verla. En esta segunda ventana puedes elegir (arriba), si el cuadrado seleccionado quieres que te lo reconozca como texto, o como imagen (se colorearán unos en azul y otros en verde). Algo así:

Hecho esto, y comprobando que usas el motor Tesseract (o el que quieras, si has instalado varios) y, por curiosidad, esas cositas que vienen ahí (límites, propiedades del texto...) que, en principio, puedes dejar por defecto, no tienes más que dar al botón |✔OCR| de la derecha (o en Documento-Reconocer las áreas seleccionadas') esperas a que aparezca abajo, a la derecha, en la solapa 'Texto' lo reconocido, puedes corregir algún error de reconocimiento ahí mismo... y lo exportas (Archivo-Exportar)
O, aún más fácil, pinchas en el tercer icono (que es el del Writer de OpenOffice) y te lo exporta directamente como documento ODT. (Luego, te será muy fácil guardarlo en cualquier otro formato, como por ejemplo en .doc)  
Observación importante: vigila que, en la pestaña Estilo, en Tipografía, no esté puesto un tamaño de letra grande, porque los 'límites' pueden impedir que aparezca todo el texto

Y ahora, mi (corta) experiencia personal:
Reconocer un documento en PDF (o como imagen escaneada) simple (solo texto), no tiene, principio, mayor dificultad: lo seleccionas (ocupará toda la página)... y adelante. Por ejemplo, de un PDF he obtenido esto:

Y poder reconocer, por separado, las imágenes y los textos (que luego te los coloca 'en su sitio' está muy bien pero tiene sus limitaciones, básicamente, que  si las imágenes se entremezclan con el texto hay que hacer 'virguerías' patra ir seleccionando lo que es bloque de texto y lo que es imagen... y al final los bloques de texto te los considera como cuadros de texto independientes.
Y un problema adicional es que hay que tener cuidado, como apuntaba antes, con el tamaño de las letras del texto... porque pueden quedar fuera de límites. Total que esto de 'imágenes+textos', si no están muy claramente definidos, se puede complicar un poco (por cierto, aquí recomiendo usar Documento-Reconocer las áreas seleccionadas'.
Aquí tienes dos sencillos ejemplos de cómo me sale un OCR desde un PDF:
PDF 'solo texto'
PDF 'texto+imagen' (no muy difícil)


Bueno, esta aplicación OCRFeeder es, para mi, todavía muy nueva, habrá que ir investigando 'sus tripas' y sus posibilidades (y limitaciones).
Pero, de entrada, y para documentos sencillos, de texto, bien en formato de imagen, bien en formato PDF, ya tengo 'fichada' una aplicación diseñada nativamente para Linux.

Por lo que (aunque solo sea con un 'SUFI')... ¡Asignatura aprobada!


6 comentarios:

  1. Hola, me gustó tu artículo, soy un hiper-novato en materia de linux; estoy queriendo migrar a Linux Mint, y el Abby Finnereader es mi principal traba a la hora de hacerlo, lo uso muchísimo para conversión de pdfs a epub. Me podrías contar de qué manera lo pudiste usar en Linux? Muchas gracias, saludos.

    ResponderEliminar
  2. hola. Pues, simplemente, lo usé, como digo arriba (incluso recuerdo que era una versión 'portable') ejecutándola a través de Wine. Pero fue hace unos años, y yo ahora ya no quiero saber nada ni de programas diseñados para Windows, ni de Wine. Cuestión de principios, quiero usar solo aplicaciones nativas de Linux.
    Si no te consideras tan 'purista'... inténtalo. Y si tienes una versión algo antigua de Abbyy FineReader, pienso que mejor, ya sabes que a mayor versión, a veces mayor complejidad, por añadirse funciones que, a lo mejor, un usuario 'normalito' no las necesita para nada.

    ResponderEliminar
  3. pero leyendo tu necesidad concreta (pasar PDFs a formato ePUB) hombre, yo lo hago a través de una estupenda aplicación que se llama CALIBRE, y que está en los repositorios (al menos en los de Debian, entiendo que también estará en los de LinuxMint) y se instala, por tanto, muy fácilmente.

    ResponderEliminar
  4. Hola. Pasa con Calibre que no siempre tiene buenos resultados. Suele pasar que la conversión de algunos pdf (libreo escaneados, por ejemplo), siguen como imagen y no como epub o mobi.
    He probado con gscan2pdf y si bien lee, es muy deficiente la salida qu egenera. Así que pasé al OCRfeeder por tu artículo y pareciera funcionar, hace el reconocimiento pero después de todo el procesamiento que llega hasta la última página me arroja sólo la primera y no me permite exportar ni nada: me dice que hay "demasiadas páginas" o algo así. ¿Sabes cómo se resuelve?
    Saludos y gracias de antemano.

    ResponderEliminar
  5. pues lo siento, el uso que hago del Reconocimiento de Caracteres es tan escaso que nunca me ha merecido la pena estudiarlo a fondo. Como dije al principio, los programas que usaba en Windows, hace ya muchos años, me parecían bastante mejores.
    Pero se me ocurre que podrías tratar de dividir ese PDF que te da problemas en varias partes (por ejemplo con PDFShuffler) y probar si con menos páginas puedes llegar a hacer un reconocimiento al menos aceptable. Y obtener tus propias conclusiones.

    ResponderEliminar
  6. Gracias por responder. De hecho, probé con un pdf de menos páginas y anduvo bien, aunque la verdad es que andar dividiendo archivos es mucho. Tengo que usar seguido esto de los ocr así que la alternativa, lamentable, es mantener el dual boot (con lo que demora esa cosa del w7 en inciar) y seguir pendiente de las mejoras en tesseract -entiendo que se alió con google. Quizás por ahí vaya la cosa-.
    saludos

    ResponderEliminar