Versions de QR code : de 21x21 à 177x177 modules, ce qui change — featured illustration
Technologie

Versions de QR code : de 21x21 à 177x177 modules, ce qui change

5 min de lecture
Créer un QR code

Prenez n'importe quel QR code, comptez les modules sur un côté, retirez 17 et divisez par quatre. Vous obtenez sa version, entre 1 et 40, et ce simple nombre en dit plus sur le symbole que tout ce que l'on peut observer de l'extérieur.

La version 1 fait 21x21 modules. Chaque palier ajoute quatre modules par côté : 25x25, 29x29, 33x33, et ainsi de suite jusqu'à la version 40 à 177x177. La suite est fixe, sans trous ni tailles optionnelles intermédiaires. La version 1 couvre 441 positions de module, la version 40 en couvre 31 329.

Ce qui grandit avec la version

Trois choses augmentent à mesure que la version monte.

La capacité est l'évidence. Plus de modules signifie plus de mots de code, et plus de mots de code signifie plus de place à la fois pour les données et pour la correction d'erreurs. Les tableaux par version, mode et niveau de correction sont dans combien de données contient un QR code, et ne sont donc pas repris ici.

Les motifs d'alignement sont la deuxième. La version 1 n'en a aucun. Les versions 2 à 6 en ont exactement un, en bas à droite. À partir de la version 7 le compte saute à six, puis treize, puis vingt-deux, trente-trois, et quarante-six pour les versions 35 à 40. La logique derrière ces nombres est simple : les centres d'alignement se placent sur une grille carrée, et les trois positions de grille qui entreraient en collision avec les motifs de repérage sont supprimées. Quatre points de grille moins trois donnent un. Neuf moins trois donnent six. Quarante-neuf moins trois donnent quarante-six.

La structure en blocs est la troisième et la moins visible. Au-delà d'une certaine taille, les mots de code sont répartis en plusieurs blocs de correction d'erreurs plutôt qu'en une longue série, chacun avec ses propres données de contrôle, puis entrelacés dans le symbole. Cela borne le calcul Reed-Solomon et répartit un dommage localisé sur plusieurs blocs.

Ce qui reste identique à toutes les versions

Les trois motifs de repérage ne changent jamais. Toujours trois, toujours 7x7 modules, toujours en haut à gauche, en haut à droite et en bas à gauche, toujours avec un séparateur clair d'un module sur leurs bords intérieurs. Un symbole en version 40 a les mêmes carrés d'angle qu'un symbole en version 1, et c'est pourquoi la même routine de localisation fonctionne sur toute la gamme.

Les deux motifs de synchronisation ne bougent pas non plus. Une ligne et une colonne de modules alternativement sombres et clairs courent entre les repères, à une distance fixe de l'origine en haut à gauche. Ils s'allongent quand le symbole grandit, mais leur position et leur rythme alterné restent constants.

Les informations de format sont présentes dans toutes les versions, y compris la version 1 : quinze bits enregistrant le niveau de correction d'erreurs et le motif de masque, stockés deux fois à deux endroits distincts pour qu'un dommage à une copie reste survivable.

La zone de silence reste à quatre modules de marge libre sur les quatre côtés quelle que soit la version. De même que l'unique module toujours sombre qui se trouve à côté de la bande de format en bas à gauche. Ensemble, ils expliquent pourquoi un QR code de n'importe quelle taille ressemble toujours au même objet.

L'information de version n'est pas la version

Chose déroutante, le bloc d'information de version est absent de la plupart des versions. Il n'apparaît qu'à partir de la version 7 : deux blocs 6x3 de dix-huit bits, l'un près du repère en haut à droite et l'autre en bas à gauche, chacun portant le numéro de version plus des bits de détection d'erreurs.

En dessous de la version 7, le décodeur n'en a pas besoin. Le nombre de modules suffit à donner la version, et les petits symboles se mesurent assez facilement avec précision. Dans les symboles plus grands, le nombre de modules est plus difficile à établir à partir d'une image déformée ou peu définie, alors la version est écrite explicitement.

Personne ne choisit la version à la main

C'est l'encodeur qui la choisit. Vous fournissez le contenu, l'encodeur détermine le mode d'encodage, compte combien de bits le contenu réclame, ajoute la surcharge de l'indicateur de mode et du compteur de caractères, puis prend le niveau de correction d'erreurs que vous avez demandé et trouve la plus petite version où les données tiennent aux côtés des mots de code de contrôle requis.

Trois entrées, une sortie. Changez l'une des trois et la version peut bouger. Cela inclut changer le niveau de correction d'erreurs alors que le contenu reste identique, l'interaction que la plupart des gens manquent.

La dérive de version, et comment la repérer

Voici à quoi cela ressemble avec de vrais chiffres, en mode octet au niveau M.

Une URL de 26 caractères tient dans la version 2, dont la capacité en octets au niveau M est de 26. Ajoutez un jeu classique de paramètres de campagne et le même lien monte à environ 90 caractères. La version 5 plafonne à 84 octets à ce niveau, donc l'encodeur passe à la version 6, qui en contient 106. La grille passe de 25x25 à 41x41. À largeur imprimée inchangée de 30 mm, la taille de module baisse d'environ un tiers, et le code qui se lisait confortablement à bout de bras demande désormais d'être tenu plus près ou imprimé plus grand.

Deux habitudes gardent cela sous contrôle. Placez une URL de redirection courte derrière le code et portez les paramètres de campagne du côté de la destination, ce à quoi sert un QR code dynamique. Et régénérez l'épreuve après tout changement de contenu au lieu de supposer que la maquette déjà validée tient encore. Si le symbole se densifie, soit la taille physique augmente, soit la résolution d'impression doit suivre.

Et en France ?

Tous les carrés noirs et blancs ne sont pas des QR codes. Sur un avis d'imposition, une facture d'énergie ou un justificatif de domicile, le petit carré en bas de page est souvent un 2D-Doc : un standard français piloté par l'ANTS, qui repose sur la symbologie Datamatrix et non sur le QR code.

Il ne sert pas à ouvrir une page web mais à prouver qu'un document n'a pas été falsifié : il contient les données essentielles signées numériquement. Une application de vérification dédiée le lit ; l'appareil photo d'un téléphone, lui, n'en tirera rien. Si votre activité doit vérifier des justificatifs, c'est cet outil qu'il faut utiliser, pas un lecteur de QR code.

Lire la version sur un code fini

Zoomez jusqu'à distinguer chaque module, puis comptez le long du bord supérieur, du bord extérieur du repère en haut à gauche jusqu'au bord extérieur de celui en haut à droite. Ne comptez pas la zone de silence, qui n'appartient pas à la grille. Retirez ensuite 17 et divisez par quatre : un côté de 25 modules correspond à la version 2, un côté de 57 modules à la version 10.

Deux vérifications viennent gratuitement. Le résultat doit être un entier compris entre 1 et 40 ; tout le reste signifie que vous avez mal compté. Et si vous distinguez les deux petits blocs 6x3 d'information de version glissés près des repères en haut à droite et en bas à gauche, la version est au moins 7.

Le nombre qui compte pour la suite n'est pas la version elle-même mais ce qu'elle fait à la taille de module. Divisez votre largeur imprimée par le nombre de modules par côté et comparez le résultat au plus petit module que votre procédé de production tient proprement. Cette seule division, détaillée dans le guide des tailles, attrape la plupart des échecs qu'on impute aux scanners. La séquence de décodage complète explique pourquoi de petits modules la cassent.

Partager cet article