> > > > > > > > >
GRUPO EBIM 01 Jun 22
6 minutos de lectura

Introducción a OCR

6 minutos de lectura
Compartir
  • Copiado en el portapapeles

Actualizado: 22 nov 2022

1. Aspectos básicos sobre OCR

OCR (Optical Character Recognition) es una tecnología que permite transformar el contenido de una imagen en texto plano. Normalmente, el contenido de una imagen que suele transformarse es aquel asociado a cadenas de texto, si bien algunas aplicaciones para OCR permiten transformar otro tipo de objetos gráficos contenidos en una imagen, como pueden ser, por ejemplo, códigos de barras.

Esta tecnología tiene especial aplicabilidad en sistemas informáticos de gestión documental, como puede intuirse. Muchas aplicaciones de gestión documental suelen manejar documentos escritos, almacenados en archivos con diversos formatos de imagen (pdf, jpg, tiff, etc). Esto es debido fundamentalmente a que la base documental de este tipo de aplicaciones suele obtenerse tras realizar un proceso de digitalización (escaneo, etc) de los documentos impresos en papel, a fin de poder ser manejados por dicha aplicación.

El uso de aplicaciones OCR permite extraer el contenido textual de documentos contenidos en formato de imagen, a fin de realizar diversas funciones de gestión documental, tales como:

  • Búsqueda de documentos con cierta información.

  • Extracción de la información concreta de un documento.

  • Pasar de un documento escrito contenido en un archivo de imagen, a un archivo con formato de texto plano.

2. Utilizando las librerías de Asprise

Las librerías de Asprise para utilizar tecnología OCR están disponibles en diversos lenguajes de programación tales como C/C++, Java, Delphi, Visual, etc.

Son capaces de realizar reconocimiento de caracteres sobre infinidad de formatos de imágenes, tales como:

Aparte de reconocimiento de caracteres alfanuméricos, estas librerías incorporan la funcionalidad de reconocimiento de códigos de barras.

2.1. Instalación y requisitos

Los ejemplos que se estudiarán con estas librerías, se desarrollaron y ejecutaron en un entorno Windows XP.

En este caso, para emplear la tecnología OCR se utilizó la versión 3.0 de Asprise OCR SDK para Windows. Más concretamente, se optó por las librerías para trabajar en C/C++/Delphi, cuya distribución de evaluación asociada (archivo ocr-eval-c.zip) puede obtenerse gratuitamente desde el siguiente enlace:

http://asprise.net/download/software/ocr/ocr-eval-c.zip

Una vez descomprimido dicho archivo (supóngase, al directorio OCR-C), es necesario copiar al directorio del sistema operativo (habitualmente C:\Windows) las siguientes librerías dinámicas:

  • OCR-C\AspriseOCR.dll

  • OCR-C\DevIL.dll

  • OCR-C\ILU.dll

Como entorno de desarrollo se eligió Visual C++ 2005 Express Edition, que puede instalarse gratuitamente desde la dirección:

http://msdn.microsoft.com/vstudio/express/visualc/download/default.aspx Una vez creado un nuevo proyecto con este entorno, deberán copiarse los siguientes archivos a las carpetas de proyecto indicadas:

  • OCR-C\AspriseOCRLib\include\AspriseOCR.h a Header Files

  • OCR-C\AspriseOCRLib\lib\AspriseOCR.lib a Resource Files

Con estos pocos pasos, ya se tiene preparado un entorno para realizar programas en C que utilicen la tecnología OCR, tal como se mostrará a continuación.

2.2. La función OCR

La función fundamental de estas librerías para realizar OCR sobre imágenes es OCR, cuya interfaz es la siguiente:

[char *] OCR([char *] imagePath, [int] imageFileType)

El significado de sus argumentos de entrada es el siguiente:

  • imagePath es una cadena de caracteres que contiene la ruta completa de la imagen sobre la que se desea hacer OCR.

  • imageFileType indica el tipo de imagen que contiene el archivo indicado en imagePath.

Las constantes definidas por defecto para indicar el tipo de imagen enimageFileType se encuentran en el fichero AspriseOCR.h (ubicado en la carpeta de proyecto Header Files). Son las siguientes:

En general, puede utilizarse la constante IMAGE_TYPE_AUTO_DETECT para dejar que la función OCR detecte automáticamente el formato de la imagen.

Esta función realiza OCR tanto sobre caracteres alfanuméricos como sobre códigos de barras, tal como se mostrará.

El retorno de esta función es una cadena de caracteres con el resultado del OCR realizado sobre la imagen. Si reconoce un código de barras, la cifra correspondiente la encerrará entre corchetes (“[“, “]”).

Se realiza un sencillo programa de prueba de esta función con las siguientes líneas de código:

El programa simplemente realizará OCR sobre la imagen indicada y mostrará el resultado por pantalla. La imagen autentia.jpg tiene el siguiente contenido:

Se edita y guardan las líneas de código anteriores en el archivo test.c, en la carpeta de proyecto Source Files.

Se compila pulsando Build Solution sobre el desplegable superior etiquetado como Build, o bien F7.

Puede observarse que no hay errores en la pantalla inferior Output.

Se ejecuta el programa para ver los resultados de la prueba. Puede pulsarse Start Without Debugging en el desplegable superior etiquetado como Debug, o bien CTRL+F5.

En la ventana de símbolo de sistema emergente puede observarse el resultado de la operación:

En este caso se han obtenido unos resultados excelentes, recuperando toda la información de la imagen procesada.

A continuación se muestran ejemplos de ejecución de este mismo programa con otras imágenes en jpg que contienen distintos, tipos, fuentes, colores, tamaños, etc.

Puede observarse que el programa parece procesar mejor las imágenes en blanco y negro que las que contienen colores. Otra característica relevante para favorecer un buen reconocimiento parece ser la fuente de la letra. El programa obtiene resultados satisfactorios incluso en la última prueba, con texto escrito a mano alzada.

Como se comentó anteriormente, la función OCR de estas librerías también puede reconocer códigos de barras. Con el mismo programa de prueba, se hace OCR de la siguiente imagen con un código de barras:

El resultado de la ejecución es el siguiente:

Como se comentó antes, la función OCR encierra los códigos de barras reconocidos entre corchetes en la cadena de texto que devuelve.

3. Utilizando GOCR

En este apartado se considerará la utilización de la aplicación GOCR, de libre distribución, para tareas de reconocimiento de caracteres desde archivos de imágenes. En este caso, en vez de librerías especificas se utilizará una aplicación de línea de comandos para hacer OCR. GOCR realiza reconocimiento de caracteres sobre imágenes de diversos formatos, como por ejemplo, pnm, pgm, pbm, ppm y pcx.

3.1. Instalación y requisitos

Los ejemplos que se estudiarán con esta aplicación, se desarrollaron y ejecutaron en un entorno Windows XP. El archivo gocr040exe.zip con la aplicación de línea de comandos que se empleará en este caso, se puede descargar gratuitamente desde la siguiente dirección:

http://jocr.sourceforge.net/download.html

3.2. Probando por línea de comandos

En primer lugar, lo más recomendable es ejecutar la aplicación (gocr) con el parámetro -h para obtener la ayuda y ver las opciones de ejecución de la aplicación.

Como puede observarse, la opción fundamental para realizar OCR sobre una imagen es ejecutar:

Se probará entonces esta aplicación con las imágenes que se consideraron en las pruebas anteriores de las librerías de Asprise. En este caso se utilizarán versiones de dichas imágenes en formato ppm, ya que esta aplicación no procesa imágenes en jpg (precisa aplicación djpeg para convertir previamente). Los resultados se muestran a continuación:

Al igual que el las librerías de Asprise, GOCR parece empeorar su rendimiento con la escritura en ciertos colores. En los casos de prueba ejecutados, también se comprueba que para los textos en blanco y negro el rendimiento para ciertas fuentes de letras es bastante bueno. Con la última prueba (texto a mano alzada) parece que tiene más problemas que las librerías de Asprise.GOCR también permite el reconocimiento de códigos de barras. Si ejecutamos el ejemplo del apartado anterior se obtiene el siguiente resultado:

El lector interesado puede profundizar más en la utilización de esta aplicación utilizando otras opciones interesantes como, por ejemplo, seleccionar el archivo donde se dirigirá la salida, seleccionar el formato en el que se almacenará dicha salida, reconocer sólo números, etc.

ES
Abrir chat
Hola 👋
¿En qué podemos ayudarte?