El reconocimiento óptico de caracteres (OCR por sus siglas en inglés), trata de reconocer letras y palabras a partir de imágenes, de manera que puedan pasar a un sistema que pueda ser manipulado. Por ejemplo, si tuviésemos una hoja de un documento que ha sido escrito a máquina y éste lo pasáramos por un escáner, usando la tecnología del OCR podríamos convertir la imagen del documento en cuestión en texto, el cual ya podríamos manipular fácilmente. Esto -desde luego- nos evitaría gastar tiempo, pues claramente un documento físico, si lo quisiésemos en la computadora como archivo de texto, tendríamos que transcribirlo a mano. Con el OCR esta dificultad desaparece.
El proceso básico del OCR es convertir el texto que aparece en una imagen a un archivo de texto, el cual podrá ser editado y usado como tal por cualquier otro programa, por ejemplo un procesador de palabras. Partimos pues de la imagen de un documento, la cual podría ser muy buena, digamos perfecta, con sólo dos niveles de gris, blanco y negro. Bajo esta premisa, el reconocimiento de caracteres se realiza comparándolos con patrones que contienen todos los posibles caracteres (en un idioma específico). Sin embargo, las imágenes reales que escaneamos con este propósito no son perfectas, por lo el OCR encuentra varias dificultades:
- El dispositivo que obtiene la imagen puede introducir niveles de grises al fondo que no pertenecen a la imagen original.
- La resolución de estos dispositivos puede introducir ruido en la imagen, afectando los píxeles que han de ser procesados.
- La distancia que separa a unos símbolos (letras) de otros, al no ser siempre la misma, puede producir errores de reconocimiento.
- La conexión de dos o más caracteres por píxeles comunes también puede producir errores.
Hoy en día muchos de estos problemas han sido resueltos y ya existen componentes y bibliotecas de OCR para los lenguajes de programación más populares. De hecho, me interesé en el tema porque tenía un documento que necesitaba pasar a texto y me daba una pereza extraordinaria teclearlo en la computadora. Así que en lugar de hacer esto, me di a la tarea de ver si podía programar una aplicación que lograra esto. Así entonces, bastaría con escanear las cuartillas del documento en cuestión y entonces las procesaría con mi eventual programa.
Hallé que en Delphi hay varios componentes que pueden hacer esta tarea. Dos de ellos me llamaron la atención. El primero, de una empresa llamada WinSoft, el cual puede instalarse en Delphi 7 y proveer lo que necesito para procesar imágenes y convertirlas a texto y uno más, de una compañía llamada Nicomsoft, el cual se ve mucho mejor, pero es para versiones de Delphi que simplemente ya no tengo. Por ello, me quedé con el primero. Hice algunas pruebas y sorprendentemente el componente (de evaluación), lo hace bastante bien.
Una vez que vio que los resultados funcionaban, me di a la tarea de tratar de hacerlo mejor. Es claro que las imágenes perfectas, de dos tonos de gris, no siempre existen, por lo que decidí utilizar algunas ideas de procesamiento de imágenes para “limpiar” los documentos escaneados y hacer que el componente OCR hiciese la tarea de manera más simple y sencilla, y con mayor precisión.
Agregué así algunos filtros digitales para preprocesar las imágenes (que contienen las cuartillas escaneadas) para entonces después, usar el OCR y quedarme con el documento en modo texto que bueno, probablemente tenga que leer y corregir en algunos casos, pero que me habrá ahorrado mucho tiempo de transcripción es un hecho y bajo esa percepción, creo que es un programa que a más de uno le puede interesar.
A quien lo quiera, pídamelo a morsa@la-morsa.com y se lo enviaré de forma gratuita a su buzón digital a la brevedad.
Referencias: