GuideNacho G.11 min de lecture

ISO 18004 : la norme QR code expliquée

ISO 18004 est la spécification que chaque code QR respecte. Structure, modes d'encodage, correction d'erreurs et système de versions, expliqués clairement.

ISO 18004 : la norme QR code expliquée

Cet article a ete redige par l'equipe QR Nova. Nous developpons des logiciels de codes QR, ce qui peut influencer notre point de vue.

Chaque code QR que vous avez jamais scanné suit la même norme. Menu de restaurant, étiquette de colis, billet de concert, carte d'identité officielle. Tous. ISO 18004 spécifie tout, de la taille de ces trois carrés dans les coins jusqu'aux mathématiques qui permettent à un code de survivre à une déchirure, de la saleté ou un autocollant qui le couvre à moitié. La plupart des ingénieurs travaillent avec des codes QR pendant des années sans jamais ouvrir la spécification. Ce guide couvre ce qu'elle dit réellement, dans le langage clair que vous utiliseriez pour l'expliquer à un collègue autour d'un café.

En bref

  • ISO/IEC 18004 est la spécification internationale qui définit exactement comment chaque code QR est structuré et décodé.
  • Les codes QR existent en 40 versions (tailles), de 21×21 à 177×177 modules.
  • Quatre modes d'encodage, numérique, alphanumérique, octet et kanji, optimisent la densité de données pour différents types de contenu.
  • Quatre niveaux de correction d'erreurs (L, M, Q, H) permettent de choisir entre capacité de données et résilience aux dommages.
  • La norme exige une zone de silence d'au moins 4 modules sur tous les côtés.
  • L'édition en vigueur est ISO/IEC 18004:2024, la quatrième édition publiée en août 2024.

Ce qu'est réellement l'iso 18004

Generate your first QR code — free

Commencer

ISO/IEC 18004 est une publication conjointe de l'Organisation internationale de normalisation et de la Commission électrotechnique internationale. Elle a été publiée pour la première fois en 2000, avec des révisions majeures en 2006, 2015 et plus récemment en août 2024. La norme est intitulée « Technologies de l'information, Techniques d'identification automatique et de capture de données, Spécification de symbologie de code à barres QR code ».

Ce titre indique la portée. Elle couvre la spécification de symbologie : les règles physiques et logiques définissant ce qu'est un code QR, comment les données sont encodées et comment un lecteur les reconstruit. Les générateurs de codes QR, le matériel de scan, les applications sectorielles ? Hors du champ. D'autres normes et guides d'implémentation s'en occupent, tous pointant vers ISO 18004 comme fondation.

L'édition 2024 reconnaît quatre membres de la famille QR code : le QR Code Modèle 1 (l'original de 1994), le QR Code Modèle 2 (qui a ajouté les motifs d'alignement pour une meilleure fiabilité aux grandes tailles), le QR Code standard (Modèle 2 affiné, celui que l'on voit partout aujourd'hui), et le Micro QR Code (une variante compacte pour les petites étiquettes). Les quatre relèvent d'ISO 18004.

La structure physique d'un code QR

Un symbole QR code est une grille carrée d'unités sombres et claires appelées modules. Chaque module est soit sombre (binaire 1) soit clair (binaire 0). La grille se divise en deux zones : les motifs fonctionnels et la zone d'encodage. Les motifs fonctionnels ne transportent pas de données. Leur rôle est d'aider le scanner à trouver, orienter et calibrer sa lecture du symbole. La zone d'encodage contient les bits de données réels.

Motifs de recherche (finder patterns)

Ces trois grands carrés dans les coins ? Les motifs de recherche. Chacun est un carré sombre de 7x7 entourant un carré clair de 5x5 entourant un carré sombre de 3x3. Les anneaux imbriqués produisent un ratio sombre-clair constant de 1:1:3:1:1 quelle que soit la direction d'approche du scanner. Ce ratio est suffisamment distinctif pour qu'un scanner localise les trois motifs de recherche presque instantanément, même dans une scène encombrée.

Remarquez que le quatrième coin n'a pas de motif de recherche. Cette asymétrie est intentionnelle. Comme seuls trois coins portent le motif, toute rotation de 90 degrés produit un arrangement spatial différent, donnant au décodeur un moyen univoque de déterminer l'orientation.

Séparateurs

Une bordure de modules clairs d'un module de large appelée séparateur entoure chaque motif de recherche. Elle isole le motif de la zone d'encodage pour que le scanner ne confonde pas les modules de données voisins avec une partie du motif.

Motifs de synchronisation (timing patterns)

Entre les motifs de recherche, horizontalement et verticalement, se trouvent les motifs de synchronisation : des modules alternativement sombres et clairs en ligne droite. Ils commencent et finissent aux séparateurs des motifs de recherche. Les motifs de synchronisation permettent au scanner de calculer les coordonnées exactes de la grille de modules, ce qui compte surtout quand le symbole est déformé par la perspective ou imprimé sur une surface courbe.

Motifs d'alignement

À partir de la Version 2, les codes QR incluent des motifs d'alignement : un carré sombre de 5x5 entourant un carré clair de 3x3 avec un seul module sombre au centre, placés à intervalles réguliers sur le symbole. Un code Version 1 (21x21 modules) n'en a pas besoin. Un code Version 40 (177x177 modules) en a 46. Ils donnent au scanner des points de référence supplémentaires pour corriger la distorsion sur une grande surface imprimée.

Informations de format

Deux copies de la bande d'informations de format sont placées à côté des motifs de recherche. Chaque bande encode 15 bits : 5 bits de données (2 pour le niveau de correction d'erreurs, 3 pour le numéro du motif de masque) plus 10 bits de correction d'erreurs calculés avec un code BCH capable de corriger jusqu'à 3 erreurs de bits dans la bande elle-même. Deux copies signifient que les informations de format survivent même si l'une est endommagée.

Le numéro de motif de masque est l'un des huit motifs prédéfinis (0 à 7), appliqué par XOR à la zone d'encodage avant impression. Le masquage casse les grandes régions uniformes de modules sombres ou clairs pour que le scanner puisse maintenir sa calibration de contraste. Sans cela, vous obtiendriez de gros blocs qui perturbent les décodeurs.

Informations de version

Pour les versions 7 et supérieures, le symbole inclut également des bandes d'informations de version : deux copies d'un champ de 18 bits encodant le numéro de version (6 bits de données) avec 12 bits de correction d'erreurs BCH. Les versions 1 à 6 sont suffisamment petites pour que le scanner puisse déterminer la version directement à partir des dimensions physiques du symbole.

La zone de silence

La norme exige une zone de silence d'au moins 4 modules de couleur claire uniforme sur les quatre côtés. Pas décorative. Le scanner utilise cette bordure blanche pour établir sa référence de contraste de fond, distinguant les modules sombres des modules clairs. Lésinez sur la zone de silence et vous obtenez un code qui scanne très bien sur votre bureau mais échoue dès qu'il est imprimé sur un emballage chargé. C'est l'erreur de conformité la plus courante que je rencontre sur le terrain.

Le système de versions : tailles 1 à 40

Les versions QR code définissent la taille du symbole. La Version 1 fait 21x21 modules. Chaque palier ajoute 4 modules par côté, donc la Version 2 fait 25x25, la Version 3 fait 29x29, jusqu'à la Version 40 à 177x177 modules. La formule : (version x 4) + 17 = modules par côté.

Version plus grande, plus de données, code imprimé plus grand. En pratique, les générateurs choisissent la plus petite version qui accueille vos données au niveau de correction d'erreurs choisi. Une URL comme https://example.com/p/1234 atterrit généralement en Version 3 ou 4 au niveau M. Remplissez une vCard complète avec nom, adresse, téléphone et email, et vous passerez en Version 10 ou plus.

Version Taille (modules) Numérique (L) Alphanumérique (L) Octet (L)
1 21×21 41 25 17
5 37×37 154 93 64
10 57×57 652 395 271
20 97×97 2 061 1 249 858
40 177×177 7 089 4 296 2 953

Ces chiffres sont les capacités maximales au niveau de correction d'erreurs L. Les niveaux de correction plus élevés réduisent la capacité utilisable car davantage de modules sont consacrés aux mots de code de redondance.

Modes d'encodage : quatre façons de compacter les données

Avant que les données n'entrent dans un code QR, elles sont encodées en bits. ISO 18004 définit quatre modes d'encodage, chacun optimisé pour un jeu de caractères différent. Votre choix de mode détermine directement la taille du symbole résultant.

Mode numérique

Le mode numérique encode uniquement les chiffres 0 à 9. Trois chiffres tiennent dans 10 bits, soit environ 3,33 bits par caractère. Le mode le plus compact de loin. Si votre code QR ne contiendra que des chiffres (un numéro de série, un identifiant de carte de fidélité), c'est ce qu'il vous faut.

Mode alphanumérique

Le mode alphanumérique gère 0-9, les majuscules A-Z, et neuf caractères spéciaux : espace, $, %, *, +, -, ., / et :. Les paires de caractères s'encodent en 11 bits (5,5 bits par caractère). Astuce utile : les URL encodées entièrement en majuscules tiennent en mode alphanumérique et produisent des codes sensiblement plus petits qu'en mode octet. C'est pourquoi de nombreux générateurs QR mettent votre URL en majuscules avant de l'encoder.

Mode octet

Le mode octet encode des données binaires arbitraires à 8 bits par caractère. Le jeu de caractères par défaut est ISO/IEC 8859-1 (Latin-1), bien que le mécanisme d'interprétation de canal étendu permette de déclarer n'importe quel encodage. Besoin de minuscules, de symboles spéciaux ou d'une longue URL avec des paramètres de requête ? Mode octet. Le moins efficace, le plus flexible.

Mode kanji et encodage multi-modes

Le mode Kanji est le plus spécialisé. Il encode les caractères Shift JIS double-octet à 13 bits chacun, conçu spécifiquement pour le texte japonais. En dehors du Japon, vous ne le rencontrerez presque jamais.

À noter : un même code QR peut mélanger les modes au sein du même symbole. Chaque segment de données reçoit un indicateur de mode sur 4 bits, donc un identifiant produit numérique peut cohabiter avec une URL en mode octet, chaque segment utilisant sa représentation la plus efficace. La plupart des bibliothèques de génération gèrent le basculement automatiquement.

Correction d'erreurs : comment les codes QR survivent aux dommages

Les codes QR utilisent la correction d'erreurs Reed-Solomon, un algorithme bien étudié qui permet à un décodeur de reconstruire les données même quand une partie du symbole est manquante ou illisible. La norme définit quatre niveaux de correction d'erreurs, identifiés par les lettres L, M, Q et H.

Niveau Nom Dommages récupérables Cas d'usage typique
L Low (Bas) ~7 % des mots de code Environnements propres, densité de données maximale requise
M Medium (Moyen) ~15 % des mots de code Usage général, le choix le plus courant
Q Quartile ~25 % des mots de code Étiquettes industrielles, codes avec logos superposés
H High (Élevé) ~30 % des mots de code Environnements difficiles, surfaces courbes, codes brandés

Le compromis est simple : un niveau de correction plus élevé réduit votre capacité de données. Un code Version 5 au niveau L contient 154 caractères numériques ; la même version au niveau H n'en contient que 64. Quand vous apposez un logo sur un code QR, couvrant une partie de la zone d'encodage, vous dépensez votre budget de correction d'erreurs. Le niveau H laisse le plus de marge pour ce type de dommage intentionnel.

Sous le capot, l'implémentation Reed-Solomon opère sur le corps fini GF(256), utilisant un polynôme générateur dont le degré dépend du nombre de mots de code de correction d'erreurs nécessaires. Prenez un code Version 1 au niveau M : 16 mots de code de données plus 10 mots de code de correction, 26 au total. Passez au niveau H et l'équilibre penche fortement vers la correction d'erreurs.

Placement des données et zone d'encodage

Une fois les données encodées et les mots de code de correction calculés, le flux de bits résultant est placé dans la zone d'encodage selon un chemin spécifique. Les données vont dans des colonnes de 2 modules de large, en partant du coin inférieur droit, remontant, puis se décalant à gauche et serpentant vers le bas. Le zigzag continue sur tout le symbole, sautant les motifs de synchronisation et les motifs fonctionnels au passage.

Ensuite, l'un des huit motifs de masque est appliqué par XOR à la zone d'encodage. L'encodeur essaie les huit, note chacun selon des règles de pénalité de la norme, et choisit le masque qui produit la distribution la plus équilibrée de modules sombres et clairs. Il inscrit le numéro du masque gagnant dans la bande d'informations de format pour que le décodeur sache comment l'inverser.

Ce que la norme ne couvre pas

ISO 18004 est une spécification de symbologie, pas une spécification d'application. Elle définit comment un symbole QR code est construit et décodé. Elle ne définit pas :

  • Quelles données mettre dans un code QR, ni quel format ces données doivent suivre (vCard, URL, schéma de deep link, ce sont des décisions de couche applicative)
  • La taille d'impression physique minimale (bien que ISO 15415 et les normes associées couvrent la notation de qualité d'impression)
  • Les règles de personnalisation visuelle (coins arrondis, couleur, logos intégrés)
  • Le fonctionnement dynamique vs statique (le fait que le code QR redirige via un raccourcisseur d'URL est entièrement hors du champ de la norme)
  • Comment les applications de scan analysent ou agissent sur le contenu décodé

Cette délimitation compte plus qu'on ne pourrait le penser. Quand un responsable conformité demande si un code QR est « conforme ISO », il veut dire : le symbole respecte-t-il les exigences structurelles et d'encodage d'ISO 18004 ? C'est vérifiable et démontrable. Ce qui se passe après le scan est une tout autre question, régie par d'autres spécifications.

L'édition 2024 : ce qui a changé

ISO/IEC 18004:2024 est la quatrième édition, remplaçant la version 2015. Le cœur est resté stable : système de versions, structure des modules, modes d'encodage, niveaux de correction d'erreurs, tout inchangé. Ce que la révision 2024 a touché concerne l'efficacité d'encodage, des procédures de correction d'erreurs plus précises, et la fonctionnalité d'ajout structuré.

L'ajout structuré permet de répartir un flux de données unique sur jusqu'à 16 symboles QR code. Chacun se scanne indépendamment ; le décodeur réassemble les morceaux dans l'ordre. Pratique quand vos données dépassent ce qu'un seul symbole peut contenir à une taille imprimable. L'édition 2024 a renforcé la manière dont ce réassemblage est signalé et vérifié.

Pourquoi les ingénieurs devraient connaître cette norme

Si vous construisez quoi que ce soit qui génère, lit ou valide des codes QR (caisse de détail, scanners d'entrepôt, plateformes marketing, billetterie), connaître ISO 18004 conduit à de meilleures décisions à chaque niveau.

Le niveau de correction d'erreurs n'est pas une décision cosmétique. Il affecte directement la fiabilité de scan dans votre environnement de déploiement. La sélection de version détermine la taille physique et la vitesse de décodage. Le mode d'encodage détermine la capacité du payload. La conformité de la zone de silence détermine si vos codes fonctionnent réellement en petite taille d'impression. Ce sont tous des choix au niveau de la spécification avec des conséquences réelles.

Des outils comme le générateur de codes QR de QR Nova gèrent ces paramètres pour vous, mais connaître la norme sous-jacente signifie que vous pouvez auditer la sortie, définir des contraintes éclairées et diagnostiquer les échecs de scan avec précision au lieu de deviner.

Conclusion

ISO 18004 est la raison pour laquelle un code QR imprimé à Tokyo, scanné par un appareil photo fabriqué en Allemagne, est décodé correctement par un logiciel écrit en Californie. Elle fixe chaque élément structurel (motifs de recherche, motifs de synchronisation, motifs d'alignement, informations de format, informations de version, zone de silence) et chaque couche logique (modes d'encodage, correction d'erreurs, motifs de masque, placement des données). Lecture dense dans sa forme publiée, mais l'ingénierie sous-jacente est véritablement élégante.

Les enseignements pratiques : utilisez le bon mode d'encodage pour votre type de données, choisissez la correction d'erreurs en fonction des conditions physiques où le code vivra, respectez la zone de silence de 4 modules, et laissez la version se choisir elle-même en fonction de la longueur du contenu. Faites bien ces quatre choses et vos codes scanneront de manière fiable sur tout lecteur conforme.

Questions frequentes

Qu'est-ce que l'ISO 18004 et qui la publie ?

ISO/IEC 18004 est la norme internationale qui définit la spécification de la symbologie QR code. Elle est publiée conjointement par l'Organisation internationale de normalisation (ISO) et la Commission électrotechnique internationale (IEC). L'édition en vigueur est la quatrième, publiée en août 2024.

Quelle est la différence entre QR Code Modèle 1, Modèle 2 et QR Code standard ?

Le Modèle 1 est la spécification originale de 1994. Le Modèle 2 a ajouté des motifs d'alignement pour aider les scanners à naviguer de manière plus fiable dans les symboles plus grands. Le QR code standard moderne (celui que tout le monde utilise aujourd'hui) est basé sur le Modèle 2 avec des améliorations. Le Micro QR Code est une variante compacte régie par la même norme, optimisée pour les petites étiquettes.

Combien de caractères un code QR peut-il contenir ?

Cela dépend de la version et du niveau de correction d'erreurs. Un code Version 40 au niveau L peut contenir jusqu'à 7 089 chiffres, 4 296 caractères alphanumériques ou 2 953 octets de données binaires. Un code Version 1 ne contient que 41 caractères numériques. La plupart des codes QR réels utilisent des versions dans la plage 1 à 10.

Que signifient les quatre niveaux de correction d'erreurs en pratique ?

Le niveau L récupère jusqu'à 7 % des mots de code endommagés, M récupère 15 %, Q récupère 25 % et H récupère 30 %. Les niveaux plus élevés rendent le code physiquement plus grand car davantage du symbole est consacré à la redondance plutôt qu'aux données. Le niveau M est le choix le plus courant à usage général ; le niveau H est utilisé quand les codes seront imprimés sur des surfaces courbes ou dans des environnements difficiles.

Qu'est-ce qu'une zone de silence et quelle largeur doit-elle avoir ?

La zone de silence est la bordure blanche vierge qui entoure le symbole QR code. ISO 18004 exige qu'elle mesure au moins 4 modules de large sur chaque côté. Le non-respect de cette exigence est l'une des raisons les plus courantes pour lesquelles un code QR ne se scanne pas de manière fiable, car les scanners utilisent la limite de contraste de la zone de silence pour localiser le symbole.

L'ISO 18004 couvre-t-elle l'apparence d'un code QR, couleurs, logos, coins arrondis ?

Non. La norme définit l'encodage des données, le placement des modules, la correction d'erreurs et les tolérances de mesure, pas le style visuel. Ajouter un logo, arrondir les coins ou utiliser des couleurs autres que noir sur blanc est possible mais consomme votre budget de correction d'erreurs. La norme spécifie toutefois des exigences minimales de qualité d'impression (notation ISO 15415) pour garantir la scannabilité.

Qu'est-ce qui a changé dans ISO/IEC 18004:2024 par rapport à l'édition 2015 ?

La quatrième édition 2024 a optimisé l'efficacité d'encodage, amélioré les procédures de correction d'erreurs et affiné la fonctionnalité d'ajout structuré qui permet de répartir les données sur plusieurs symboles QR code. Le cœur de la symbologie, système de versions, structure des modules, modes d'encodage, est resté stable.

Generate your first QR code — free

Commencer