Codes QR#

Qu'est-ce qu'un code QR ?#

Un code QR (Quick Response code) est un type de code-barres qui permet de stocker des informations numériques et de les lire rapidement. Contrairement aux codes-barres traditionnels qui ne stockent que des données en une seule dimension, les codes QR peuvent stocker des données en deux dimensions, ce qui permet de coder beaucoup plus d'informations dans un espace plus petit.

Structure d'un code QR#

Un code QR est composé de plusieurs éléments clés :

Élément

Description

Motifs de position

Trois carrés dans les coins (haut-gauche, haut-droit, bas-gauche) permettant d'identifier et d'orienter le code

Bande de synchronisation

Lignes alternées noires et blanches reliant les motifs de position

Zone tranquille

Bordure blanche autour du code QR

Données encodées

L'information réelle contenue dans le code

Motif de format

Information sur le niveau de correction d'erreur et le type de masque utilisé

Sens de lecture d'un QR code#

Le QR code se lit en suivant un parcours en zigzag, partant du coin inférieur droit et remontant par bandes de 2 colonnes. Dans chaque bande, on lit d'abord la colonne de droite puis celle de gauche, en alternant montée et descente. La colonne 6 (synchronisation) est sautée.

(ASCII, EC-M)
Bits dans un octet :
01
23
45
67
67
45
23
01
0167
2345
↻ bas
2345
0167
↶ haut
01
23
½
0 = MSB (2⁷) → 7 = LSB (2⁰)

Tables de référence pour le décodage#

Les 4 premiers bits de données (en bas à droite du QR code, après application du masque) indiquent le mode d'encodage utilisé :

4 bits

Décimal

Mode

Description

0001

1

Numérique

Chiffres 0-9 uniquement

0010

2

Alphanumérique

Chiffres, lettres majuscules et quelques symboles

0100

4

ASCII

Caractères ASCII / ISO 8859-1

1000

8

Kanji

Caractères japonais

En mode numérique, les chiffres sont groupés par 3 et encodés sur 10 bits (le dernier groupe utilise 7 bits s'il reste 2 chiffres, ou 4 bits s'il en reste 1).

Il suffit de convertir chaque groupe de 10 bits en décimal pour obtenir le nombre à 3 chiffres correspondant.

Exemple : 0001010110 → 86 → les chiffres "086"

Exercices#

Exerice 1#

Utilisez l'outil interactif ci-dessous pour décoder manuellement le texte de ce code QR

  1. Mettez en évidence en vert les motifs de recherche

  2. Mettez en évidence en jaune le motif de synchronisation

  3. Mettez en évidence en bleu les séparateurs

  4. Mettez en évidence en rose les 3 bits permettant de déterminer le masque à appliquer

  5. Cliquez sur le masque adéquat pour l'appliquer sur tout le code QR

  6. Mettez en évidence en orange les 4 bits permettant de déterminer l'encodage du texte.

  7. Déterminez quel encodage est utilisé en vous basant sur le sens de lecture et les tables de référence pour le décodage

  8. Mettez en évidence en rouge la zone contenant la longueur du texte

  9. Déterminez la longueur du texte

  10. Mettez en évidence dans différentes couleurs les zones contenant toutes les lettres du texte

  11. Déterminez le texte encodé en vous basant sur les tables de référence pour le décodage

Exercice 2#

En utilisant la même méthode qu'à l'exercice précédent, décodez le texte du QR code ci-dessous.

Exercice 3#

Le code QR ci-dessous a déjà été inversé grâce à un masque, mais a été partiellement effacé. Il devrait contenir le texte "STX!". La zone contenant l'encodage a été conservée : le texte est donc encodé en ASCII.

  1. Complétez la zone contenant la longueur du texte encodé (4). Pour cela, utilisez l'outil de dessin avec du noir.

  2. Complétez les 4 zones caractères avec "STX!"" en vous aidant de la table ASCII

  3. Observez les 3 pixels donnant l'information du masque. Appliquez-le à la main : dans l'espace que vous avez modifié, inversez les pixels sous une zone noire du masque. Puis, avec votre téléphone, scannez ce code QR pour vérifier qu'il contient bien "STX".