De los datos al patrón
Crear un código QR empieza por elegir un modo de codificación adecuado para los datos: numérico, alfanumérico, de bytes o kanji. El codificador convierte los datos en bits, los divide en palabras de código de 8 bits y añade palabras de código de corrección de errores Reed-Solomon al nivel elegido. Después escoge la versión más pequeña en la que caben.
Las palabras de código se colocan en la cuadrícula siguiendo un recorrido en zigzag que salta los patrones fijos. Por último, el codificador aplica una de ocho máscaras para romper las zonas en blanco grandes o las formas que pueden confundir, y anota la máscara y el nivel de corrección de errores en la información de formato.
- Elegir el modo de codificación
- Codificar los datos y añadir las palabras de código de corrección de errores
- Elegir la versión (el tamaño)
- Colocar los patrones de posición, de sincronización y de alineación
- Rellenar los módulos de datos
- Aplicar la mejor de las ocho máscaras y escribir la información de formato
De la imagen de la cámara a los datos
La decodificación recorre los mismos pasos a la inversa. El escáner encuentra los tres patrones de posición, cuya proporción 1:1:3:1:1 de oscuro y claro destaca en casi cualquier imagen, y los usa junto con los patrones de sincronización y de alineación para trazar la cuadrícula. Lee la información de formato, quita la máscara y recoge las palabras de código.
Después, la decodificación Reed-Solomon repara las palabras de código mal leídas, hasta el límite del nivel de corrección de errores. Si hay demasiado daño, el código no se lee, en lugar de devolver datos incorrectos, y por eso los códigos QR rara vez dan resultados ininteligibles.
Por qué importan el tamaño y el contraste
Cada paso depende de que la cámara distinga los módulos oscuros de los claros. Los módulos pequeños, el poco contraste, los reflejos, el desenfoque o la falta de zona de silencio dejan más módulos en duda, y la corrección de errores solo puede absorber hasta cierto punto. Mantener los datos cortos, el contraste fuerte y el margen despejado le pone las cosas fáciles al decodificador.