Category: 2D Symbologies
Table des matières
Table des matières
Les codes QR (abréviation de « Quick response », réponse rapide) sont un type de code-barres 2D composé d'une grille carrée de cases sombres et claires et de trois carrés bien visibles aux coins supérieur gauche, supérieur droit et inférieur gauche.
Les codes QR sont utilisés dans les applications de vente au détail, de logistique, de publicité grand public et d'émission de billets d'avion. Ils peuvent stocker une grande quantité d'informations dans un petit espace physique — des informations produit à une URL de site web — et disposent de solides capacités de correction d'erreurs qui maintiennent la lisibilité même si une partie du code-barres est masquée ou endommagée.
Ce guide fournit aux développeurs de logiciels les informations dont ils ont besoin pour créer des applications qui génèrent ou décodent des codes QR.
Qu'est-ce qu'un code QR ?
Un code QR est un code-barres bidimensionnel qui stocke un grand volume de données dans un petit espace physique. Il encode les données dans une grille carrée de cases sombres et claires et peut être lu dans n'importe quelle orientation (gauche, droite, haut ou bas).
Les codes QR sont une représentation graphique de données lisibles par machine, connue sous le nom de support de données. Les données contenues dans le support sont appelées la structure de données, encodées dans différents formats, et elles déterminent comment analyser la charge utile après le décodage. Les codes QR prennent en charge les jeux de caractères alphanumériques, numériques, binaires 8 bits et kanji.
Les codes QR ont été inventés en 1994 par Masahiro Hara de DENSO Wave pour suivre les pièces utilisées dans la production automobile. Il y a eu plusieurs mises à jour de la norme des codes QR depuis lors. Ce guide se concentre sur le code QR « Modèle 2 » largement déployé, standardisé dans ISO/IEC 18004:2024.
Essayez le SDK de scanner de codes-barres Scandit
Évaluez notre décodage de codes QR avec un essai gratuit de 30 jours
Fonctionnement d'un code QR
Un code QR contient les composants suivants :
- Motifs de détection : Trois grands carrés situés aux coins supérieur gauche, supérieur droit et inférieur gauche pour établir la position et l'orientation du symbole.
- Motif de synchronisation : Lignes pointillées entre les motifs de détection pour aider les scanners à déterminer la structure et l'orientation des modules de données du symbole.
- Motif d'alignement : Petits carrés que les scanners utilisent pour corriger la distorsion de l'image.
- Informations de format : Bandes de carrés contenant des détails sur le niveau de correction d'erreurs et le motif de masquage utilisé dans le code.
- Informations de version : Blocs qui définissent les dimensions et les capacités du symbole, utilisés uniquement pour les versions 7 et supérieures du code QR.
- Modules de données : La grille de carrés noirs et blancs où sont stockées les informations du symbole.
- Zone calme : La bordure autour du code qui le sépare de l'arrière-plan.

Quelles sont les versions des codes QR ?
Les versions des codes QR vont de 1 à 40, chacune avec un nombre différent de modules de données qui détermine sa capacité de données et sa taille physique.
Le nombre de modules augmente de quatre de chaque côté à chaque augmentation de version. La version 1 comporte 21x21 modules et la version 40 comporte 177x177 modules.
Quels sont les types de codes QR ?
Les types de codes QR sont classés selon leur capacité de données, leurs caractéristiques physiques et leurs fonctionnalités. Le tableau suivant explique les différences entre eux :
Type de code QR | Caractéristiques physiques | Capacité maximale de données (caractères numériques) |
|---|---|---|
Code QR Modèle 1 | Le code QR original, défini par une grille carrée avec des motifs de détection bien visibles. | 1,167 |
Code QR Modèle 2 | Similaire au Modèle 1, avec un motif d'alignement supplémentaire pour aider les scanners à lire facilement, même si le symbole est déformé. | 7,089 |
Contient un seul motif de détection de position et dispose d'une zone calme plus petite, permettant des symboles de plus petite taille. | 35 | |
Utilise une forme rectangulaire, ce qui facilite son application dans des espaces étroits. | 361 | |
Code QR à Fonction Secrète (SQRC) | Similaire au Modèle 1/Modèle 2, mais les données sont réparties entre des zones publiques et chiffrées pour améliorer la sécurité. | 7,089 |
FrameQR | Similaire au Modèle 1/Modèle 2, mais comprend une zone de dessin pour insérer des images. Défini par la technologie propriétaire de DENSO Wave, et non par une norme ouverte comme l'ISO. | 7,089 |
Code iQR | Similaire au Modèle 2 et prenant en charge les formes carrées et rectangulaires. Défini par la technologie propriétaire de DENSO Wave, et non par une norme ouverte comme l'ISO. | 40,000 |
Quelle est la différence entre les codes QR statiques et dynamiques ?
Les données encodées dans les codes QR statiques ne peuvent pas être modifiées après leur création, tandis que les codes QR dynamiques permettent aux entreprises de changer la destination de lecture même après que les codes ont été créés et imprimés.
Codes QR statiques
Une fois imprimées ou distribuées, les données encodées dans un code QR statique sont permanentes. Si l'URL cible ou le contenu change, un nouveau code doit être créé. Les codes statiques sont souvent utilisés pour des références fixes comme les numéros de série, les identifiants Wi-Fi ou les campagnes marketing ponctuelles.
Codes QR dynamiques
Un code QR dynamique encode une URL courte qui renvoie vers un service de redirection. Lorsqu'un utilisateur scanne le code, le scanner résout l'URL courte et redirige vers la destination actuelle. Cette indirection permet deux fonctionnalités :
- Modifiabilité : La page de destination ou la fonction derrière le code QR peut être mise à jour sans réimprimer le symbole, ce qui les rend utiles pour les campagnes de longue durée ou la gestion des actifs.
- Analytique : Chaque scan passant par un service de redirection, les utilisateurs peuvent capturer des statistiques de scan telles que le nombre, l'horodatage, la géolocalisation et le système d'exploitation de l'appareil. Ces métriques aident à mesurer l'engagement ou à surveiller l'utilisation.
Combien de données un code QR peut-il stocker ?
La capacité de données d'un code QR est liée à sa version. Chacune dispose d'une capacité maximale selon la quantité de données, le type de caractère et le niveau de correction d'erreurs utilisé.
Le tableau suivant, adapté du site de codes QR de DENSO Wave, montre les tailles de stockage pour certaines versions du Modèle 2 au niveau de correction d'erreurs le plus bas (L, avec un taux de restauration des données d'environ 7 %) :
Version | Caractères maximum (alphanumériques) | Caractères maximum (numériques) | Caractères maximum (binaire 8 bits) | Caractères maximum (kanji) | Taille des modules |
|---|---|---|---|---|---|
1 | 25 | 41 | 17 | 10 | 21x21 |
20 | 1,249 | 2,061 | 858 | 528 | 97x97 |
30 | 2,520 | 4,158 | 1,732 | 1,066 | 137x137 |
40 | 4,296 | 7,089 | 2,953 | 1,817 | 177x177 |
Comment les données sont-elles encodées dans un symbole de code QR ?
Les codes QR prennent en charge quatre schémas d'encodage :
- Alphanumérique : chiffres décimaux de 0 à 9, lettres majuscules, les symboles $, %, *, +, -, ., /, et :, ainsi que le caractère espace.
- Numérique : chiffres décimaux de 0 à 9.
- Binaire 8 bits : caractères du jeu de caractères ISO-8859-1 .
- Kanji : caractères à double octet du jeu de caractères Shift JIS.
Il est possible d'utiliser plusieurs schémas d'encodage au sein du même code QR en définissant l'indicateur de mode avant chaque section de données encodée par ce schéma.
Les codes QR comprennent également différentes fonctionnalités, appelées modes, qui sont définies lors de l'encodage :
- Interprétation de canal étendu (ECI) : permet aux utilisateurs d'encoder des données à l'aide de jeux de caractères Unicode internationaux autres que la valeur par défaut ISO-8859-1.
- Ajout structuré : permet de diviser les données en un maximum de 16 symboles de code QR distincts mais logiquement liés.
- FNC1 : permet au code QR de fonctionner comme un code-barres GS1 défini par la norme GS1 Digital Link. Les secteurs de la vente au détail, de l'entreposage et de la chaîne d'approvisionnement l'utilisent couramment pour encoder des URL.
L'encodage GS1 doit être activé lors de la génération d'un code QR, et il incombe au lecteur de code-barres d'identifier et de décoder les données GS1.
Le code QR à droite contient la chaîne de données JQ3013456789012345611210714. Elle se décompose en les éléments suivants :
- JQ3 : Caractère de symbole de fonction 1 (FNC1) identifiant ce code comme un code QR GS1.
- 01 34567890123456: Identifiant d'application (AI) définissant ceci comme un numéro mondial d'article commercial (GTIN), ainsi que le GTIN du produit.
- 11 210714: Identifiant d'application (AI) définissant ceci comme une date de production, et la date au format AAMMJJ.
Correction d'erreurs des codes QR
Les codes QR utilisent la méthode de correction d'erreurs de Reed-Solomon. Cette approche convertit les données d'origine en un polynôme pour définir un ensemble unique de points, qui sont ensuite intégrés dans le symbole. Le résultat est un symbole contenant les données d'origine ainsi qu'une expression polynomiale que les scanners peuvent utiliser pour reconstruire le code QR.
Il existe quatre niveaux de correction d'erreurs dans un code QR :
- L : 7 % des données peuvent être restaurées.
- M : 15 % des données peuvent être restaurées.
- Q : 25 % des données peuvent être restaurées.
- H : 30 % des données peuvent être restaurées.
Des niveaux de correction d'erreurs plus élevés nécessitent une plus grande capacité de données et une taille physique plus importante.
Où utilise-t-on un code QR ?
Les codes QR sont des supports de données polyvalents que de nombreux secteurs ont adoptés car ils sont rapides à scanner, adaptables aux distorsions, et peuvent transporter des charges utiles structurées ou en format libre.
Voici quelques exemples d'applications :
- Fabrication : Imprimés sur des pièces, des emballages ou des équipements pour encoder des identifiants de produits, des numéros de série ou des informations de lot.
- Billetterie : Utilisés pour les billets d'événements, les cartes d'embarquement ou les identifiants de contrôle d'accès pouvant être rapidement validés aux points d'entrée.
- Marketing : Placés dans des publicités imprimées, des enseignes, des cartes de visite ou des emballages de produits pour rediriger les utilisateurs directement vers des pages de destination, des promotions ou des téléchargements d'applications.
- Logistique : Apposés sur des cartons, des palettes ou des étiquettes d'expédition pour simplifier le suivi, améliorer la traçabilité et relier les expéditions aux systèmes de chaîne d'approvisionnement.
Qu'est-ce qui rend le code QR unique ?
Le principal avantage des codes QR réside dans leur équilibre entre capacité de données, robustesse de lecture et flexibilité des fonctionnalités. Ils sont faciles à capturer à distance ou selon des angles obliques, encodent divers types de données dans un format compact et sont largement reconnus par les appareils grand public.
Principaux avantages des codes QR par rapport aux autres types de codes-barres
- Lisible depuis n'importe quelle direction, permettant aux utilisateurs de scanner des articles selon différentes orientations par rapport à leur appareil.
- Par rapport aux codes-barres 1D, les codes QR peuvent stocker davantage de données (des milliers de caractères contre une douzaine de chiffres) et restent lisibles même si une partie du code est endommagée, grâce à la correction d'erreurs intégrée. Leur format carré est également plus économe en espace, réduisant l'empreinte de l'étiquette tout en prenant en charge des données de longueur variable.
- Par rapport aux codes Data Matrix, les codes QR disposent de motifs de recherche plus puissants (trois grands carrés dans les coins) et de caractéristiques d'alignement qui améliorent la robustesse de lecture lorsque les symboles sont distordus ou capturés à longue distance. Ils prennent également en charge les jeux de caractères multi-octets, tels que le kanji, que le Data Matrix ne prend pas nativement en charge. La contrepartie est qu'un code QR nécessite plus d'espace physique pour stocker la même quantité de données.
- Flexibilité de la correction d'erreurs : les codes QR permettent de choisir parmi quatre niveaux de correction d'erreurs (L, M, Q, H), permettant aux utilisateurs de trouver un compromis entre capacité de données et résilience.
- Conformité aux normes : les codes QR sont pris en charge par GS1 pour les applications de chaîne d'approvisionnement et de vente au détail, avec le FNC1 et les identifiants d'application permettant la structuration des données d'articles commerciaux.
Comment créer un code QR
La création d'un code QR est un processus d'encodage d'informations dans la matrice de modules sombres et clairs définie par la norme des codes QR. À un niveau élevé, cela implique de décider quelles données vous souhaitez encoder, de choisir le bon schéma d'encodage pour votre secteur et votre cas d'utilisation, d'appliquer un codage de correction d'erreurs et de rendre le symbole graphique avec des zones calmes appropriées afin qu'il puisse être scanné de manière fiable.
Il existe plusieurs façons de créer un code QR. Celles-ci incluent des générateurs en ligne gratuits, l'utilisation d'une bibliothèque existante telle que qrcode pour Python, et la conception de votre propre générateur.
Comment scanner un code QR
Les codes QR sont scannés avec des appareils mobiles dotés d'une caméra et fonctionnant avec un logiciel conçu pour décoder la symbologie.
Le logiciel de lecture de codes-barres de Scandit prend en charge les codes QR et plus de 35 autres symbologies, notamment ces fonctionnalités :
- Identification et décodage accélérés des codes QR dans de mauvaises conditions environnementales, à longue distance et avec des distorsions non linéaires.
- Extraction simultanée de données à partir de plusieurs codes QR dans le champ de vision, avec MatrixScan.
- Prise en charge des codes QR GS1 et d'une API GS1 Parser pour traduire les composants de données en formats utilisables.
Comment décoder un code QR
Si vous construisez votre propre méthode de décodage pour les codes QR, les étapes générales sont les suivantes.
Prérequis
L'image du code QR est capturée et stockée avec une résolution suffisamment élevée pour distinguer ses composants.
Étapes de décodage
- Convertir l'image en une représentation binaire à l'aide d'un seuillage, où les pixels sont définis à une valeur maximale ou minimale (généralement 255 pour le blanc et 0 pour le noir) selon que le segment d'image correspondant est au-dessus ou en dessous d'une valeur de seuil donnée.
- Identifier le motif de recherche et la zone calme de l'image capturée afin de distinguer le symbole du code QR de l'arrière-plan.
- Estimer toute distorsion de perspective en examinant le motif d'alignement.
- Déterminer le mode d'encodage (alphanumérique, numérique, binaire 8 bits, kanji, ECI) en examinant les informations de format.
- Lire les bits de la grille de données, qui est lue de bas à droite vers le bas à gauche, en suivant un chemin en zigzag à travers chaque colonne.
- Décoder les symboles à partir des bits et appliquer la méthode de correction d'erreurs (Reed-Solomon).
- Traduire le flux de données à l'aide d'un schéma d'encodage compris par votre application. Si le schéma du code QR est inconnu, deux options s'offrent à vous :
- Envoyer les données brutes à l'application.
- Convertir les données dans un format utilisé par l'application, par exemple UTF-8.
- Envoyer les résultats à l'application pour un traitement ou un affichage ultérieur.
Le SDK Scandit Barcode Scanner met en œuvre ce processus pour vous et fournit des fonctionnalités supplémentaires pour les cas d'utilisation réels des codes QR.
L'ajout de la lecture de codes QR à votre application ne nécessite que deux étapes après la configuration du logiciel Scandit. Les instructions suivantes sont basées sur l'application « Barcode Capture Simple Sample » pour le SDK Scandit JavaScript Barcode Scanner:
1. Activer les symbologies requises, y compris les codes QR
settings.enableSymbologies([
Symbology.QR,
Symbology.DataMatrix,
Symbology.UPCE,
]); 2. Après qu'un code-barres est décodé et reconnu par la bibliothèque Scandit, récupérez ses données en implémentant l'interface d'écoute Scandit
barcodeCapture.addListener({
didScan: async (barcodeCaptureMode: BarcodeCapture, session: BarcodeCaptureSession) => {
// Disable the mode to avoid unwanted scan until the user closes the displayed result.
await barcodeCapture.setEnabled(false);
// Hide the viewfinder.
await barcodeCaptureOverlay.setViewfinder(null);
const barcode: Barcode | null = session.newlyRecognizedBarcode;
if (!barcode) {
return;
}
const symbology: SymbologyDescription = new SymbologyDescription(barcode.symbology);
showResult(`Scanned: ${barcode.data ?? ""}\n(${symbology.readableName})`);
},
}); Ici, la méthode extrait :
barcode.symbology- la symbologie du code-barres sous forme d'énumération.barcode.data- les données du code-barres sous forme de chaîne UTF-8.symbology.readableName- nom lisible par l'homme de la symbologie.
Comment Scandit prend en charge les codes QR
Le SDK de scanner de codes-barres Scandit répond aux besoins des développeurs du monde réel, notamment ces fonctionnalités spécifiques aux codes QR :
- Prise en charge explicite des codes QR GS1 avec gestion FNC1 et analyse des IA.
- Normalisation de tous les schémas d'encodage en UTF-8, si les données sont convertibles, ou accès aux données brutes.
- Une API GS1 Parser pour normaliser et extraire les chaînes d'éléments dans un format lisible par l'homme sans se soucier de l'encodage ou des délimiteurs. Cela inclut des options de réglage, telles que le respect strict de la norme GS1 et la substitution de la longueur de la chaîne d'identifiant d'application.
- Activation et désactivation des symbologies prises en charge, y compris les préréglages industriels, pour améliorer les performances de numérisation.
- Ajout structuré prise en charge pour extraire des données de plusieurs symboles. En utilisant MatrixScan, cela renvoie les données de plusieurs étiquettes dans le champ de vision de la caméra en une seule fois.
Le logiciel de Scandit prend en charge tous les principaux systèmes d'exploitation, langages de programmation, frameworks, systèmes tiers et appareils OEM, notamment iOS natif, Android natif, web/Javascript, React Native, Cordova, Flutter, Kotlin Multiplatform, .NET, Capacitor, Titanium, et Linux/C.
« Nous avons évalué la précision de lecture de Scandit. Les codes-barres apposés sur les fruits et légumes ne sont pas toujours plats et peuvent être courbés. Scandit peut lire avec précision de tels codes-barres. Lors de la phase d'évaluation, nous avons comparé d'autres moteurs de numérisation, mais Scandit était largement supérieur en termes de précision de lecture. »
Essayez le SDK de scanner de codes-barres Scandit
Évaluez notre décodage de codes QR avec un essai gratuit de 30 jours