Después del pequeño paréntesis que hicimos analizando la realidad virtual, seguiremos con el procesamiento de imágenes, en este caso, reconociendo caracteres en las fotografías que sacamos. Sí, estamos hablando de OCR.

Según la Wikipedia (link), OCR (Optical Character Recognition o Reconocimiento Óptico de Caracteres en Castellano) es un proceso dirigido a la digitalización de textos, los cuales se identifican automáticamente a partir de una imagen de símbolos o caracteres que pertenecen a un determinado alfabeto, para luego almacenarlos en forma de datos.

La popularidad de los teléfonos inteligentes junto a la proliferación de cámaras cada vez mejores han popularizado la utilización de estas técnicas, creando una nueva categoría de aplicaciones móviles.

En este artículo repasaremos los diferentes usos de esta tecnología y veremos dos opciones disponibles para su utilización en aplicaciones Android.

¿Para qué?

La tecnología OCR se utiliza en diferentes aplicaciones, pero agrupándolas podemos diferenciar tres categorías principales:

  • Guardar datos obtenidos en Bases de Datos: Los textos reconocidos se almacenan en las BBDD para un posterior análisis.
  • Editar textos reconocidos: Reconocer documentos automáticamente y ofrecer al usuario la posibilidad de editar partes concretas.
  • Traducciones instantáneas: Obtener bloques grandes de textos y mediante otras herramientas traducirlas automáticamente a otros idiomas.

Dentro de esas categorías, algunos de los desarrollos más utilizados son los siguientes:

  • Reconocimiento de datos estructurados: se utiliza el reconocimiento para automatizar la obtención de información de documentos estructurados. Por ejemplo: reconocer y guardar la información escaneada de una factura automáticamente en una BBDD.
  • Reconocimiento de matrículas: Obtener el número de matrícula de un vehículo de forma automática. Por ejemplo: envío de paquetería.
  • Traducciones automáticas de texto en tiempo real: Reconocer, utilizando la cámara del dispositivo, el texto de la imagen enfocada y traducir automáticamente dicho texto.
¿Procesamiento en local o en la nube?

Antes de empezar el desarrollo de este tipo de aplicaciones, el desarrollador debe analizar si es mejor procesar las imágenes en el dispositivo o utilizar la nube. Esto depende, como casi siempre, de los requerimientos que necesita la aplicación que se está desarrollando.

Dependerá si la app debe estar conectada, del tamaño de los datos que se deben enviar, los dispositivos en los que se deberá ejecutar, etc…

Para el procesamiento en la nube tenemos diferentes opciones, pero como lo nuestro es el desarrollo de aplicaciones móviles, nos centraremos en librerías que podemos utilizar.

Librerías Android

Si hacemos un análisis del estado del arte de las tecnologías OCR, podemos obtener una lista bastante extensa de diferentes opciones. Algunas de ellas serán gratuitas, otras de pago, algunas estarán obsoletas y otras estarán al día….

Nosotros nos centraremos en dos gratuitas que podemos utilizar en nuestro desarrollo Android. Son librerías fáciles de utilizar y que contienen documentación que ayudará en su implementación. Son Tesseract y Mobile Visio API.

Tesseract

Es un motor de reconocimiento óptico que se puede utilizar para diferentes lenguajes de programación. Desarrollado inicialmente por Hewlett Packard, en 2005 se liberó como código abierto. Desde el 2006 está sponsorizado por Google.

En Android Studio podemos utilizar dicha librería mediante Gradle. Lo podeís consultar aquí.

 

Mobile Visio API

Dentro de esta solución proporcionado por Google, existe también una solución para el reconocimiento de textos. El Mobile Visio Text API proporciona a los desarrolladores una funcionalidad OCR potente y segura que funciona con la mayoría de dispositivos Android sin incrementar el tamaño de la aplicación.

Existen diferentes tutoriales que enseñan cómo se pueden utilizar estas herramientas en nuestras aplicaciones. Un tutorial muy útil lo podéis consultar aquí.

Seleccionar la mejor opción

Seleccionar entre una u otra dependerá de la aplicación. Es muy importante realizar muchas pruebas simulando entornos reales. De aquí se podrán obtener estadísticas de éxito y en base a eso tomar una decisión. Factores externos cómo la iluminación, sombras, colores y contrastes tienen mucha importancia por lo que en este tipo de desarrollos, siempre hay que tenerlos en cuenta.

 

¡Quién sabe! Quizás la siguiente aplicación de multas de la policía empiece por aquí…

¡Nos vemos el siguiente mes!