OCR en Android

¿Qué es el OCR?

El reconocimiento óptico de caracteres (OCR) se refiere al proceso de identificar automáticamente a partir de una imagen caracteres o símbolos pertenecientes a un alfabeto determinado. En este post nos centraremos en explicar cómo utilizar el OCR en Android.

Una vez reconocido el texto de la imagen, se puede utilizar para:

    • Guardarlo en el almacenamiento.
    • Procesarlo o editarlo.
  • Traducirlo a otro idioma.

La popularidad de los smartphones, combinada con unas cámaras cada vez mejores, ha hecho que aumente el uso de este tipo de técnicas de reconocimiento y que surja una nueva categoría de apps para móviles que hacen uso de ellas.

¿En el dispositivo o en la nube?

Antes de utilizar una librería de OCR, es necesario decidir dónde debe tener lugar el proceso de OCR, en el smartphone o en la nube.

Dependiendo de los requerimientos de la app, cada enfoque tiene sus ventajas y desventajas.

Si la app requiere, por ejemplo, realizar el reconocimiento de caracteres sin conexión a internet, el motor de OCR se lanzará en el propio dispositivo. De esta forma, se podría evitar el envío de imágenes a un servidor, ya que las cámaras montadas en los dispositivos actuales pueden tomar fotos de gran tamaño.

Por otro lado, las librerías de OCR suelen ocupar mucho espacio, siendo necesario descargar cada uno de los idiomas a reconocer, como explicaremos a continuación.

¿Qué librerías se pueden utilizar?

En el siguiente enlace a la Wikipedia hay una tabla comparativa con todas las librerías de OCR, plataformas soportadas, lenguajes de programación utilizados en su desarrollo y otra información relevante.

Enlace: http://en.wikipedia.org/wiki/ Lista_de_software_de_reconocimiento_de_caracteres_ópticos

En este post vamos a utilizar la librería Tesseract, que destaca por encima del resto. Es Open Source, tiene SDK, fue creada por HP y actualmente es desarrollada por Google.

OCR en Android usando la librería Tesseract

Aunque Tesseract se puede ejecutar en un servidor Linux como servicio en la nube, en este post implementaremos la librería Tesseract en una app Android, lanzando el motor de OCR en el propio dispositivo.

El proyecto original de Tesseract para Android se llama Tesseract Android Tools y contiene herramientas para compilar las librerías Tesseract y Leptonica para su uso en la plataforma Android, y una API Java para acceder a estas librerías compiladas de forma nativa.

Enlace: https://github.com/rebbix/tesseract-android-tools/tree/master/tesseract-android-tools

Para nuestro ejemplo, vamos a utilizar un fork de Tesseract Android Tools, que añade más funcionalidad.

Enlace: https://github.com/rmtheis/tess-two

Ejemplo de OCR en Android

Necesitamos unos sencillos pasos para realizar el OCR en Android:

Consideraciones

  • La calidad del reconocimiento puede variar dependiendo de las condiciones de iluminación de la imagen, la resolución de la cámara, la fuente del texto, el tamaño del mismo y otros…
  • Para conseguir la mayor calidad posible, es muy importante que el texto esté centrado en la imagen y que ésta esté correctamente enfocada.

Previsión del uso del OCR en una app traductora

El siguiente vídeo muestra parte de la app que estoy desarrollando para mi proyecto final de carrera (TFG), donde utilizo las técnicas de OCR descritas.

Deja un comentario