Les QR Codes déchiffrés
Un Quick Response Code ressemble à un damier fou, un labyrinthe impossible, un carré glitché. Pourtant ces quelques pixels sont une véritable prouesse d’ingénierie numérique.
Interactive QR Code from Shri Khalpada
La légende dit que son créateur Masahiro Hara s’est inspiré du jeu de go pour concevoir sa structure. Il est normalisé selon la norme ISO/IEC 18004, qui définit précisément ses règles de fonctionnement.
Avant les QR codes, on utilisait déjà les codes-barres (1D), une suite de lignes verticales alignées horizontalement, lisibles par un scan rapide 1. Ils ne peuvent contenir que 48 chiffres, répartis horizontalement, souvent réécrits à coté en cas de problème de scan.
Le QR code, lui, est un code bidimensionnel (2D). Il encode l’information à la fois horizontalement et verticalement, ce qui permet de stocker :
- jusqu’à 7 089 chiffres ou 4 296 caractères alphanumériques2,
- voire des images, vidéos ou fichiers (via des liens)3.
Un QR code présente des petits carrés, comme les pixels, qui chiffrent le méssage : c’est un agencement méthodique de modules noirs et blancs, dans une grille4. C’est une architecture de données visuelle, pensée pour être rapide à repérer, facile à interpréter et résistante aux erreurs.
Comment fonctionne un QR code ?
Les repères de positionnement
La zone calme (quiet zone) : bande blanche tout autour du QR code, obligatoire pour bien le lire.
Les trois carrés d’ancrage situés dans les coins supérieurs gauche, droit et en bas à gauche sont appelés finder patterns.
- Ils mesurent 7 modules × 7 modules.
- Leur structure interne est toujours la même : un carré noir, entouré de blanc, puis un autre cadre noir.
- Ils vont identifier le QR code dans l’image (même avec un fond complexe).
- Cela va déterminer son orientation (rotation ou inclinaison).
- Corriger la perspective (si le code est photographié en biais).
Le fait qu’il n’y ait que trois repères permet de détecter l’orientation. Le coin sans repère sert de référence pour les données.
- Les motifs d’alignement (à partir de la version 2) : sont des petits motifs répétés dans la grille qui permettent de positionner les QR Code de grandes tailles.
- Les informations de format et de version : encodées dans des modules dédiés, elles permettent de comprendre rapidement la structure du code.
Les zones de synchronisation
Ces timing patterns sont deux lignes continues de modules avec un motif alternés de 1 noir et 1 blanc, ils relient les deux repères les plus éloignés à celui du centre. Ils tracent une grille virtuelle et lient ainsi les deux dimensions de la carte en donnant l’échelle.
- Une ligne horizontale (à côté du repère du haut).
- Une ligne verticale (descendant depuis le repère gauche).
Ils permettent :
- De connaître la taille exacte des modules (pixels du QR code).
- De garantir un alignement précis de la grille.
- D’aider à l’analyse si l’image est floue ou de mauvaise qualité.
C’est une boussole, essentielle pour calibrer l’interprétation du QR code. C’est aussi souvent le motif le plus régulier que l’on peut voir à l’oeil nu.
Les données
Le cœur du QR code ! Ces modules contiennent le message (des caractères alphanumérique) encodés. Commes les modules peuvent être noirs ou blanc, il faut transformer les lettre en valeurs binaires, elles-mêmes traduites en carré blanc pour le 1 et noir pour le 0. Le QR Code en exemple contient le texte “Hello World”
Afin d’encoder notre message il faut le diviser par paires : HE / LL / O / WO / RL / D. Pour chaque paire on prend la valeur ASCII de la première lettre puis on multiplie cette valeur par 45. On ajoute ensuite à cette multiplication la valeur ASCII de la deuxième lettre. La valeur obtenue est par la suite transformée en une chaîne binaire de 11 bits. Pour la lettre qui est toute seule on prend tout simplement la valeur ASCII de celle-ci que l’on transforme en une chaîne binaire de 6 bits.
Caractère | HE | LL | O (espace) | WO | RL | D |
---|---|---|---|---|---|---|
Calcul | (17×45)+14 | (21×45)+25 | (24×45)+36 | (32×45)+24 | (27×45)+21 | 13 |
Valeur décimale | 779 | 966 | 1116 | 1464 | 1236 | 13 |
Binaire | 01100001011 | 01111000110 | 10001011100 | 10110111000 | 10011010100 | 001101 |
La chaîne binaire est après cette opération 0010 000001011 01100001011 01111000110 10001011100 10110111000 10011010100 001101. Comme celle ci est trop courte on rajoute quatre zéros. Il faut ensuite délimiter des groupes de huit (octets), le dernier groupe est complété par des zéros si cela ne fait pas huit. Un QR de version 1 est fait pour coder 104 bits. Or notre chaîne de bits fait 10 octets et 104/8=13 donc il faut encore ajouter 3 octets. Il existe pour cela deux octets spécifiques 11101100 et 00010001 que l’on ajoute alternativement jusqu’à ce qu’on arrive à 104 bits.
Notre chaîne binaire est donc 00100000 01011011 00001011 01111000 11010001 01110010 11011100 01001101 01000011 01000000 11101100 00010001 11101100
La correction d’erreurs
Même sale ou abîmé, un QR code peut encore fonctionner. Grâce au système Reed-Solomon qui permet de corriger les erreurs. C’est l’une des plus grandes forces du QR code.
Image de La Joconde, transmise au Lunar Reconnaissance Orbiter. L’image à gauche, captée par la NASA. À droite, le Code de Reed–Solomon remet de l’ordre dans l’image. Reed-Solomon, c’est un algorithme qui permet de “reconstruire” les données manquantes ou illisibles.
Une application du code Reed-Solomon est l’envoi d’images numériques par le programme Voyager, une pratique qui s’est depuis lors largement répandue dans les communications dans l’espace lointain et par satellite et la radiodiffusion numérique directe.
Des versions modernes du codage convolutionnel concaténé Reed-Solomon/décodage de Viterbi ont été et sont utilisées sur les missions Mars Pathfinder, Galileo, Mars Exploration Rover et Cassini, où elles se situent à environ 1 à 1,5 dB de la limite ultime de fréquence, la capacité de Shannon.
C’est un code efficace mais son algorithme est très complexe : l’information originale du QR code est convertie en un polynôme et des points le caractérisant sont ajoutés à l’information de façon à pouvoir retrouver le polynôme même si certaines informations sont perdues ou endommagées.
- Chaque bloc de données est associé à un bloc de données redondantes calculées par des formules mathématiques.
- Si une partie du QR code est effacée, rayée, ou recouverte (par un logo, un doigt, un éclat de peinture…), ces blocs permettent de la reconstruire.
Niveau | Données récupérables | Utilisation typique |
---|---|---|
L | Jusqu’à 7% | Pour un usage optimisé, peu de bruit |
M | Jusqu’à 15% | Usage général |
Q | Jusqu’à 25% | Usage public (affiches, vitrines) |
H | Jusqu’à 30% | Usage très exposé (produits, emballages) |
Plus le niveau de correction est haut, moins il reste de place pour les données.
C’est ce système qui permet d’ajouter un logo au centre du code sans bloquer sa lecture.
Placement
La mise en place de l’information que l’on veut encoder se fait dans un ordre prédéfini. L’écriture commence dans le coin en bas à droite, monte, se décale d’un module vers la gauche, redescends, se décale d’un module vers le gauche et recommence le même motif de lecture en boustrophédon. Pour les symboles QR les plus gros, cela est compliqué par la présence de motif de réalignement et l’utilisation de multiples blocs entrelacés de correction d’erreur. On y aplique encore un masque choisi parmi plusieurs automatiquement afin de renforcer l’encodage de l’information.
Ordre de lecture (QR version 1) qui peut corriger jusqu’à 3 octets d’erreur.
Les données suivent un ordre complexe, optimisé pour une lecture rapide.
Ordre de lecture (QR version 3)
Et voila, votre QRCode est prèt ! Vous pouvez maintenant apprendre à le lire à l’oeil nu et à le décoder.
QR codes dynamiques
Contrairement aux QR codes dits statiques, qui contiennent directement toutes les informations encodées (par exemple, un lien ou un texte), les QR codes dynamiques fonctionnent comme des intermédiaires intelligents.
Un QR code dynamique ne contient pas directement l’information finale, mais une URL courte qui sera redirigée.
- URL dans le QRCode : https://qr.lecog.fr/redirect.php?id=682e5f351d471
- URL de redirection finale : www.lecog.fr (pour l’instant)
Quand l’utilisateur scanne ce code :
- Il est redirigé vers un serveur intermédiaire.
- Ce serveur décide où le renvoyer réellement, selon les règles définies (langue, heure, pays, type d’appareil…).
- Il peut enregistrer des statistiques sur le scan : quand, où, comment, combien.
- La confidentialité des données collectées doit être encadrée (RGPD en Europe, par exemple).
- Le QR dynamique dépend d’un serveur tiers : s’il tombe en panne ou n’est plus maintenu, le lien est rompu.
Les informations de l’utilisateur (Adresse IP, Date et heure du scan, Appareil, Langue du système), ne devraient pas être stockées longtemps, seulement pour des nécéssitées, et ne pas être recoupées avec d’autres données, afin que ces QRCodes dynamiques soient conforme au règlement général de protection des données (RGPD). La CNIL met en garde contre ces pratiques.
Fictions et imaginaires
Certains artistes intègrent des QR codes dans leurs œuvres5. Le projet de recherche Halftone QR Codes6 pousse le code Reed-Solomon dans ses retranchements en intégrant une image avec la variation des modules sur un motif simulant le gris par des points monochrome, permis la marge de dégradation admise par l’algorithme de reconstruction. Il permet de transformer l’agencement chaotiques des modules en images reconaissables.
La culture populaire utilise des QR codes comme éléments visuels ou matériaux interactifs. Dans Black Mirror, un QR code renvoie à un jeu mobile lié à la série7. La série Love, Death & Robots a caché des QR codes dans ses campagnes pour débloquer des contenus secrets8. Il est aussi possible de donner des formes abouties aux modules des QRCodes avec la synthographie et l’art génératif par I.A 9.
Vélizy - Hôtel de Ville - QR Code végétal installé devant la mairie.
Certains livres utilisent les QR codes pour enrichir l’histoire en réalité augmentée. Aux éditions Portejoie, Aliénation10 est une anthologie augmentée et interactive, un pont entre les langages de l’image, du son et de l’écrit où vingt-deux nouvelles, illustrations, compositions musicales et libres-courts cinématographiques vous amèneront / transporteront / conduiront / guideront vers l’autre rive à destination de l’Autre. Le court-métrage Obéron, produit par le C.O.G, s’inscrit dans cette anthologie.
Historique
Genèse dans les jeux de stratégie
Masahiro Hara s’inspire du jeu de go pour concevoir la structure du QR code.
L’ombre de la logistique
Le QR code est utilisé dans les usines. Denso Wave le publie en open source, favorisant des usages inattendus. Dans les entrepôts, il permet de lire des composants jusqu’à 80 % plus vite que les codes-barres classiques.
Premiers téléphones lecteurs
Le Sharp J-SH09, premier téléphone avec lecteur de QR code, sort au Japon. Le code se diffuse dans les pubs, magazines et écrans TV, mais surtout en Asie.
Standardisation mondiale
Le QR code Model 1 devient une norme ISO (18004:2005), ouvrant la voie à son adoption internationale dans la logistique, le commerce et l’informatique.
Pic pandémique
Pendant le COVID-19, le QR code devient universel et sans contact : pass sanitaires, traçabilité, livraisons, etc…
Bonnes pratiques pour créer un QR code fiable et esthétique
Un QR code doit être lu rapidement par la majorité des smartphones. Pour ça :
-
Taille minimum recommandée :
- 3 x 3 cm pour les impressions proches (flyers).
- 10 x 10 cm pour une lecture à distance (affiches).
-
Contraste élevé :
- Fond clair (idéalement blanc) et modules foncés.
- Évite les couleurs trop proches (jaune pâle sur blanc = illisible).
-
Pas d’inversion de couleurs : Les modules doivent être plus foncés que le fond.
Personnalisez en testant les limites. Un QR code peut être stylisé : ajouter des couleurs, des coins arrondis, ou un logo central. Mais attention :
- Ne pas dégrader les zones essentielles : les repères de positionnement doivent rester nets.
- Ne pas supprimer plus de 30% du code, sauf si le niveau de correction est élevé (H).
- Test obligatoire après personnalisation !
Exemple de QR stylisé mais lisible :
Vérifier la qualité d’impression : Évite les supports trop brillants ou réfléchissants. Attention aux pliures, rayures, humidité.
Ajoutez un appel à l’action. Un QR code tout seul n’attire pas forcément l’œil. Ajoutez une consigne claire :
“Scannez pour acheter”, “Lien vers le site”, “Flashez pour voir la vidéo !”
Cela augmente le taux de scan de manière significative.
Fournir une alternative. Tout le monde n’a pas forcément envie (ou la possibilité) de scanner un QR code. Pensez à ajouter un lien en clair à côté.