}
FreeQR
Back to Blog
Correccion de Errores en Codigos QR: Por Que los Codigos Dañados Siguen Funcionando

Correccion de Errores en Codigos QR: Por Que los Codigos Dañados Siguen Funcionando

Descubre como funciona la correccion de errores en codigos QR, los cuatro niveles (L, M, Q, H) y por que los codigos dañados siguen escaneandose. Elige el nivel adecuado con FreeQR.

Un codigo QR de menu de restaurante con un cerco de cafe en una esquina. Un cartel de jardin desteñido por tres meses de sol directo. Una etiqueta de almacen manchada de grasa. Los tres siguen funcionando al escanear.

No es cuestion de suerte. Cada codigo QR contiene datos redundantes que permiten a los escaneres reconstruir las partes dañadas o perdidas. La especificacion ISO/IEC 18004:2024 lo denomina correccion de errores en codigos QR, y forma parte del formato desde que se estandarizo por primera vez en el año 2000. Un codigo de barras tradicional con el mismo daño seria ilegible.

Puntos clave:

  • Los codigos QR utilizan correccion de errores Reed-Solomon para recuperarse de daños fisicos, segun la norma ISO/IEC 18004:2024.

  • Cuatro niveles: L (7%), M (15%), Q (25%), H (30%). El porcentaje se refiere a codewords recuperables, no al area fisica.

  • Mayor correccion implica mas tolerancia al daño, pero menos capacidad de datos.

  • Los codigos QR nunca devuelven datos incorrectos. Fallan de forma segura cuando el daño supera la capacidad de correccion.

  • Los codigos QR dinamicos almacenan URLs de redireccion cortas, por lo que el nivel M ofrece margen de sobra para la mayoria de casos de uso.

¿Que es la correccion de errores en codigos QR?

Modulos dañados de un codigo QR resaltados en rojo y reconstruidos en verde mediante correccion de errores Reed-Solomon

Piensa en ello como datos de respaldo integrados en el propio codigo. Cuando la suciedad, los arañazos o el desgaste destruyen algunos de los modulos en blanco y negro, el escaner utiliza esos datos de respaldo para rellenar los huecos. El mensaje completo se recupera incluso cuando faltan fragmentos.

La base matematica se llama correccion de errores Reed-Solomon. Irving S. Reed y Gustave Solomon la publicaron en 1960 en el MIT Lincoln Laboratory para comunicaciones por satelite, donde el ruido de la señal corrompe los datos transmitidos. El mismo algoritmo acabo utilizandose en CDs, DVDs, discos Blu-ray y en los sistemas de datos de las sondas Voyager de la NASA. Cuando DENSO WAVE diseño el codigo QR en 1994, Reed-Solomon fue la eleccion natural. Ya habia sobrevivido al espacio profundo.

El estandar de codigos QR especifica cuatro niveles de correccion de errores. Cada nivel determina cuanta redundancia contiene el codigo y, como contrapartida directa, cuantos datos totales puede almacenar.

Los cuatro niveles de correccion de errores en codigos QR

Cada codigo QR se genera con uno de los cuatro niveles de correccion de errores. La tabla siguiente muestra que recupera cada nivel, cuanta capacidad de datos ofrece en su tamaño maximo (Version 40, el codigo QR mas grande definido en la especificacion) y para que situaciones es mas adecuado.

Nivel

Nombre

Recuperacion

Capacidad max. (V40)

Ideal para

L

Low

7%

2,953 bytes

Pantallas digitales, entornos limpios

M

Medium

15%

2,331 bytes

Impresion interior, folletos, menus (opcion predeterminada mas habitual)

Q

Quartile

25%

1,663 bytes

Señalizacion exterior, packaging, superficies con desgaste

H

High

30%

1,273 bytes

Logos sobre el codigo, entornos industriales y de fabrica

Mas proteccion cuesta almacenamiento. En la Version 40, el nivel L almacena 2,953 bytes. El nivel H almacena 1,273. Eso supone una reduccion del 57% en capacidad a cambio de resistencia al daño.

La mayoria de los generadores utilizan el nivel M por defecto. DENSO WAVE confirma que es el nivel mas seleccionado en la practica. El nivel M gestiona arañazos leves, decoloracion ligera y marcas de huellas dactilares sin hacer que el codigo sea mas grande de lo necesario.

Esos porcentajes de la ISO son maximos teoricos. En la practica, los codigos tienden a fallar antes. El ingeniero de software Huon Wilson probo 12,800 configuraciones de codigos QR con daños simulados y descubrio que los codigos de nivel H producian un 60% mas de escaneos exitosos que los de nivel L. Los umbrales practicos de fallo fueron aproximadamente del 6% para L, 12% para M, 18% para Q y 20% para H. El daño real no se distribuye de manera uniforme, asi que el codigo alcanza su limite antes de lo que sugiere la especificacion.

¿Cuanto daño puede soportar un codigo QR?

Codigo QR con mancha de cafe en el centro que sigue escaneandose frente a codigo QR con esquina arrancada que falla

Los porcentajes de la tabla se refieren a codewords (unidades de datos codificados), no al area fisica. Dañar el 15% de la superficie no implica necesariamente corromper el 15% de los codewords. La razon esta en como se organizan los datos dentro de la cuadricula.

Entrelazado de codewords

En los codigos QR de mayor tamaño, los datos codificados se dividen en multiples bloques Reed-Solomon y luego se entrelazan antes de colocarse en la cuadricula. Un arañazo en diagonal no destruye codewords consecutivos. En su lugar, daña un codeword aqui, se salta tres, daña otro alla. El daño se reparte entre varios bloques de correccion en vez de saturar uno solo. Por eso un arañazo largo suele ser mas facil de sobrevivir que un agujero profundo concentrado en un punto.

Deteccion de errores frente a correccion de errores

Reed-Solomon puede detectar el doble de errores de los que puede corregir. En el nivel M, el algoritmo corrige hasta el 15% de los codewords corruptos, pero detecta corrupcion en hasta el 30%. Cuando el daño supera el margen de correccion pero queda dentro del rango de deteccion, el escaner sabe que los datos estan comprometidos y no devuelve nada.

Esto es una medida de seguridad. Un codigo QR dañado nunca te enviara a la web equivocada ni cargara el importe a la cuenta incorrecta. Funciona correctamente o no devuelve nada. Para codigos de pago y tokens de autenticacion, esa distincion importa mucho.

La excepcion de los patrones de busqueda

Los tres cuadrados grandes en las esquinas de cada codigo QR son los patrones de busqueda. El escaner los utiliza para localizar y orientar el codigo. No estan protegidos por la correccion de errores como los modulos de datos. Si un desgarro, un pliegue o una pegatina cubre una de las tres esquinas, el codigo casi con total seguridad fallara independientemente del nivel de correccion. Ninguna cantidad de redundancia salva un codigo con una esquina perdida.

¿Que nivel de correccion de errores elegir?

Esto es lo que conviene elegir en cada situacion habitual.

Impresion interior (menus, folletos, tarjetas de visita): Nivel M. Entornos limpios con contacto fisico minimo. El nivel M gestiona manchas o pliegues ocasionales sin hacer que el codigo sea mas grande de lo necesario.

Superficies exteriores o expuestas a la intemperie (carteles de jardin, pegatinas para coches, paradas de autobus): Nivel Q o H. Decoloracion por rayos UV, lluvia, contacto fisico de los transeuntes. Estos codigos necesitan un mayor margen de correccion de errores porque el daño se acumula durante semanas y meses.

Codigos QR con logo o diseño personalizado: Nivel H. Un logo centrado cubre intencionadamente modulos de datos, normalmente entre el 20-30% del area del codigo. El 30% de capacidad de correccion del nivel H absorbe eso. Sin el, estas jugandotela. Un estudio del AutoID Lab de la University of Memphis probo codigos QR de diseño y encontro que la tasa de lectura promedio era del 61.5%, con la peor cayendo al 9.6%. Los codigos sin modificar alcanzaban un ~95%. La principal causa de fallo fue el daño en las esquinas de los patrones de busqueda.

Pantallas digitales (monitores, presentaciones, correo electronico): Nivel L. No hay riesgo de daño fisico. El codigo existe como pixeles en una pantalla. El nivel L mantiene el codigo compacto y rapido de escanear.

Codigos QR dinamicos: El nivel M suele ser suficiente. Un codigo QR dinamico almacena solo una URL de redireccion corta (por ejemplo, freeqr.to/abc123), no el contenido del destino completo. Menos datos significa menos modulos, lo que a su vez significa que la correccion de errores dispone de proporcionalmente mas espacio para trabajar.

En el diseñador de FreeQR, los cuatro ajustes de correccion de errores se denominan Low, Medium, High y Highest (correspondientes a L, M, Q y H). La opcion predeterminada es Medium. Al añadir un logo, el indicador de escaneabilidad te avisa si el logo cubre demasiados modulos para el nivel seleccionado. Los codigos dinamicos tambien permiten actualizar el destino sin reimprimir.

Un detalle importante: el nivel de correccion de errores se fija al generar el codigo. No se puede cambiar despues de imprimir. Si eliges el nivel L y mas tarde trasladas el codigo al exterior, la unica solucion es generar un codigo nuevo con un nivel superior. En caso de duda, elige el nivel M.

¿Quieres ver como funciona? Crea un codigo QR gratis en FreeQR y elige tu nivel de correccion de errores.

Preguntas frecuentes

¿Que es la correccion de errores en codigos QR?

Datos adicionales integrados en un codigo QR que permiten a los escaneres reconstruir modulos dañados o perdidos. El mecanismo utiliza codigos Reed-Solomon, un algoritmo matematico desarrollado originalmente para comunicaciones por satelite y adoptado posteriormente en la especificacion de codigos QR (ISO/IEC 18004:2024).

¿Cuanto daño puede tener un codigo QR y seguir funcionando?

Hasta el 30% en el nivel H, 25% en Q, 15% en M y 7% en L. Estos porcentajes se refieren a la proporcion de codewords recuperables, no al area fisica del codigo. La capacidad real de supervivencia depende de donde se produce el daño y de como interactua con el entrelazado de codewords.

¿Cuales son los cuatro niveles de correccion de errores?

L (Low, 7%), M (Medium, 15%), Q (Quartile, 25%) y H (High, 30%). La mayoria de los generadores utilizan M por defecto.

¿Que nivel de correccion de errores debo usar para un logo?

Nivel H (30%). Un logo centrado normalmente cubre entre el 20-30% de los modulos del codigo. El nivel H proporciona al escaner suficientes datos redundantes para reconstruir lo que el logo oculta. Usar un nivel inferior con un logo puede hacer que el codigo sea imposible de escanear.

¿Puede un codigo QR dañado dar informacion incorrecta?

No. Cuando el daño supera lo que el algoritmo puede reparar, el escaner no devuelve nada. Obtienes un resultado vacio, nunca una URL incorrecta ni una direccion de pago equivocada. Reed-Solomon puede detectar el doble de errores de los que puede corregir, por lo que el codigo sabe cuando esta demasiado dañado para ser fiable.


Escrito por Andy Lee, especialista en tecnologia QR en FreeQR.