Correction d'erreurs QR code : choisir entre L, M, Q et H — featured illustration
Technologie

Correction d'erreurs QR code : choisir entre L, M, Q et H

6 min de lecture
Créer un QR code

Un panneau de stationnement passe l'hiver sous le sel de déneigement. Une carte de restaurant reçoit une trace de doigt huileuse. Une étiquette de colis se fait érafler un coin dans un centre de tri. Les trois codes se scannent pourtant encore, grâce à un bloc de données redondantes présent dans chaque QR code.

Cette redondance existe en quatre tailles. Choisir entre elles est un échange contre de la capacité, et l'échange ne va pas toujours dans le sens que l'on suppose.

Ce que les pourcentages mesurent réellement

Un symbole QR stocke tout sous forme de mots de code : des unités de 8 bits contenant soit votre charge utile, soit des données de contrôle Reed-Solomon. Les quatre niveaux de correction fixent la part du symbole consacrée au contrôle plutôt qu'à la charge utile.

  • L (Low) récupère environ 7 % des mots de code
  • M (Medium) récupère environ 15 %
  • Q (Quartile) récupère environ 25 %
  • H (High) récupère environ 30 %

L'unité est ce que les gens comprennent de travers. « Environ 30 % au niveau H » n'est pas l'autorisation d'effacer 30 % de l'image. Cela veut dire qu'environ 30 % des mots de code du symbole peuvent arriver abîmés ou illisibles et que le décodeur reconstruira quand même le message d'origine. Les mots de code occupent des groupes compacts de huit modules, le plus souvent des rectangles 2x4, enfilés en zigzag dans la zone de données. Une petite tache ruine deux ou trois mots de code. Une bande sur toute la largeur en ruine énormément.

Deux détails supplémentaires changent l'arithmétique. Reed-Solomon considère qu'un mot de code que l'on sait manquant est moins coûteux à réparer qu'un mot de code simplement faux à une position inconnue, et le cas de la valeur fausse coûte environ deux fois plus de budget. Un décodeur QR ne peut généralement pas dire quels mots de code ont été abîmés : prévoyez donc le cas coûteux. Par ailleurs, les symboles plus grands répartissent leurs mots de code en blocs et les entrelacent, ce qui étale une même bavure physique sur plusieurs blocs au lieu de détruire un bloc entier. L'entrelacement explique pourquoi les dommages réels se comportent souvent mieux qu'une lecture littérale du pourcentage ne le laisse croire. La séquence de lecture complète sous-tend tout cela.

Ce que la protection vous coûte

La version 1, le plus petit symbole 21x21, contient 26 mots de code au total. La répartition par niveau :

  • L : 7 mots de code de correction, 19 restent pour les données
  • M : 10 de correction, 16 pour les données
  • Q : 13 de correction, 13 pour les données
  • H : 17 de correction, 9 pour les données

Même grille, même taille imprimée, rien de visiblement différent, et le niveau H porte moins de la moitié de la charge utile du niveau L. Ce rapport se maintient à peu près quand les symboles grandissent. Les chiffres de capacité par version et mode d'encodage sont exposés dans combien de données un QR code peut contenir.

L et M : écrans, longues URL, et le réglage par défaut du quotidien

Le niveau L mérite sa place dans deux situations. D'abord, un code qui ne vit que sur un écran : une diapositive, un e-mail, un PDF que l'on scanne depuis un moniteur. Pas d'usure, pas d'engraissement d'encre, pas de pliage. Ensuite, une charge utile longue qu'il faut garder peu dense. Une URL portant tout un jeu de paramètres de campagne peut faire monter un symbole de plusieurs versions, et descendre en L est un moyen de récupérer une version.

Le niveau M est la réponse quand rien dans le travail ne plaide pour autre chose. Il absorbe la variation d'impression ordinaire, un peu d'engraissement, une empreinte de doigt, un angle de caméra imparfait, et coûte peu de capacité. Si vous n'avez aucun scénario de dommage particulier en tête, prenez M et cessez d'y penser.

Q et H : manipulation, logos et intempéries

Le niveau Q convient à l'imprimé que l'on touche. Cartes de fidélité qui voyagent dans un portefeuille. Chevalets de table essuyés deux fois par jour. Souches de billets, emballages qui frottent contre d'autres emballages en transit, tout ce que des centaines de gens manipulent pendant des mois. Le coût en capacité est réel, mais une URL de redirection courte l'absorbe sans forcer un saut de version.

Le niveau H appartient à deux cas. L'un est un graphisme posé sur le code, généralement un logo au centre. L'autre est une surface qui prend des coups : signalétique extérieure, étiquettes de machines, béton, tout ce qui est au soleil et sous la pluie, tout ce qui est courbe ou laminé où un pli ou une plage de reflet emportera une partie du symbole.

Un logo est un dommage, pas un cas particulier

Rien dans le format ne sait ce qu'est un logo. Un décodeur lit les modules sous votre graphisme selon la couleur qu'ils ont, obtient des valeurs en désaccord avec les données de contrôle, et dépense du budget de correction pour les réparer. Ce sont des erreurs de valeur à positions inconnues, l'espèce coûteuse, et c'est pourquoi un logo couvrant une fraction de la surface consomme plus que cette fraction du budget.

Deux règles en découlent. Gardez le graphisme au centre, là où les modules appartiennent à la zone de données. Et tenez-le à l'écart des parties structurelles, car Reed-Solomon ne répare que la zone de données. Il ne reconstruit pas les motifs de repérage, les motifs de synchronisation ni la zone de silence. L'information de format porte sa propre protection et une copie en double, mais la bonne habitude est de laisser intact tout élément structurel. Notre générateur avec logo maintient le graphisme dans la zone sûre par défaut ; si vous composez à la main, testez à la plus petite taille que vous comptez imprimer.

Le piège : un niveau plus élevé peut dégrader le scan

Monter le niveau produit l'un de deux effets. Soit vos données tiennent encore, et vous avez converti de la place libre en redondance. Soit elles ne tiennent plus, et l'encodeur passe à une version supérieure, ce qui signifie plus de modules sur la même largeur imprimée, ce qui signifie chaque module physiquement plus petit.

Ce second chemin est la façon dont une amélioration bien intentionnée se retourne. Un code de 30 mm au niveau M peut avoir des modules d'un peu moins d'un millimètre. Le même contenu en H, deux versions plus haut, atterrit nettement en dessous. Dès que les modules descendent sous ce que votre caméra, votre imprimante et votre support savent tenir, le décodeur perd des modules plus vite que la correction supplémentaire ne peut les réparer. Vous avez acheté de la tolérance aux dommages et payé en lisibilité. Le guide des tailles traite du plancher de taille de module, et la check-list du code flou montre à quoi ressemble le franchissement sur le terrain.

L'ordre qui évite le piège : fixez d'abord la taille physique, déduisez la taille de module correspondante, puis prenez le niveau de correction le plus élevé qui garde les modules au-dessus du minimum que votre procédé d'impression sait tenir de façon fiable.

Et en France ?

Un cas très français justifie un niveau de correction élevé : l'étiquette de vin. Depuis que les informations sur les ingrédients et la nutrition peuvent passer par un QR code, ce code vit sur une bouteille qui connaît la cave humide, le seau à glace, le frottement dans les cartons et parfois des années de garde.

Pour ces étiquettes, choisissez le niveau Q, ou H si le code porte un logo, et un papier résistant à l'humidité. Une redirection courte, grâce à un code dynamique, garde le motif peu dense malgré ce niveau de correction, et vous permet de corriger la page sans réétiqueter les bouteilles déjà en circulation.

Choisir un niveau en pratique

  • Écran uniquement, URL longue, aucun graphisme : L
  • Aucune raison forte dans un sens ou l'autre : M
  • Imprimé manipulé, URL courte, des mois de service : Q
  • Logo au centre, ou surfaces extérieures et industrielles : H
  • Raccourcir d'abord la destination rachète souvent la version que vous alliez dépenser

Testez ensuite l'épreuve, pas le fichier. Imprimez à la taille finale, posez l'épreuve sur son vrai support, et scannez-la à la distance, sous l'angle et avec l'éclairage d'un vrai utilisateur. Si le niveau Q passe du premier coup, inutile de monter en H.

Partager cet article