Reconocimiento de texto para Android usando Google Mobile Vision

Para el escrito de esta semana vamos a crear una sencilla aplicación para Android que utiliza la API de Google Mobile Vision para el reconocimiento óptico de caracteres (OCR). La API de texto de Mobile Vision ofrece a los desarrolladores de Android una capacidad de OCR potente y fiable que funciona con la mayoría de los dispositivos Android.

Esta es una API muy potente que también se puede utilizar para la detección de rostros en vivo y el seguimiento de rostros junto con las capacidades de escaneo de códigos de barras.Para saber más sobre esta maravillosa biblioteca, sigue el siguiente enlace

Como siempre, el proyecto de ejemplo está disponible aquí

Comencemos creando primero un nuevo proyecto en Android Studio.

  1. Vamos a Archivo ⇒ Nuevo Proyecto. Cuando te pida que selecciones la actividad por defecto, selecciona Empty Activity y procede.
  2. Abre el build.gradle en (Module:app) y añade las dependencias de Mobile Vision así.

3. Para usar esta librería, puede que necesites actualizar tu versión instalada de Google Repository en SDK tools.Asegúrate de que tu versión de Google Repository está actualizada. Debe ser al menos la versión 26.

4. No olvides añadir los permisos para acceder a la CÁMARA y también los metadatos para utilizar el OCR en el archivo AndroidManifest.xml así

5. A continuación, crearemos un diseño sencillo para nuestra actividad que tendrá este aspecto

Dentro del método onCreate() del MainActivity.java, llamaremos a un método startCameraSource().

¿Qué ocurre en el código anterior? Aquí están las partes importantes.

TextRecognizer: Este objeto procesa las imágenes y determina qué texto aparece en ellas. Una vez inicializado, se puede utilizar para detectar texto en todo tipo de imágenes. Hay que tener en cuenta que antes de empezar a usarlo para reconocer texto, debemos comprobar que está listo. Esto se hace con el método textRecognizer.isOperational().

CameraSource: Se trata de un gestor de cámaras preconfigurado para el procesamiento de Vision. Aquí estableceremos la resolución a 1280*1024 y activaremos el autoenfoque, porque ayudará a reconocer el texto más pequeño mucho más rápido. Además, configuramos el cameraSource para que use la cámara trasera por defecto.

Detector.Processor<TextBlock> : Para que TextRecognizer lea el texto directamente de la cámara, tenemos que implementar un Detector Processor, que se encargará de las detecciones tan a menudo como estén disponibles.

Aquí hay que implementar dos métodos. El primero, receiveDetections(), recibirá TextBlock del Detector a medida que estén disponibles. El segundo, release(), se puede utilizar para deshacerse limpiamente de los recursos.

7. Paso final

Tomamos los valores de TextBlock y creamos el objeto StringBuilder y añadimos los valores al textView, que se actualizará cada vez que haya un texto en la vista de la cámara.

Encendemos la app

Finalmente, podemos encender la app y ver una vista en vivo del texto desde la vista de cámara

Y ya está. Ya tenemos lista una sencilla aplicación de OCR con pocas líneas de código.

Hasta la próxima 🙂 Feliz aprendizaje y feliz año nuevo a todos.