0% ont trouvé ce document utile (0 vote)
253 vues16 pages

Guide Complet sur les Codes QR

Le document décrit le code QR, y compris sa structure, ses capacités de correction d'erreurs, ses différents modes de codage et versions.

Transféré par

Adlan Messaoud
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
253 vues16 pages

Guide Complet sur les Codes QR

Le document décrit le code QR, y compris sa structure, ses capacités de correction d'erreurs, ses différents modes de codage et versions.

Transféré par

Adlan Messaoud
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Code QR

Code QR

Table des matières


Introduction.........................................................................................................1
Représentation des données...................................................................................1
Taille du symbole..................................................................................................1
Différentes versions du Code QR.............................................................................1
Structure d’un symbole.........................................................................................2
Symbole de version 1 et de niveau de correction d’erreurs M..................................2
Symbole de version 2 et de niveau de correction d’erreurs M..................................2
Correction d’erreurs..............................................................................................3
Codage Reed-Solomon.......................................................................................3
Codage BCH.....................................................................................................3
Principe d’une correction d’erreur............................................................................4
Exemple 1........................................................................................................4
Exemple 2........................................................................................................4
Différents modes de codage...................................................................................5
Capacité de quelques versions du Code QR..............................................................5
Table de codage pour le mode alphanumérique.........................................................5
Mise en place de bits dans des caractères de symbole...............................................6
Disposition des caractères......................................................................................6
Pour la version 1 avec niveau de correction d’erreurs M..........................................6
Pour la version 2 avec niveau de correction d’erreurs M..........................................6
Position des informations de format........................................................................7
Motifs de masquage de données.............................................................................7
Exemple 1: chaîne 01234567.................................................................................8
Exemple 2: URL..................................................................................................11
Altération du motif..............................................................................................15
Niveau de correction L.....................................................................................15
Niveau de correction H.....................................................................................15
Code QR

Introduction
Le code QR (en anglais QR Code) est un type de code-barres en deux dimensions
(ou code matriciel) constitué de modules noirs disposés dans un carré à fond blanc
L'agencement de ces modules définit l'information que contient le code QR
QR est l’abréviation de l'anglais Quick Response ce qui signifie que le contenu du code
peut être décodé rapidement après avoir été lu par un lecteur de code-barres, un
téléphone mobile, un smartphone, ou encore une webcam
Son avantage est de pouvoir stocker plus d'informations qu'un code à barres, et surtout
des données directement reconnues par des applications Wikipédia

Le code QR a été créé par l'entreprise japonaise Denso-Wave en 1994 pour suivre le
chemin des pièces détachées dans les usines de Toyota. Il est rendu public en 1999 sous
licence libre : cela a contribué à la diffusion du code au Japon. Par la suite, il prend un
réel essor avec l'avènement des smartphones. À la fin des années 2000, il devient l'un
des codes bidimensionnels les plus populaires dans le monde, et les applications de
lecture de codes QR sont souvent déjà installées par les fabricants dans les téléphones
mobiles Wikipédia

L’étude qui suit a été réalisée à partir de la Norme NF ISO/IEC 18004 du 11 avril 2015
intitulée :
Technologies de l'information — Technologie d'identification automatique et de
capture des données — Spécification de la symbologie de code à barres Code QR

Représentation des données


Dans un symbole Code QR, un module sombre est un « 1 » logique et un module clair
est un « 0 » logique

Taille du symbole
La taille d’un symbole de Code QR va de 21 × 21 modules à 177 × 177 modules (zone
de silence de largeur 4 modules non comprise), correspondant aux versions 1 à 40,
augmentant par incréments de quatre modules par côté : 21-25-29-33...173-177

Différentes versions du Code QR

Version 1 Version 2 Version 3 Version 4 Version 10 Version 15


21×21 25×25 29×29 33×33 57×57 77×77
10-25 caractères 20-47 caractères 35-77 caractères 50-114 caractères 174 à 395 caractères 321 à 758 caractères

Lecture possible des QR Codes précédents avec l’application Android QR Code Reader

1/15
Code QR

Structure d’un symbole

Symbole de version 1 et de niveau de correction d’erreurs M

Symbole de version 2 et de niveau de correction d’erreurs M

2/15
Code QR

Correction d’erreurs

Codage Reed-Solomon
Les codes QR utilisent le système Reed-Solomon
pour la correction d'erreur sur les données
Le code contient jusqu'à 30% de redondance, ce qui
signifie qu’il peut être décodé même si 30% des
données sont illisibles
Capacité à corriger les erreurs :
• Niveau L (Low) : environ 7 % de redondance
• Niveau M (Medium) : environ 15 %
• Niveau Q (Quartile) : environ 25 % Irving Reed et Gustave Solomon
• Niveau H (High) : environ 30 %

version octets de données niveau de correction d’erreurs octets de correction d’erreurs


1 19 L 7
16 M 10
13 Q 13
9 H 17
2 34 L 10
28 M 16
22 Q 22
16 H 28
Remarques:
• la version 1 comprend 26 octets (19+7 ou 16+10 ou 13+13 ou 9+17)
• la version 2 comprend 44 octets (34+10 ou 28+16 ou 22+22 ou 16+28)
Utilitaire de calcul du code correcteur RS

Codage BCH
C’est un code correcteur utilisé pour corriger des erreurs aléatoires
BCH sont les initiales des inventeurs : Bose, Chaudhuri, Hocquenghem

Alexis Hocquenghem
(1908-1990)
est un mathématicien français
connu pour sa découverte
en 1959
des codes correcteurs d'erreurs

Raj Chandra Bose Dijen Kumar Ray-Chaudhuri photo non disponible

Ce code est utilisé pour la correction des données de format du symbole


Utilitaire de calcul du code correcteur BCH

3/15
Code QR

Principe d’une correction d’erreur

Exemple 1

Exemple 2

4/15
Code QR

Différents modes de codage


ECI, numérique, alphanumérique, octet, Kanji, mélange, adjonction structurée, FNC1

Le mode numérique code les données à partir du jeu de chiffres décimaux (0 à 9)


(valeurs d’octet 30HEX à 39HEX)

Le mode alphanumérique code les données à partir d’un jeu de 45 caractères:


• 10 chiffres numériques (0 à 9) (valeurs d’octet 30HEX à 39HEX)
• 26 caractères alphabétiques (A à Z) (valeurs d’octet 41 à 5A)
• 9 symboles (SP, $, %, *, +, -, ., /, :) (valeurs d’octet 20 HEX, 24HEX, 25HEX , 2AHEX ,
2BHEX, 2DHEX à 2FHEX,3AHEX)

4 bits qui définissent le mode :


ECI numérique alpha octet Kanji adjonction FNC1 motif de
numérique structurée terminaison

0111 0001 0010 0100 1000 0011 1) 0101 0000


2) 1001

Capacité de quelques versions du Code QR


version modules modules modules modules octets bits
/côté de motifs d’informations de de résiduels
de fonctions de format et de version données données
1 21 202 31 208 26 0
2 25 235 31 359 44 7
20 97 659 67 8683 1085 3
30 137 1219 67 17483 2185 3
40 177 1614 67 29648 3706 0

Table de codage pour le mode alphanumérique


Car Val Car Val Car Val Car Val Car Val Car Val Car Val Car Val
0 0 6 6 C 12 I 18 O 24 U 30 SP 36 . 42
1 1 7 7 D 13 J 19 P 25 V 31 $ 37 / 43
2 2 8 8 E 14 K 20 Q 26 W 32 % 38 : 44
3 3 9 9 F 15 L 21 R 27 X 33 * 39
4 4 A 10 G 16 M 22 S 28 Y 34 + 40
5 5 B 11 H 17 N 23 T 29 Z 35 - 41

5/15
Code QR

Mise en place de bits dans des caractères de symbole


ascendant descendant ascendant vers descendant avec motif

Disposition des caractères

Pour la version 1 avec niveau de correction d’erreurs M


Le schéma ci-contre montre pour un niveau de correction M
l’ordre de placement des octets de données (bleu 1 à 16)
et de correction d’erreurs (rose 1 à 10), ainsi que les zones
réservées aux informations de format (jaune)
Il n’y a pas d’informations de version
Il n’y a pas de bits résiduels

remplissage des octets

Pour la version 2 avec niveau de correction d’erreurs M


le schéma ci-contre montre
pour un niveau de correction M
l’ordre de placement
des octets de données
de 1 à 28 (vert)
et des octets de correction
d’erreurs de 1 à 16 (rouge)
ainsi que les zones réservées
aux informations de format
et de version (jaune)
et aux bits résiduels (bleu)

6/15
Code QR

Position des informations de format


Les informations de format
sont constituées d’une séquence
de 15 bits comprenant
5 bits de données
et 10 bits de correction d’erreurs
calculés en utilisant le code BCH

Les deux premiers bits indiquent


le niveau de correction d’erreurs
suivant le tableau:

niveau de
correction d’erreurs L M Q H
indicateur binaire 01 00 11 10

Du troisième au cinquième bit


les informations de format
contiennent la référence du motif
de masquage de données

Motifs de masquage de données

Losqu’un motif de masquage est appliqué aux données, sa partie claire ne change pas
les données correspondantes mais sa partie sombre complémente les données
correspondantes (fonction ou exclusif)

7/15
Code QR

Exemple 1: chaîne 01234567


Codage de la chaîne de données 01234567 en un symbole de Code QR
La chaîne de données sera codée en une version 1‐M de symbole, en utilisant le mode
numérique

Diviser en groupes de trois chiffres → 012 345 67


012 → 0000001100
345 → 0101011001
67 → 1000011

Concaténer ces données → 0000001100 0101011001 1000011

Convertir l’indicateur de nombre de caractères en binaire sur 10 bits : 8 → 0000001000

Ajouter l’indicateur de mode numérique → 0001


et l’indicateur de nombre de caractères au début de la concaténation précédente
→ 0001 0000001000 0000001100 0101011001 1000011

Ajouter le motif de terminaison 0000


→ 0001 0000001000 0000001100 0101011001 1000011 0000

Diviser en octets de données de 8 bits, en ajoutant des bits de remplissage à la fin en


fonction des besoins (ici 3 x 0)
→ 00010000 00100000 00001100 01010110 01100001 10000 000

Ajouter des octets de données de remplissage 11101100 et 00010001 alternativement,


pour atteindre la capacité du symbole pour la version 1-M (16 octets). Il y a 6 octets de
données, par conséquent 10 octets de données de remplissage sont nécessaires
11101100 00010001

→ 00010000 00100000 00001100 01010110 01100001 10000000


11101100 00010001 11101100 00010001 11101100 00010001
11101100 00010001 11101100 00010001

Ceci donne la grille suivante :

8/15
Code QR

Le niveau de correction d’erreurs est M → 00 niveau de L M Q H


Sélectionner le motif de masquage de données → 010 correction
d’erreurs
Bits de données des informations de format → 00010
indicateur 01 00 11 10
Le calcul de la correction d’erreurs BCH donne binaire
1001101110 comme séquence à ajouter aux données

Information de format → 000101001101110

Appliquer l’opération de disjonction à ce train binaire


avec le masque 101010000010010
000101001101110
xor 101010000010010
= 101111001111100

Ce résultat peut être vérifié avec :


Utilitaire de calcul du code correcteur BCH

Les informations de format seront à placer sur le symbole, comme indiqué ci-dessous,
après l’application du masque 010 sur les octets de données

X
O
R →

+ informations de format →

9/15
Code QR

hexadécimal

hexadécimal
(décimal)
correction

binaire
d’erreurs
décimal
(binaire)
données

00010000 10 16 165 A5 10100101


00100000 20 32 36 24 00100100
00001100 0C 12 212 D4 11010100
01010110 56 86 193 C1 11000001
01100001 61 97 237 ED 11101101
10000000 80 128 54 36 00110110
11101100 EC 236 199 C7 11000111
00010001 11 17 135 87 10000111
11101100 EC 236 44 2C 00101100
00010001 11 17 85 55 01010101
11101100 EC 236
00010001 11 17 pour le niveau de correction M
11101100 EC 236 il y a 10 octets de correction
00010001 11 17 d’erreurs qui ont été obtenus avec
11101100 EC 236 Utilitaire de calcul du code correcteur RS
00010001 11 17

avec les octets application du masque (en jaune)


de correction d’erreurs sur les octets de correction d’erreurs

Code QR définitif

Lecture possible
de ce code QR
avec l’application :
Android QR Code Reader

10/15
Code QR

Exemple 2: URL
HTTPS://[Link]
H T T P S : / / S I T E L E C . O R G
17 29 29 25 28 44 43 43 28 18 29 14 21 14 12 42 24 27 16

Dans le mode alphanumérique, 2 caractères sont regroupés et codés sur 11 bits. Si le


nombre de caractères à coder n’est pas un multiple de 2, le dernier caractère est codé
sur 6 bits

(17, 29) (29, 25) (28, 44) (43, 43) (28, 18) (29, 14) (21, 14) (12, 42) (24, 27) (16)

Ensuite, il faut prendre séparément chaque paire de valeurs de caractères, multiplier le


premier chiffre par 45 puis lui ajouter le second chiffre. Si ce n'est pas un multiple de 2
et que la valeur du caractère est seule, on ne fait aucune opération

1024 512 256 128 64 32 16 8 4 2 1


17x45+29=794 0 1 1 0 0 0 1 1 0 1 0
29x45+25=1330 1 0 1 0 0 1 1 0 0 1 0
28x45+44=1304 1 0 1 0 0 0 1 1 0 0 0
43x45+43=1978 1 1 1 1 0 1 1 1 0 1 0
28x45+18=1278 1 0 0 1 1 1 1 1 1 1 0
29x45+14=1319 1 0 1 0 0 1 0 0 1 1 1
21x45+14=959 0 1 1 1 0 1 1 1 1 1 1
12x45+42=582 0 1 0 0 1 0 0 0 1 1 0
24x45+27=1107 1 0 0 0 1 0 1 0 0 1 1
16 X X X X X 0 1 0 0 0 0

Concaténation des données


Cette concaténation se fait dans l’ordre du codage:
|0 1 1 0 0 0 1 1 0 1 0|1 0 1 0 0 1 1 0 0 1 0|…..|0 1 0 0 0 0|
Il faut ensuite ajouter au début de la chaîne, les 4 bits qui définissent le mode:
ECI numérique alpha octet Kanji adjonction FNC1 motif de
numérique structurée terminaison

0111 0001 0010 0100 1000 0011 0101 ou 1001 0000


(alphanumérique → 0010)
|0 0 1 0|0 1 1 0 0 0 1 1 0 1 0|1 0 1 0 0 1 1 0 0 1 0|…..|0 1 0 0 0 0|
Il faut aussi indiquer le nombre de caractères: HTTPS://[Link] → 19 caractères

11/15
Code QR

Choix de la version
• 11 x 9 + 6
soit 105 bits pour coder les données
• 4 bits pour l’indicateur de mode
• 9, 11 ou 13 bits pour l’indicateur
du nombre de caractères
→ 9 pour la version 1
soit 118 bits :
on prend un symbole de version 1 (21x21)

avec le type de correction d’erreur L ou M


avec le type L → 19 x 8 = 152 données >118
avec le type M → 16 x 8 = 128 données >118

Nombre de bits dans l’indicateur de nombre de caractères


numéro de version numérique alphanumérique octet
1→ 9 10 9 8
10→ 26 12 11 16
27→ 40 14 13 16

L’indicateur du nombre de caractères vaut 19 = 16+2+1 sur 9 bits → 000010011


Ces données sont ajoutées après l’indicateur de mode
|0 0 1 0|0 0 0 0 1 0 0 1 1|0 1 1 0 0 0 1 1 0 1 0|1 0 1 0 0 1 1 0 0 1 0|…..|0 1 0 0 0 0|

Les données binaires doivent être découpées par octets. Ces chaînes de 8 bits sont
appelées codewords. On ajoute des 0 à la dernière chaîne si nécessaire afin de
compléter l’octet

données avant découpage octets hexa déc commentaire


0 0 1 0 0 0 0 0 1 0 011 1 0 0 1 0 0 0 0 0 20 32
0 1 1 0 0 0 1 1 0 1 0 2 1 0 0 1 1 0 1 1 9B 155
1 0 1 0 0 1 1 0 0 1 0 3 0 0 0 1 1 0 1 0 1A 26
1 0 1 0 0 0 1 1 0 0 0 4 1 0 1 0 0 1 1 0 A6 166
1 1 1 1 0 1 1 1 0 1 0 5 0 1 0 1 0 1 0 0 54 84
1 0 0 1 1 1 1 1 1 1 0 6 0 1 1 0 0 0 1 1 63 99
1 0 1 0 0 1 0 0 1 1 1 7 1 1 0 1 1 1 0 1 DD 221
0 1 1 1 0 1 1 1 1 1 1 8 0 1 0 0 1 1 1 1 4F 79
0 1 0 0 1 0 0 0 1 1 0 9 1 1 1 0 1 0 1 0 EA 234
1 0 0 0 1 0 1 0 0 1 1 10 0 1 0 0 1 1 1 0 4E 78
0 1 0 0 0 0 11 1 1 1 0 1 1 1 1 EF 239
12 1 1 0 1 0 0 1 0 D2 210
13 0 0 1 1 0 1 0 0 34 52
14 0 1 0 1 0 0 1 1 53 83
15 0 1 0 0 0 0 0 0 40 64 ajout de 2 x 0
16 0 0 0 0 0 0 0 0 00 0 ajout octet de 0
17 1 1 1 0 1 1 0 0 EC 236 ajout de
18 0 0 0 1 0 0 0 1 11 17 3 octets
19 1 1 1 0 1 1 0 0 EC 236 de remplissage

12/15
Code QR

Le niveau de correction d’erreurs est L → 01


Le motif de masquage de données est 2 → 010
Bits de données des informations de format → 01010
Le calcul de la correction d’erreurs BCH donne
0110111000 comme séquence à ajouter aux données
Information de format → 010100110111000
Appliquer l’opération de disjonction à ce train binaire avec
le masque 101010000010010
010100110111000
xor 101010000010010
= 111110110101010

Ce résultat peut être vérifié avec : Utilitaire de calcul du code correcteur BCH

Le calcul de la correction d’erreurs décimal hexadécimal binaire


pour un niveau L
102 66 01100110
a donné 7 octets de correction d’erreurs:
246 F6 11110110
102 246 148 162 190 56 45 148 94 10010100
162 A2 10100010
Ce résultat peut être vérifié avec : 190 BE 10111110
Utilitaire de calcul du code correcteur RS 56 38 00111000
45 2D 00101101

Placement des données Ajout de la correction d’erreurs Ajout des informations de format

Mise en noir et blanc Application du masque 2 (010) Résultat final

Lecture possible du QR Code précédent avec l’application : Android QR Code Reader

13/15
Code QR

Étapes de décodage du Code QR

14/15
Code QR

Altération du motif

Niveau de correction L
Ce QR-code de niveau de correction L reste exploitable malgré une petite partie dégradée

Lecture possible des QR Codes précédents avec l’application : Android QR Code Reader

Niveau de correction H
Ce QR-code de niveau de correction H reste exploitable malgré une grande partie dégradée

Lecture possible des QR Codes précédents avec l’application : Android QR Code Reader

Codes QR, avec différents niveaux de correction d’erreurs, renvoyant la même URL
L M Q H

Lecture possible des QR Codes précédents avec l’application : Android QR Code Reader

Voir aussi la page [Link]


11 août 2019

15/15

Vous aimerez peut-être aussi