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.
| 0 | 1 |
| 2 | 3 |
| 4 | 5 |
| 6 | 7 |
| 6 | 7 |
| 4 | 5 |
| 2 | 3 |
| 0 | 1 |
| 0 | 1 | 6 | 7 |
| 2 | 3 | 4 | 5 |
| 2 | 3 | 4 | 5 |
| 0 | 1 | 6 | 7 |
| 0 | 1 |
| 2 | 3 |
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
Mettez en évidence en vert les motifs de recherche
Mettez en évidence en jaune le motif de synchronisation
Mettez en évidence en bleu les séparateurs
Mettez en évidence en rose les 3 bits permettant de déterminer le masque à appliquer
Cliquez sur le masque adéquat pour l'appliquer sur tout le code QR
Mettez en évidence en orange les 4 bits permettant de déterminer l'encodage du texte.
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
Mettez en évidence en rouge la zone contenant la longueur du texte
Déterminez la longueur du texte
Mettez en évidence dans différentes couleurs les zones contenant toutes les lettres du texte
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.
Complétez la zone contenant la longueur du texte encodé (4). Pour cela, utilisez l'outil de dessin avec du noir.
Complétez les 4 zones caractères avec "STX!"" en vous aidant de la table ASCII
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".