Sácale el máximo partido al escáner MLKit de tu Android

  • ML Kit permite escanear códigos de barras y detectar objetos en Android, integrando IA de Google en apps móviles.
  • Existen dos variantes de la API de escaneo: modelo integrado (mayor tamaño, disponible de inmediato) y modelo dinámico (descarga al instante, app más ligera).
  • La calidad de imagen y la resolución adecuadas son clave para un reconocimiento preciso y rápido, especialmente en tiempo real.
  • El soporte de CameraX y el Analizador ML Kit optimiza la integración para experiencias visuales avanzadas y eficientes.

Escanear con ML Kit

El mundo del desarrollo Android lleva años transformándose gracias a la inteligencia artificial y el aprendizaje automático. ML Kit, la solución de Google para facilitar la integración de estas tecnologías en apps móviles, ha cambiado la manera en que los desarrolladores abordan tareas antes complejas, como el escaneo de códigos de barras y la detección de objetos en tiempo real. Ahora, integrar un escáner inteligente y preciso con ML Kit en Android está al alcance de cualquiera que se lo proponga, sin la necesidad de ser un experto en IA.

¿Te has preguntado alguna vez cómo funcionan las apps de escaneo de códigos QR o cómo tu cámara puede identificar y clasificar objetos al instante? Con la versatilidad de ML Kit y sus APIs para Visión, es posible llevar a cabo estas y muchas otras funciones con gran precisión y un rendimiento asombroso, tanto en imágenes fijas como en secuencias de vídeo. En este artículo, te llevamos de la mano por todas las opciones que ofrece ML Kit para escanear códigos de barras y detectar objetos, además de maximizar la experiencia del usuario y optimizar tu app para casos reales.

¿Qué es ML Kit y cómo puede impulsar tu app?

ML Kit es un kit de desarrollo de software para móviles que proporciona APIs de aprendizaje automático preparadas para usarse tanto en Android como en iOS. Integra capacidades de Google como Mobile Vision y TensorFlow Lite en una solución única, permitiendo a cualquier desarrollador añadir reconocimiento de texto, detección de objetos, escaneo de códigos de barras y otras funciones avanzadas en solo unos pasos. Lo mejor es que no necesitas ser un gurú de la inteligencia artificial para sacarle partido: ML Kit hace el trabajo difícil por ti.

Entre las funcionalidades más populares del ML Kit están:

  • Escaneo de códigos de barras y QR en tiempo real y en imágenes estáticas.
  • Reconocimiento de texto, tanto en fotografías como en documentos.
  • Detección de objetos y seguimiento en secuencias de vídeo.
  • Identificación de rasgos faciales y otras capacidades de visión artificial.

Su arquitectura está diseñada para funcionar en el dispositivo, lo que significa que puedes usar estas funciones incluso sin conexión a Internet y con una latencia mínima.

Escaneo de códigos de barras con ML Kit en Android

Lector de códigos de barra MLKit

La funcionalidad de escaneo de códigos de barras de ML Kit en Android es una de las más avanzadas y completas. Google ofrece dos variantes para esta API, según las necesidades de tu app:

  • Biblioteca empaquetada (bundled): El modelo de IA se integra en tu aplicación en tiempo de compilación, lo que aumenta el tamaño de la app (unos 2-3 MB), pero asegura que el escaneo esté disponible al instante, incluso sin conexión.
  • Biblioteca sin empaquetar (unbundled): El modelo se descarga dinámicamente mediante los Servicios de Google Play, ocupando mucho menos espacio inicial (alrededor de 200 KB) y descargándose la primera vez que se necesita. Ideal si quieres una app ligera.

Elijas la opción que elijas, ambas permiten detectar todos los formatos populares de códigos de barras: CODE 128, CODE 39, CODE 93, Codabar, EAN-13, EAN-8, ITF, UPC-A, UPC-E, QR, PDF417, Aztec y Data Matrix.

Instalación y dependencias: ¿qué necesitas?

Antes de empezar, recuerda que ML Kit requiere como mínimo Android API 21 (Android 5.0 Lollipop) o superior. Debes asegurarte de que tu proyecto incluye el repositorio Maven de Google en el archivo build.gradle tanto a nivel de proyecto como de app.

  • Para usar la librería empaquetada (modelo integrado):
    implementation 'com.google.mlkit:barcode-scanning:17.3.0'
  • Para la versión sin empaquetar (a través de Google Play Services):
    implementation 'com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1'

En el caso de la versión dinámica, puedes además agilizar la descarga del modelo añadiendo una declaración <meta-data> en tu AndroidManifest.xml para que el modelo se descargue junto a la instalación de la app. Así, cuando el usuario abra tu app por primera vez, el escáner estará listo para usarse sin esperas.

Recomendaciones para imágenes de entrada y calidad del escaneo

Lograr que el escáner funcione de forma precisa depende mucho de la calidad de las imágenes que se le envían. Aquí van unos tips básicos pero vitales, tanto para códigos de barras como para QR:

  • El código de barras dentro de la imagen debe ocupar el suficiente número de píxeles. Por ejemplo, una unidad mínima en el código debe medir al menos 2 píxeles de ancho (y altura en 2D).
  • Para un EAN-13 (el típico de los productos en tiendas), se necesitan al menos 190 píxeles de ancho.
  • Los formatos densos, como PDF417, pueden llegar a requerir imágenes de más de 1.000 píxeles de ancho para interpretarse correctamente.
  • Imágenes borrosas o con mala iluminación perjudican el reconocimiento. Si la app no obtiene buen resultado, pide al usuario que haga una foto mejor.
  • Para apps estándar, se recomiendan resoluciones HD (1280×720) o FullHD (1920×1080) para poder reconocer códigos a mayor distancia. Pero si la prioridad es un escaneo rápido, selecciona una resolución menor pero asegurando que el código ocupa la mayor parte posible de la imagen.

Estos detalles marcan la diferencia en la experiencia del usuario, especialmente en apps que necesitan escanear a cierta distancia o en situaciones de poca luz.

Configuración avanzada del escáner de códigos de barras

ML Kit permite que optimices el proceso de escaneo a tu gusto:

  • Puedes limitar los formatos que detecta el escáner para que sea aún más rápido (por ejemplo, solo QR y Aztec si tu caso de uso no precisa leer otros tipos).
  • Con la opción enableAllPotentialBarcodes(), el sistema detecta todos los códigos posibles, incluso aunque no puedan decodificarse, útil para previsualizar antes de hacer zoom.
  • La función de autozoom (desde la versión 17.2.0 empaquetada y 18.3.0 sin empaquetar) permite que la app reciba sugerencias para hacer zoom en la cámara automáticamente cuando el código está demasiado lejos, mejorando el ratio de éxito en la lectura.

Este nivel de personalización permite adaptar el escaneo tanto para apps sencillas como para soluciones muy ajustadas a necesidades empresariales.

Cómo preparar la imagen y escanear paso a paso

El proceso sigue siempre este patrón:

  1. Crear un objeto InputImage a partir de tu fuente de datos: puede ser un Bitmap, un media.Image (como el que devuelve la cámara), un ByteBuffer, un array de bytes o incluso desde un archivo guardado en el dispositivo.
  2. Pasa el objeto InputImage al método process() del escáner.
  3. Recibe una lista de resultados en forma de objetos Barcode, que contienen toda la información extraída: el texto, la posición en la imagen y datos específicos según el tipo de código (por ejemplo, una URL, un email, etc.).

Además, ML Kit ofrece utilidades para calcular automáticamente la rotación de la imagen, sobre todo si usas bibliotecas de cámara como CameraX. Si tu cámara no lo proporciona, puedes calcular la rotación en función de la orientación del dispositivo y del sensor.

Mejorando la experiencia y el rendimiento en tiempo real

Si tu app necesita escanear en tiempo real, hay varios trucos para optimizar la velocidad y la fluidez:

  • Evita usar la máxima resolución de la cámara, ya que procesar imágenes de más de 10 megapíxeles puede ralentizar mucho el sistema. Lo ideal son fotos de hasta 2 megapíxeles.
  • Si es vital ir rápido, baja aún más la resolución siempre que el tamaño del código esté dentro de los requisitos mencionados.
  • No proceses todos los fotogramas de vídeo: si el detector está aún trabajando y llega una nueva imagen, simplemente ignórala.
  • Si superpones gráficos con los resultados del escaneo, primero obtén el resultado y luego haz el renderizado en un único paso sobre el fotograma, para ahorrar recursos.
  • Los mejores formatos para trabajar con la API son YUV_420_888 (>Camera2) y NV21 (cámara clásica).

Con estos detalles, la experiencia de escaneo será mucho más fluida para el usuario.

Integración con CameraX y el Analizador ML Kit

ML Kit en Android

La combinación de ML Kit y CameraX potencia los proyectos Android actuales. CameraX es la biblioteca recomendada para manejar la cámara en Android, y se integra perfectamente con ML Kit gracias a la interfaz ImageAnalysis.Analyzer.

  • Con el Analizador ML Kit, puedes pasar cada fotograma de vídeo directamente al detector de ML Kit, obteniendo resultados en tiempo real.
  • CameraX, mediante PreviewView y CameraController, te permite mostrar la cámara en la pantalla y mantener perfectamente sincronizados los resultados del escaneo con la imagen mostrada.
  • El analizador se encarga de las transformaciones de coordenadas entre la imagen de la cámara y la previsualización, así que las posiciones de los códigos u objetos detectados siempre coinciden con lo que ve el usuario.

De este modo, incluso en aplicaciones con alto componente visual, es posible proporcionar feedback inmediato, como marcar cuadros alrededor de los códigos o resaltar objetos en pantalla.

Escaneo de códigos con Firebase ML Kit (versión anterior)

Antes del lanzamiento del SDK unificado, la API de escaneo estaba también disponible en Firebase bajo el nombre Firebase ML Kit. Aunque actualmente se recomienda el SDK independiente, muchas apps aún usan este sistema.

  • Para la versión antigua, debes añadir las dependencias firebase-ml-vision y firebase-ml-vision-barcode-model a tu proyecto.
  • Los métodos y estructura son muy similares: se crean objetos FirebaseVisionImage desde diferentes fuentes y los procesas mediante detectInImage del detector de códigos de barras.

El listado de formatos admitidos es idéntico, así como los requisitos de calidad y resolución de imagen. La diferencia principal radica en la gestión del modelo (descarga, actualizaciones y tamaño de la app).

Reconocimiento de texto: una funcionalidad extra

Además de funcionalidades de escaneo, ML Kit también permite implementar reconocimiento de texto en imágenes y documentos. Esto resulta muy útil si deseas extraer información textual de códigos, tickets, facturas o tarjetas de visita.

  • El reconocimiento de caracteres en textos latinos requiere caracteres de al menos 16×16 píxeles. Para idiomas asiáticos, el mínimo es de 24×24 píxeles.
  • Para reconocimiento en tiempo real, usa imágenes pequeñas pero con suficiente resolución para garantizar la legibilidad.
  • ML Kit ofrece APIs específicas para reconocimiento general de texto y otra para documentos, esta última en la nube y con permisos en Firebase.

El proceso consiste en crear tu objeto de imagen, pasarlo al reconocedor y obtener como resultado el texto detectado con su posición. Puede funcionar en el dispositivo o en la nube, según el tamaño y la complejidad del texto.

Detección y seguimiento de objetos con ML Kit

Seguimiento de objetos MLKit

Otra de las funcionalidades destacadas de ML Kit es la detección y seguimiento de objetos, ideal para aplicaciones que necesitan identificar múltiples objetos dentro de una imagen o en vídeo, como inventarios, domótica, robótica o AR.

  • Permite modo transmisión (STREAM_MODE) para vídeo en tiempo real o modo de imagen única (SINGLE_IMAGE_MODE) para fotos.
  • Detecta y sigue hasta cinco objetos a la vez, pudiendo clasificar cada uno en categorías como moda, comida, objetos para el hogar, lugares o plantas.
  • El proceso de entrada puede hacerse desde Bitmap, media.Image, ByteBuffer o archivos, y devuelve datos como la caja delimitadora, ID de seguimiento y etiquetas con confianza.

Para un rendimiento óptimo en tiempo real, se recomienda usar imágenes de menor tamaño, desactivar clasificación si no es necesaria y limitar el número de objetos detectados para acelerar la respuesta.

Prácticas recomendadas y ejemplos reales

Para aprovechar al máximo ML Kit, conviene seguir algunas buenas prácticas: gestionar correctamente recursos como ImageProxy en CameraX, validar resultados antes de mostrarlos, proporcionar feedback visual inmediato y adaptar la detección según el contexto. Existen numerosos ejemplos en Google Codelabs y en repositorios que muestran cómo implementar estas funciones en proyectos reales, desde inventario hasta gestión documental.

Cómo personalizar códigos QR desde Android
Artículo relacionado:
Cómo crear y personalizar códigos QR fácilmente desde tu móvil

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.