Des données au motif
Fabriquer un QR code commence par le choix d’un mode d’encodage adapté aux données : numérique, alphanumérique, octet ou kanji. L’encodeur convertit les données en bits, les découpe en mots de code de 8 bits et ajoute des mots de code de correction d’erreur Reed-Solomon au niveau choisi. Il retient ensuite la plus petite version qui convient.
Les mots de code sont placés dans la grille selon un parcours en zigzag qui évite les motifs fixes. Enfin, l’encodeur applique l’un des huit motifs de masque pour fragmenter les grandes zones vides ou les formes trompeuses, et consigne le masque et le niveau de correction d’erreur dans les informations de format.
- Choisir le mode d’encodage
- Encoder les données et ajouter les mots de code de correction d’erreur
- Choisir la version (la taille)
- Placer les motifs de repérage, de synchronisation et d’alignement
- Remplir les modules de données
- Appliquer le meilleur des huit masques et écrire les informations de format
De l’image de l’appareil photo aux données
Le décodage suit les mêmes étapes à l’envers. Le scanner trouve les trois motifs de repérage, dont le rapport 1:1:3:1:1 entre sombre et clair se distingue de la plupart des images, et s’en sert avec les motifs de synchronisation et d’alignement pour cartographier la grille. Il lit les informations de format, retire le masque et recueille les mots de code.
Le décodage Reed-Solomon répare ensuite les mots de code mal lus, dans la limite du niveau de correction d’erreur. Si trop de choses sont abîmées, le code n’est pas lu au lieu de renvoyer des données fausses, ce qui explique que les QR codes donnent rarement des résultats illisibles.
Pourquoi la taille et le contraste comptent
Chaque étape suppose que l’appareil photo distingue les modules sombres des modules clairs. De petits modules, un faible contraste, des reflets, du flou ou une zone de silence manquante mettent plus de modules en doute, et la correction d’erreur ne peut en absorber qu’un certain nombre. Des données courtes, un contraste fort et une marge dégagée donnent au décodeur la tâche la plus facile.