Qraft

Cómo funcionan los códigos QR - Estructura y principio de lectura

¿Qué es un código QR?

Un código QR (Quick Response Code) es un código de barras bidimensional desarrollado por Denso Wave en 1994. A diferencia de los códigos de barras tradicionales que almacenan datos en una sola dirección, los códigos QR codifican información tanto horizontal como verticalmente, lo que les permite contener de decenas a cientos de veces más datos.

Como su nombre "Quick Response" indica, los códigos QR fueron diseñados para una lectura de alta velocidad. Hoy en día, basta con apuntar la cámara de un smartphone a un código QR para decodificarlo al instante, lo que permite una amplia gama de usos, desde abrir URL y conectarse a Wi-Fi hasta procesar pagos móviles.

Desglose de la estructura de un código QR

Un código QR puede parecer un patrón aleatorio de puntos blancos y negros, pero en realidad está compuesto por regiones definidas con precisión. Los componentes principales son:

  • Patrones de búsqueda: los tres cuadrados grandes en las esquinas superior izquierda, superior derecha e inferior izquierda. Permiten a los escáneres detectar instantáneamente la posición y orientación del código QR.
  • Patrón de alineación: un cuadrado más pequeño presente en la versión 2 y superiores. Corrige la distorsión cuando el código se imprime en superficies curvas.
  • Patrones de temporización: líneas alternas en blanco y negro que conectan los patrones de búsqueda. Sirven como líneas de referencia para determinar con precisión las coordenadas de las celdas.
  • Área de datos: la región donde se codifican los datos reales. Admite cuatro modos: numérico, alfanumérico, binario y kanji.
  • Palabras de corrección de errores: datos redundantes que utilizan códigos Reed-Solomon y permiten recuperar los datos incluso cuando partes del código están dañadas o sucias.

Modos de codificación de datos

Los datos almacenados en un código QR se asignan automáticamente al modo de codificación más eficiente según su contenido.

  • Modo numérico: solo dígitos del 0 al 9. Tres dígitos se comprimen en 10 bits, lo que lo convierte en el modo más eficiente. Se pueden almacenar hasta 7.089 caracteres.
  • Modo alfanumérico: 45 caracteres que incluyen 0-9, A-Z, espacio y símbolos seleccionados. Dos caracteres se convierten en 11 bits.
  • Modo byte: almacena secuencias de bytes arbitrarias como UTF-8. Las URL y el texto no latino suelen utilizar este modo.
  • Modo kanji: codifica eficientemente caracteres kanji Shift_JIS a 13 bits por carácter.

Los datos codificados se convierten en un flujo de bits y se organizan como celdas (puntos blancos y negros) en el código QR. Cuantos más datos se necesiten almacenar, mayor será la versión del código QR, que va desde la versión 1 (21×21 celdas) hasta la versión 40 (177×177 celdas) en 40 niveles.

Cómo funciona la corrección de errores

Una de las características más destacadas de los códigos QR es su robusta capacidad de corrección de errores. Mediante un algoritmo matemático llamado códigos Reed-Solomon, los códigos QR pueden recuperar los datos originales incluso cuando partes del código están sucias o dañadas.

Existen cuatro niveles de corrección de errores:

  • L (Low): recupera hasta aproximadamente el 7% de daño
  • M (Medium): recupera hasta aproximadamente el 15% de daño
  • Q (Quartile): recupera hasta aproximadamente el 25% de daño
  • H (High): recupera hasta aproximadamente el 30% de daño

Los niveles de corrección más altos mejoran la capacidad de recuperación, pero reducen la cantidad de datos que se pueden almacenar, ya que se utiliza más espacio para datos redundantes. Al superponer un logotipo en el centro de un código QR, normalmente se elige el nivel H, ya que el logotipo oculta parte del área de datos.

Cómo leen los smartphones los códigos QR

Cuando la cámara de un smartphone escanea un código QR, se producen los siguientes pasos:

  • 1. Detección: se analiza la imagen de la cámara para localizar los tres patrones de búsqueda, determinando la posición, el tamaño y el ángulo del código QR.
  • 2. Normalización: se corrige la distorsión de perspectiva de las tomas en ángulo utilizando el patrón de alineación como referencia.
  • 3. Muestreo: los patrones de temporización establecen una cuadrícula de celdas, y cada celda se clasifica como blanca o negra.
  • 4. Decodificación: la información de formato revela el nivel de corrección de errores y el patrón de máscara. Se elimina la máscara para extraer los bits de datos sin procesar.
  • 5. Corrección de errores: los códigos Reed-Solomon detectan y corrigen cualquier error en los datos.
  • 6. Interpretación: los datos decodificados se convierten al formato apropiado (URL, texto, configuración Wi-Fi, etc.) y se ejecuta la acción correspondiente.

Todo este proceso se completa en apenas unas decenas de milisegundos, por lo que los usuarios ven los resultados en el momento en que apuntan su cámara.

Cuanto más se comprende la mecánica de los códigos QR, mejor se puede optimizar el diseño y la ubicación para obtener mayores tasas de escaneo.

Relacionado: consulta también nuestra guía sobre comparación de tipos de códigos QR.

Consejos prácticos para usar códigos QR

Comprender cómo funcionan los códigos QR ayuda a utilizarlos de forma más eficaz. Estos son algunos consejos prácticos:

  • Mantener los datos compactos: utilizar acortadores de URL para reducir el número de caracteres. Esto mantiene la versión del código QR pequeña y mejora la fiabilidad del escaneo.
  • Asegurar suficiente contraste: un bajo contraste entre los colores de primer plano y fondo puede provocar fallos en el escaneo. Los puntos negros sobre fondo blanco son la combinación más fiable.
  • Cuidar el tamaño de impresión: para tarjetas de visita, al menos 2 cm de lado. Para carteles, escalar según la distancia de escaneo prevista.
  • Elegir el nivel de corrección de errores adecuado: usar el nivel H al superponer un logotipo y el nivel L para maximizar la capacidad de datos.