Blog
9 min readMoreFreeTools Team

Cómo Funcionan los Códigos QR: La Corrección de Errores Explicada

Descubra cómo funcionan los códigos QR por dentro, por qué la corrección de errores Reed-Solomon le permite agregar un logo a un código QR y seguir escaneándolo, y cómo la capacidad, el enmascaramiento y la versión afectan cada escaneo.

cómo funcionan los códigos QRgenerador código QRcorrección de errores QRcódigo QR con logocapacidad código QR

Generador de Código QR

La herramienta gratuita mencionada en este artículo — pruébala directamente en tu navegador.

Abrir la herramienta

Cómo Funcionan los Códigos QR: La Ingeniería Detrás de Cada Escaneo

Casi con certeza ha escaneado un código QR esta semana. Los menús de restaurantes, los boletos de eventos, los empaques de productos y las pantallas de pago dependen de esos familiares cuadrados en blanco y negro. ¿Pero alguna vez se ha preguntado por qué puede colocar el logo de una empresa en el centro de un código QR y este sigue escaneándose perfectamente? La respuesta se encuentra en lo profundo de una rama de las matemáticas llamada corrección de errores Reed-Solomon, y entenderla revela cuán elegantemente diseñados están estos símbolos en realidad.

Este artículo explica cómo funcionan los códigos QR desde cero: su origen, su anatomía, los cuatro modos de codificación, los niveles de corrección de errores, los patrones de enmascaramiento y por qué algunos códigos QR se niegan a escanearse. No se requieren conocimientos previos de ingeniería.


Una Breve Historia de los Orígenes

Los códigos QR fueron inventados en 1994 por Masahiro Hara, un ingeniero de Denso Wave, una subsidiaria de Toyota. El caso de uso original era modesto: rastrear partes automotrices en el piso de una fábrica. Los códigos de barras de la época solo podían contener alrededor de 20 caracteres alfanuméricos y requerían una alineación precisa con el escáner. El equipo de Hara necesitaba algo que pudiera contener un número de pieza completo, leerse desde cualquier ángulo y decodificarse aproximadamente diez veces más rápido que un código de barras estándar.

El nombre "QR" significa Quick Response (respuesta rápida), en referencia a ese objetivo de velocidad. Denso Wave publicó el estándar públicamente y optó por no hacer cumplir su patente, razón por la cual los códigos QR se difundieron globalmente sin fricciones de licencias.


Herramienta relacionada

Generador de Código QR

Úsala directamente en tu navegador. Sin registro, sin descarga, sin datos guardados.

Usar la herramienta

La Anatomía de un Código QR

Un código QR no es una disposición aleatoria de cuadrados negros y blancos. Cada región tiene un propósito específico.

Patrones de Búsqueda

Los tres grandes patrones de búsqueda, los símbolos de cuadrado dentro de un cuadrado en tres esquinas de cada código QR, son lo primero que busca un escáner. Su distintiva proporción 1:1:3:1:1 de módulos oscuro-claro-oscuro-claro-oscuro puede detectarse a cualquier ángulo de rotación, desde cualquier distancia e incluso cuando el código está ligeramente distorsionado. Le dicen al escáner: aquí está el código, aquí está su orientación y aquí está su escala.

Una cuarta esquina se deja vacía intencionalmente. Esta asimetría le indica al escáner cuál es la parte superior.

Patrones de Alineación

Los códigos QR más grandes (Versión 2 y superiores) incluyen patrones de alineación más pequeños dispersos por el símbolo. Su función es corregir superficies curvadas o distorsionadas. Si alguna vez ha escaneado un código QR impreso en una botella cilíndrica o en relieve sobre una superficie redondeada, los patrones de alineación fueron los responsables.

Patrones de Sincronización

Entre los patrones de búsqueda discurren patrones de sincronización: tiras alternas de un módulo de ancho en negro y blanco. Funcionan como una regla, permitiendo al escáner contar filas y columnas con precisión, incluso si la imagen está ligeramente sesgada.

Información de Formato

Dos tiras que envuelven los patrones de búsqueda almacenan la información de formato: el nivel de corrección de errores y el patrón de enmascaramiento en uso. Es fundamental que estos datos se codifiquen usando un código BCH (15,5), un tipo de código corrector de errores, para que el formato pueda leerse incluso si grandes porciones del símbolo principal están dañadas. Antes de que el escáner pueda decodificar datos, debe leer la información de formato.

Módulos de Datos

El resto del símbolo consiste en módulos de datos: la carga útil codificada real. Los datos se almacenan en bytes de 8 bits y se leen en un patrón de zigzag específico, comenzando desde la esquina inferior derecha y moviéndose hacia arriba en columnas de dos módulos de ancho. El orden de lectura evita las regiones funcionales (patrones de búsqueda, patrones de alineación, tiras de sincronización y tiras de formato).


Los Cuatro Modos de Codificación

Los códigos QR admiten cuatro formas de representar datos, cada una con un conjunto de caracteres y capacidad diferentes. En la Versión 1 (el código QR más pequeño posible, 21x21 módulos) con el Nivel de Corrección de Errores M, los límites son:

Modo Conjunto de Caracteres Capacidad
Numérico Dígitos 0-9 34 dígitos
Alfanumérico 0-9, A-Z, espacio y 9 símbolos 20 caracteres
Byte Cualquier dato de 8 bits, incluyendo UTF-8 14 bytes
Kanji Caracteres japoneses de doble byte 8 caracteres

Los codificadores eligen el modo (o la combinación de modos) que empaqueta más datos en la menor cantidad de módulos. Una URL como https://morefreetools.com usa el modo Byte porque contiene letras minúsculas que no están en el conjunto alfanumérico.


Corrección de Errores Reed-Solomon: Por Qué los Códigos QR Sobreviven al Daño

Este es el corazón del artículo. Entender la corrección de errores Reed-Solomon explica el truco del logo, y mucho más.

Reed-Solomon no es exclusivo de los códigos QR. El mismo algoritmo protege datos en CDs, DVDs, discos Blu-ray, unidades de almacenamiento que usan arreglos RAID e incluso señales transmitidas de vuelta desde las sondas Voyager en el espacio profundo. Cada vez que reproduce un CD rayado y no escucha ningún ruido, Reed-Solomon está trabajando en segundo plano.

Cómo Funciona (Conceptualmente)

Piense en un arreglo de discos RAID-5. Si tiene cuatro unidades y una falla completamente, el sistema RAID puede reconstruir cada byte que estaba en la unidad fallida usando datos de paridad distribuidos entre las otras tres. No se pierde ningún dato aunque toda una unidad haya desaparecido.

Reed-Solomon funciona con un principio similar, pero matemáticamente. El codificador trata los bytes de datos como coeficientes de un polinomio. Luego evalúa ese polinomio en un conjunto de puntos adicionales y agrega esos valores al mensaje como palabras de código de verificación. El mensaje codificado es ahora más largo que los datos originales, pero lleva suficiente redundancia para que un decodificador pueda reconstruir el polinomio original, y por tanto los datos originales, incluso si algunas palabras de código han sido corrompidas o borradas por completo.

De manera crucial, Reed-Solomon no se limita a detectar errores. Los corrige. Mientras el número de palabras de código dañadas permanezca dentro del presupuesto de corrección de errores, los datos originales son completamente recuperables sin pérdida.


Los Cuatro Niveles de Corrección de Errores

Los códigos QR ofrecen cuatro niveles de corrección de errores. Los niveles más altos sacrifican capacidad (se usan más módulos para las palabras de código de verificación) a cambio de resiliencia.

Nivel Nombre Capacidad de Recuperación
L Bajo 7% de las palabras de código
M Medio 15% de las palabras de código
Q Cuartil 25% de las palabras de código
H Alto 30% de las palabras de código

Por Qué Funcionan los Códigos QR con Logos

Esta es la clave. Cuando un diseñador coloca un logo en el centro de un código QR, el logo cubre físicamente módulos de datos. Desde la perspectiva del escáner, esos módulos simplemente faltan, exactamente como una unidad fallida en la analogía RAID.

Si el código QR fue generado en el Nivel H, se puede destruir hasta el 30% del símbolo y los datos siguen siendo completamente recuperables. El logo reemplaza datos que la capa Reed-Solomon puede reconstruir a partir de las palabras de código de verificación restantes. Esto no es un truco ni el aprovechamiento de algún descuido. Es un diseño intencional: el estándar fue construido teniendo en mente exactamente este tipo de daño físico. Denso Wave pensaba en códigos de barras impresos en pisos de fábricas sucias, no en equipos de marketing añadiendo logos, pero las matemáticas no se preocupan por la intención.

La regla práctica: si su código QR tendrá un logo, siempre genérelo en el Nivel H. Mantenga el logo cubriendo menos del 30% del área del símbolo y céntrelo para evitar oscurecer los patrones de búsqueda en las esquinas.


Patrones de Enmascaramiento: Prevenir la Confusión del Escáner

Después de colocar las palabras de código de datos en el símbolo, el codificador aplica un patrón de enmascaramiento. Hay 8 máscaras estándar, cada una definida como una fórmula XOR simple aplicada a cada módulo de datos. Por ejemplo, el patrón de máscara 0 invierte cada módulo en una posición donde (fila + columna) mod 2 == 0.

¿Por qué? Los escáneres pueden tener dificultades con grandes regiones uniformes del mismo color. Un bloque de blanco o un bloque de negro confunde a los algoritmos que buscan las proporciones específicas de los patrones de búsqueda. El enmascaramiento descompone esas regiones introduciendo un patrón alternado controlado.

El codificador prueba las 8 máscaras y evalúa cada resultado según 4 reglas de penalización que penalizan cosas como: secuencias de módulos del mismo color de más de 5 seguidos, bloques 2x2 del mismo color, patrones que se parecen a los patrones de búsqueda y proporciones desequilibradas de módulos oscuros frente a claros. La máscara con la puntuación de penalización total más baja es la que se usa en el símbolo final.


Versión y Capacidad: De la Versión 1 a la Versión 40

Los códigos QR vienen en 40 versiones. La Versión 1 tiene 21x21 módulos. Cada incremento de versión añade 4 módulos tanto al ancho como a la altura, por lo que la Versión 40 tiene 177x177 módulos.

En la Versión 40 con el Nivel L de corrección de errores (la menor redundancia, la mayor capacidad):

  • 7.089 dígitos numéricos
  • 4.296 caracteres alfanuméricos
  • 2.953 bytes (aproximadamente 2,9 KB de datos binarios)
  • 1.817 caracteres Kanji

Los niveles de corrección de errores más altos reducen estas capacidades porque más módulos son consumidos por las palabras de código de verificación. El generador de códigos QR que elija seleccionará automáticamente la versión mínima que se ajuste a sus datos en el nivel de corrección de errores elegido.


Por Qué Algunos Códigos QR No Se Escanean

No todos los códigos QR se escanean en el primer intento. Estas son las causas más comunes de fallo:

Contraste insuficiente. Un código QR necesita un fuerte contraste entre módulos oscuros y claros. Imprimir gris oscuro sobre gris medio, o usar un color muy claro sobre blanco, reduce la relación de contraste por debajo de lo que la mayoría de los escáneres pueden manejar. El estándar recomienda una relación de contraste mínima de 4:1.

Zona silenciosa ausente o estrecha. Cada código QR debe estar rodeado por un borde en blanco llamado zona silenciosa, de al menos 4 módulos de ancho en todos los lados. Imprimir el código demasiado cerca de otros elementos de diseño, o hasta el borde de una etiqueta, elimina la zona silenciosa y provoca fallos de escaneo.

Demasiados datos para la versión. Si el codificador se ve obligado a usar una versión muy pequeña con un nivel de corrección de errores alto para mantener el código compacto, los módulos se vuelven muy pequeños. Impresos en tamaños físicos pequeños, los módulos pueden ser demasiado finos para que la cámara de un teléfono los resuelva.

Superficies reflectantes. Imprimir un código QR en papel brillante, metal o vidrio puede causar reflejos que eliminan porciones del símbolo. Los acabados mate son mucho más confiables para el escaneo.

Ángulo de escaneo extremo. Escanear a un ángulo mayor de aproximadamente 45 grados introduce suficiente distorsión de perspectiva para que los patrones de búsqueda y alineación no puedan compensar. Mantenga el escaneo lo más perpendicular posible en la práctica.

Símbolo dañado o sucio. Más allá del presupuesto de corrección de errores, el daño físico realmente impide la decodificación. Un código QR en el Nivel H puede sobrevivir un 30% de daño; un código en el Nivel L solo puede sobrevivir un 7%.


Códigos QR Dinámicos vs. Estáticos

Existe una distinción práctica importante entre dos tipos de códigos QR que se encuentran habitualmente.

Un código QR estático codifica la URL de destino final (u otros datos) directamente en el símbolo. Si la URL cambia, debe generar e imprimir completamente un nuevo código QR. Los códigos estáticos son simples y no tienen dependencias de infraestructura continuas.

Un código QR dinámico codifica una URL de redirección corta (generalmente alojada por un servicio de código QR). Cuando alguien lo escanea, su teléfono obtiene la URL de redirección, que apunta al destino real. El destino real puede cambiarse en el panel de control del servicio en cualquier momento sin regenerar ni reimprimir el código QR. Los códigos dinámicos son útiles para campañas impresas donde el destino puede necesitar actualizarse después de distribuir los materiales.

Tenga en cuenta que los códigos dinámicos dependen de que el servicio de redirección siga operativo. Un código estático funciona indefinidamente, siempre que la URL de destino esté activa.


Preguntas Frecuentes

¿Por qué un código QR con un logo sigue escaneándose?

Un logo colocado sobre un código QR destruye físicamente algunos módulos de datos. Sin embargo, los códigos QR generados en el Nivel de Corrección de Errores H pueden recuperar hasta el 30% de las palabras de código dañadas usando las matemáticas Reed-Solomon. El logo esencialmente activa el mismo mecanismo de recuperación que el daño físico. Mientras el logo cubra menos del 30% del símbolo y esté centrado para evitar los patrones de búsqueda en las esquinas, el código se escaneará.

¿Qué es el algoritmo Reed-Solomon en términos sencillos?

Reed-Solomon es una técnica matemática para agregar redundancia estructurada a los datos. El codificador representa sus datos como un polinomio y calcula valores de verificación adicionales en puntos extra de ese polinomio. Si algunos datos se pierden o corrompen posteriormente, el decodificador usa esos valores de verificación adicionales para reconstruir matemáticamente el polinomio original, recuperando los datos perdidos. La misma técnica protege CDs, DVDs y la telemetría de naves espaciales.

¿Cuál es la cantidad máxima de datos que puede contener un código QR?

Un código QR de Versión 40 en el Nivel de Corrección de Errores L puede contener hasta 7.089 dígitos numéricos, 4.296 caracteres alfanuméricos o 2.953 bytes de datos binarios. En la práctica, la mayoría de los códigos QR codifican URLs cortas y usan mucho menos que la capacidad máxima, lo que permite una versión más pequeña y un escaneo más sencillo.

¿Debo usar el Nivel H de corrección de errores para todos los códigos QR?

No necesariamente. El Nivel H produce un símbolo más denso y grande para la misma carga útil de datos porque se usan más módulos para las palabras de código de verificación. Si su código QR no tendrá logo y se imprimirá limpiamente a un tamaño razonable, el Nivel M (15% de recuperación) suele ser suficiente y produce un código más fácil de escanear. Use el Nivel H al agregar un logo, al imprimir en una superficie potencialmente sucia o cuando el código deba ser muy pequeño.

¿Qué es la zona silenciosa y por qué importa?

La zona silenciosa es el borde blanco en blanco que rodea el símbolo del código QR. Debe tener al menos 4 módulos de ancho en todos los lados. Sin la zona silenciosa, un escáner no puede determinar dónde termina el símbolo y dónde comienza el diseño circundante. Los patrones de búsqueda dependen de detectar una transición de blanco (zona silenciosa) al primer módulo oscuro. Elimine la zona silenciosa y hasta un código QR perfectamente formado no se escaneará de manera confiable.


¿Listo para generar un código QR con todo este conocimiento en mano? Use el Generador de Código QR en MoreFreeTools para crear códigos en cualquier nivel de corrección de errores, agregar un logo y descargar un archivo listo para imprimir.

Herramienta relacionada

Generador de Código QR

Úsala directamente en tu navegador. Sin registro, sin descarga, sin datos guardados.

Usar la herramienta