Codificación y decodificación
La codificación es el proceso que convierte datos a otro formato siguiendo unas reglas determinadas, y la decodificación es el proceso inverso, que restaura los datos originales. Este par de operaciones se usa en todos los ámbitos de la tecnología digital, como la codificación de caracteres (UTF-8), la compresión de imágenes (JPEG) o el cifrado (AES).
La generación de un código QR es la codificación en sí. Los datos de entrada (URL, texto, información de contacto, etc.) se convierten en un símbolo en blanco y negro mediante una serie de pasos. Estos pasos son la selección del modo de codificación, la conversión de los datos en una secuencia de bits, la adición del código de corrección de errores, la aplicación del patrón de máscara y la colocación de los módulos. Leer un código QR con la cámara del smartphone es la decodificación. En ella, el proceso en orden inverso (reconocimiento de imagen, extracción de los módulos, eliminación de la máscara, corrección de errores y restauración de los datos a partir de la secuencia de bits) se ejecuta en un instante.
El código QR tiene 4 modos de codificación, y se selecciona automáticamente el modo más eficiente según el tipo de datos. Si son solo números, se usa el modo numérico (unos 3,3 bits por carácter); si son caracteres alfanuméricos, el modo alfanumérico (unos 5,5 bits); si es japonés, el modo kanji (13 bits); y en los demás casos, el modo byte (8 bits). Como el tamaño del código QR cambia según el modo elegido incluso con los mismos datos, la optimización del codificador está directamente ligada a la reducción del tamaño del código.
La robustez de la decodificación se apoya en la corrección de errores mediante el código Reed-Solomon. Aunque una parte de los módulos no se pueda leer por suciedad o daños, la secuencia de bits original puede restaurarse a partir de los datos redundantes. Es un diseño que garantiza la fiabilidad en la decodificación pagando el costo de añadir datos "extra" durante la codificación.