10 minute(s) de lecture

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.

Jeu de Go

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 code-barre

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).

QR code position markers

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).

QR code timing patterns

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.

QR code with logo

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.

Reed-Solomon

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.

modules de données

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.

modules de données

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.

QR codes dynamiques

  • 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.

QR végétal

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

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 :

QR stylisé

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é.


Références