9 min de lectureTutoriels

Niveaux de correction d'erreur d'un QR code : L, M, Q, H expliqués

Les niveaux de correction d'erreur L, M, Q et H d'un QR code récupèrent 7, 15, 25 et 30 % d'un code endommagé. Nombre de modules par niveau et quand chacun est rentable.

Marius Voß
DevRel · edge infra
Les niveaux de correction d'erreur L, M, Q et H d'un QR code représentés par des barres de récupération de 7, 15, 25 et 30 pour cent à côté d'un vrai QR code

Les niveaux de correction d'erreur d'un QR code correspondent à la quantité de données redondantes qu'un code porte pour qu'un lecteur puisse reconstruire ce qui est taché, rayé ou recouvert par un logo. Il y en a quatre : L, M, Q et H, qui récupèrent environ 7 %, 15 %, 25 % et 30 % du code. Choisissez M pour la plupart des écrans et des liens courts, et H quand un logo ou une manipulation brutale va entamer le code. Le prix de chaque marche, c'est la densité : plus de modules, des carrés plus petits à largeur imprimée identique.

Ce compromis est l'origine de la plupart des histoires de "mon QR code ne se scanne pas", et c'est pourquoi ce tutoriel passe par de vrais nombres de modules plutôt que par des généralités. Si vous n'avez pas encore créé de code, comment créer un QR code est le point de départ ; cet article porte sur le choix du niveau une fois le code en main.

Ce que fait réellement la correction d'erreur dans un QR code

Un QR code stocke vos données sous forme d'octets appelés mots de code. À côté, il stocke des mots de code supplémentaires calculés avec la correction d'erreur Reed-Solomon, la même famille de mathématiques que celle utilisée sur les CD. Quand un lecteur lit un code endommagé, il utilise ces mots de code supplémentaires pour déterminer quels mots de code de données sont faux et ce qu'ils auraient dû être.

Le niveau que vous choisissez détermine le nombre de mots de code supplémentaires. Denso Wave, qui a inventé le format, décrit la fonction de correction d'erreur comme quatre niveaux et note que relever le niveau améliore la récupération mais augmente la quantité de données, et donc la taille du symbole. Les chiffres de récupération ci-dessous sont ceux indiqués dans l'ISO/IEC 18004 et repris dans l'entrée Wikipédia sur le QR code.

  • Niveau L (Low, faible) : environ 7 % des mots de code récupérables.
  • Niveau M (Medium, moyen) : environ 15 %.
  • Niveau Q (Quartile) : environ 25 %.
  • Niveau H (High, élevé) : environ 30 %.

Notez le mot "environ". Le pourcentage compte des mots de code, pas une tache d'encre. Voyez-le comme un budget de réparation, pas comme une garantie de dommage.

Les quatre niveaux de correction d'erreur d'un QR code L, M, Q et H avec une récupération approximative de 7, 15, 25 et 30 pour cent et un usage typique pour chacun

Le compromis de densité : pourquoi plus élevé n'est pas toujours plus sûr

La redondance doit bien se loger quelque part. Un niveau plus élevé pousse vos données dans un symbole plus grand. Les QR codes existent en versions 1 à 40, et la longueur du côté est de 17 + 4 x version modules : la version 1 fait 21 x 21 et la version 40 fait 177 x 177, selon le tableau des versions et capacités de Denso Wave. L'encodeur choisit la plus petite version dont la capacité, au niveau choisi, contient vos données.

Pour les URL, ces données sont du texte en mode octet. La version 2 contient 32 octets en L, 26 en M, 20 en Q et 14 en H. La version 8 en contient 192, 152, 108 et 84. La version 11 en contient 321, 251, 177 et 137.

Le coût apparaît à la version 8 : 192 octets en L, 84 en H. Même grille, moins de la moitié de la place pour votre URL, car le reste est de la parité.

Pourquoi un code plus dense se scanne moins bien

Un téléphone doit résoudre chaque module. Imprimez le code sur 3 cm de large : une grille de 33 modules donne des modules d'environ 0,9 mm ; une grille de 61 modules, environ 0,5 mm. Même caméra, même lumière, même main tremblante. La marge est divisée par deux. Les règles de dimensionnement de quelle taille doit avoir un QR code supposent que vous travaillez avec une taille de module raisonnable, et c'est la densité qui remet discrètement cette hypothèse en cause.

Exemple concret : une URL à chaque niveau

Voici l'expérience que je mène chaque fois que quelqu'un me dit de "tout mettre en H". J'ai pris une URL de campagne suivie de 126 caractères : un domaine, un chemin, et les paramètres utm_source, utm_medium, utm_campaign et utm_content. Puis j'ai pris un lien court de 25 caractères, https://s.elido.me/qr7kP2, comme exemple illustratif. Les deux sont en mode octet. J'ai encodé chacun aux quatre niveaux avec un encodeur standard, et le tableau de capacité ci-dessus prédit le résultat.

NiveauRécupérationURL de 126 car.Lien court de 25 car.
L~7%V6, 41 x 41V2, 25 x 25
M~15%V8, 49 x 49V2, 25 x 25
Q~25%V9, 53 x 53V3, 29 x 29
H~30%V11, 61 x 61V4, 33 x 33

Deux choses sautent aux yeux. Premièrement, la longue URL passe de 41 à 61 modules par côté de L à H, soit de 1681 à 3721 modules, environ 2,2 fois la surface. Deuxièmement, et c'est la partie dont personne ne parle : le lien court au niveau le plus fort, H (33 x 33), reste plus petit que la longue URL au niveau le plus faible, L (41 x 41).

Deux vrais QR codes de niveau H côte à côte : une URL de suivi de 126 caractères en 61 par 61 modules et un lien court de 25 caractères en 33 par 33 modules, avec un tableau du nombre de modules pour les quatre niveaux

La charge utile compte plus que le niveau. Vous pouvez acheter le budget de réparation maximal de 30 % pour un lien court et vous retrouver avec un code plus aéré et plus épais que le code "efficace" de niveau L de la longue URL.

Quand choisir H, et quand L ou M est préférable

Adaptez le niveau à ce qui arrivera réellement au code. La prudence en général n'est pas une spécification.

Choisissez H (ou Q) quand

  • Un logo ou une marque se trouve au centre. Il masque des modules que le lecteur doit reconstruire.
  • Le code est imprimé sur un emballage, un flyer dans une poche, un autocollant, une table que l'on essuie, ou tout ce qui est à l'extérieur.
  • La surface est rugueuse ou courbe et vous ne maîtrisez pas la finition.
  • Un nouveau scan n'est pas possible, comme pour un code sur un produit déjà expédié.

L'article d'aide d'Elido sur les QR codes dit la même chose : gardez un logo sous 20 % de la surface du code, et passez à H quand vous dépassez ce seuil ou imprimez avec un logo.

Choisissez L ou M quand

  • Le code apparaît sur un écran : une diapositive, une page web, une confirmation de paiement.
  • L'URL est courte et rien ne la couvrira ni ne la rayera.
  • La place est comptée et le code doit rester petit, donc chaque module compte.

M est le choix pratique par défaut. Denso Wave dit que c'est le niveau le plus souvent choisi, et notre propre article sur le QR code qui ne se scanne pas fait la même remarque du côté du support : H est un mauvais choix par défaut pour un code simple, car la densité qu'il ajoute cause plus de scans ratés que les dommages dont il protège.

Une mise en garde sur les logos : la correction d'erreur répare des modules manquants, elle ne corrige pas un mauvais contraste, un flou ou une marge rognée. Les règles de conception pour dépenser le budget sur un logo se trouvent dans le design de QR code personnalisé, y compris pourquoi les trois carrés d'angle restent intacts.

Les liens courts gardent le code aéré (et les QR codes dynamiques les utilisent)

L'exemple concret donne une règle applicable dès aujourd'hui : réduisez la charge utile avant de relever le niveau. Un QR code dynamique fait exactement cela. Au lieu d'encoder la destination complète, il encode un lien court, et le lien court redirige vers l'endroit que vous indiquez.

Encoder un lien court a trois effets sur la fiabilité :

  1. La grille reste à une version basse, de sorte que les modules restent grands à n'importe quelle taille d'impression.
  2. Vous pouvez vous permettre le niveau Q ou H pour un logo ou l'usure à l'impression sans que le code gonfle.
  3. Les paramètres de suivi se trouvent sur la destination, pas dans le motif, de sorte que changer une balise de campagne n'oblige jamais à créer un nouveau code plus dense.

Il y a un quatrième avantage sans rapport avec la densité : comme le code pointe vers un lien court, vous pouvez le rediriger plus tard sans réimprimer, et vous obtenez gratuitement le comptage des scans. Avec un code statique, la destination est figée dans le motif ; la seule façon de corriger une faute de frappe est donc d'imprimer à nouveau.

Si vous voulez essayer sur vos propres liens, le générateur de QR codes vous permet de régler le niveau par code, avec M comme point de départ, et les détails des offres sont sur la page des tarifs. Faites-en un en M et un en H à partir du même lien court, imprimez-les à 3 cm et comparez. Je parie que vous aurez du mal à les distinguer à l'œil, et c'est là tout l'intérêt.

Une courte liste de contrôle avant d'imprimer

Exécutez ces étapes dans l'ordre.

  1. Raccourcissez d'abord l'URL ; gardez les paramètres de suivi sur la destination.
  2. Choisissez le niveau à partir du tableau : M pour les écrans et l'impression simple, Q ou H pour les logos et l'usure.
  3. Vérifiez la version choisie par votre générateur. Au-delà d'environ la version 10 pour une URL, demandez-vous pourquoi la charge utile est si longue.
  4. Conservez la zone de silence : au moins quatre modules de bordure vide de chaque côté.
  5. Imprimez à la taille finale et scannez avec deux téléphones différents en lumière ordinaire.

L'étape 5 repère ce qu'aucun tableau ne prédit. Un logo qui paraissait petit à l'écran peut couvrir plus de modules que vous ne le pensiez.

Lire la série cornerstone

Cet article se place dans le cluster tutoriels, et son cornerstone est comment créer un QR code. Pour les règles de taille et de distance qui décident si votre taille de module est suffisante, voyez quelle taille doit avoir un QR code.

Sur le même sujet dans le blog

Questions fréquentes

Quel est le meilleur niveau de correction d'erreur pour un QR code ?

Le niveau M est le choix par défaut raisonnable : il récupère environ 15 % du code et garde la grille petite. Denso Wave, l'inventeur du format, indique que M est le niveau le plus fréquemment choisi. Passez à Q ou H quand le code porte un logo ou sera imprimé sur un support qui s'abîme, se plie ou reste à l'extérieur.

Que signifie 30 % de correction d'erreur sur un QR code ?

Cela signifie qu'un code de niveau H peut encore être décodé lorsque jusqu'à environ 30 % de ses mots de code de données sont illisibles ou masqués. Le code stocke des données de parité Reed-Solomon supplémentaires, et le lecteur les utilise pour reconstruire ce qui manque. C'est un plafond de dommage réparable, pas une promesse que n'importe quels 30 % de la surface peuvent disparaître.

Un niveau de correction d'erreur plus élevé rend-il un QR code plus difficile à scanner ?

Indirectement, oui. Les niveaux plus élevés ajoutent des données de parité, de sorte que la même URL nécessite une version plus élevée avec des modules plus nombreux et plus petits. À largeur imprimée identique, des modules plus petits sont plus difficiles à résoudre pour la caméra d'un téléphone. La solution est une charge utile plus courte, pas un niveau plus bas sur un code qui a besoin de la protection.

Ai-je besoin du niveau H pour mettre un logo sur un QR code ?

Utilisez H, ou au moins Q, pour tout code avec un logo au centre. Le logo masque des modules, et le lecteur les traite comme des dommages à réparer. Gardez le logo bien en dessous d'un quart de la surface du code et loin des trois carrés d'angle, afin qu'il reste du budget pour l'usure à l'impression.

Un QR code endommagé peut-il encore être scanné ?

Souvent, oui, dans la limite de son niveau. Un code rayé, taché ou partiellement couvert se décode si la zone perdue reste dans ce que son niveau peut réparer et si les carrés d'angle sont intacts. Un code de niveau L tolère environ 7 % de dommages, un code de niveau H environ 30 %.

Quel est le niveau de correction d'erreur par défaut d'un QR code ?

Il n'existe pas de valeur par défaut unique dans la norme ; chaque générateur choisit la sienne, et M est le choix le plus courant. Le terrain de jeu QR d'Elido démarre à M, avec L, Q et H disponibles depuis le même contrôle.

Essayer Elido

Collez une URL, obtenez un lien court

Sans inscription. Lien actif 30 jours. Inscrivez-vous pour le garder pour toujours.

Gratuit, sans inscription · 2 par jour

Essayer Elido

Raccourcisseur d'URL hébergé en UE : domaines personnalisés, analyses approfondies et API ouverte. Forfait gratuit - sans carte bancaire.

Tags
qr code error correction levels
qr code error correction
qr code level h
qr code version
reed-solomon qr code
qr code density

Lire la suite