QR From Link

Comment fonctionne un QR code ?

Le rôle de chaque partie du motif, comment un appareil photo retransforme des carrés en texte, et pourquoi un code percé d’un trou se scanne encore.

Réponse courteUn QR code stocke les données sous forme de carrés noirs et blancs appelés modules. Des motifs fixes dans les coins permettent au lecteur de trouver et d’orienter le code ; le reste de la grille contient les données et des codes de correction d’erreurs Reed–Solomon, qui permettent de reconstituer le texte d’origine même quand une partie du symbole est illisible.

Les parties du motif

Tous les carrés d’un QR code ne portent pas des données. Une part importante sert de structure, et savoir distinguer l’une de l’autre explique l’essentiel du comportement du format.

Les structures fixes présentes dans tout QR code
ÉlémentEmplacementRôle
Motifs de repérageTrois coinsGrands carrés emboîtés qui permettent au lecteur de localiser le code et d’en déduire la rotation.
SéparateursAutour de chaque motif de repérageUne bordure blanche d’un module qui empêche le motif de se confondre avec les données voisines.
Motifs de synchronisationUne ligne et une colonneModules alternés noirs et blancs qui indiquent au lecteur la taille et le pas de la grille.
Motifs d’alignementVersion 2 et au-delàCarrés plus petits qui corrigent la déformation de perspective quand on scanne de biais ou sur une surface courbe.
Informations de formatÀ côté des motifs de repérageLe niveau de correction d’erreurs et le masque utilisés. Stockées en double pour résister aux dégâts.
Zone de silenceAutour du symboleQuatre modules d’espace vide. Ce n’est pas de la décoration : sans elle, le lecteur ne sait pas où le code se termine.

Tout le reste contient le message et sa correction d’erreurs, écrits en zigzag depuis le coin inférieur droit vers le haut, deux colonnes à la fois.

Les versions : comment la grille grandit

Les QR codes existent en quarante tailles, appelées versions. La version 1 mesure 21 × 21 modules ; chaque version ajoute quatre modules par côté, si bien que la version 40 mesure 177 × 177. Un générateur choisit la plus petite version qui contient vos données au niveau de correction demandé.

C’est pourquoi une URL courte donne un code visiblement plus grossier qu’une URL longue, à taille imprimée égale. Le carré physique reste le même ; le nombre de modules qu’on y entasse, non. Un code grossier supporte une lumière médiocre, une impression bon marché et la distance. Un code dense, non.

Le générateur de ce site affiche la version et le nombre de modules sous chaque code qu’il crée : vous voyez la densité avant de l’envoyer à l’impression.

La correction d’erreurs : pourquoi les dégâts ne comptent pas

Les QR codes utilisent la correction d’erreurs Reed–Solomon, la même famille de mathématiques qui permet à un CD rayé de continuer à jouer. Des données redondantes sont entrelacées dans tout le symbole, de sorte qu’une perte à un endroit peut être reconstituée à partir d’informations situées ailleurs.

Les quatre niveaux de correction d’erreurs
NiveauRécupérableUsage type
L (Low)environ 7 %Affichage numérique propre, maximum de données dans un minimum d’espace.
M (Medium)environ 15 %Le réglage par défaut habituel. Bon compromis pour l’impression.
Q (Quartile)environ 25 %Imprimés qui seront manipulés, ou codes avec un logo au centre.
H (High)environ 30 %Étiquettes industrielles, forte usure, grands logos superposés.

Une correction plus forte n’est pas gratuite : la redondance occupe de la capacité, si bien que le même texte pousse le code vers une version plus grande, aux modules plus petits. Passé un certain point, le gain de robustesse est annulé par des modules devenus trop petits pour être lus de façon fiable.

C’est ce compromis qui explique pourquoi ce générateur utilise le niveau Q jusqu’à la version 12 et passe à M au-delà (un code avec logo utilise H). Sous ce seuil, la protection supplémentaire vaut la densité ; au-dessus, les modules plus petits font rater plus de scans que la redondance n’en sauve.

Le masquage : pourquoi deux liens proches donnent des motifs sans rapport

Un encodage brut peut facilement produire de grandes zones vides, de longues suites de la même couleur ou des formes qui ressemblent à un motif de repérage — autant de pièges pour les lecteurs. Pour l’éviter, l’encodeur applique un masque : un motif régulier combiné par XOR à la zone de données pour casser ces suites.

Huit masques sont définis. L’encodeur les essaie tous, note chaque résultat selon des règles de pénalité pour les caractéristiques indésirables, et garde le meilleur. Le masque retenu est inscrit dans les informations de format pour que le lecteur puisse l’annuler.

C’est pourquoi modifier un seul caractère d’une URL peut réarranger tout le motif : un autre masque peut désormais obtenir le meilleur score, et toute la zone de données est transformée différemment.

Ce qui se passe quand vous pointez un appareil photo dessus

  1. L’image de la caméra est convertie en noir et blanc par seuillage.
  2. Le logiciel cherche la proportion 1:1:3:1:1 d’un motif de repérage le long de lignes horizontales et verticales.
  3. Les trois motifs de repérage donnent la position, l’échelle et la rotation ; les motifs d’alignement corrigent la perspective.
  4. Les motifs de synchronisation établissent la grille de modules, et les informations de format sont lues pour connaître le masque et le niveau de correction.
  5. Le masque est retiré, les blocs de données et de correction sont désentrelacés, et le décodage Reed–Solomon répare les dégâts éventuels.
  6. Les octets obtenus sont interprétés — comme une URL, une fiche contact ou du texte brut — et le téléphone propose l’action correspondante.

Tout cela se produit de nombreuses fois par seconde, ce qui explique qu’un code semble se décoder à l’instant où il entre dans le cadre.

Voyez la version, le niveau de correction et le nombre de modules de votre propre lien :Générer un QR code

Questions associées

Grâce à la correction d’erreurs Reed–Solomon. Des informations redondantes sont réparties dans tout le symbole : entre 7 % et 30 % environ — selon le niveau choisi à la création — peut manquer sans empêcher de reconstituer exactement les données d’origine.

C’est la marge vide de quatre modules de large autour du symbole, et oui, elle l’est. Sans elle, le lecteur ne peut pas déterminer où le code se termine et où commence le visuel qui l’entoure. Rogner la zone de silence pour faire tenir un design est la cause la plus fréquente d’échec d’un code imprimé.

Parce que l’encodeur choisit celui des huit masques qui obtient le meilleur score pour ces données précises, et qu’un seul caractère modifié peut changer le gagnant. Le masque est appliqué par XOR à toute la zone de données : un autre choix réarrange donc tout le code.

Il doit être foncé sur fond clair, avec un contraste marqué. Le noir sur blanc est le plus fiable ; une encre foncée sur un fond pâle fonctionne généralement. Inverser les couleurs (clair sur foncé) bloque de nombreux lecteurs, et les finitions peu contrastées ou métallisées réduisent nettement le taux de lecture.