Les Codes QR : Lecture Et Création En Python

créer et manipuler des QR Code en Python avec opencv et qrcode

Dans ce tutoriel, on vous guide pas à pas à :

  • Comprendre le principe d’un QR Code
  • Créer des QR Codes avec le module qrcode
  • Lire des QR Codes depuis une image avec OpenCV et avec pyzbar
  • Lire des QR Codes en temps réel via une webcam

 

1. À propos du QR Code

1.1 Définition

Un QR Code (Quick Response) est un code-barres 2D capable de stocker des données (texte, URL, identifiants, etc.) sous forme de modules (petits carrés noirs et blancs). Il est conçu pour être rapide à scanner et robuste face à certaines dégradations (grâce à la correction d’erreur).

1.2 Pourquoi Python pour les QR Codes ?

Python propose un écosystème riche : le module qrcode pour générer facilement des images, OpenCV pour la vision par ordinateur et l’analyse d’images, et pyzbar pour décoder efficacement des QR Codes (et d’autres codes-barres).


 

2. Pré-requis : installation et préparation

2.1 Installation des bibliothèques

Le code ci-dessous installe les modules nécessaires. On installe opencv-python (vision), qrcode (génération) et pyzbar (décodage). Le module Pillow est souvent utilisé en interne par qrcode pour manipuler les images.

Voici les commandes d'installation (à exécuter dans un terminal ou dans un notebook avec un "!" devant). Si vous exécutez ce code dans un fichier .py classique, utilisez plutôt le terminal.

2.2 Organisation conseillée du projet

Une structure simple permet de retrouver rapidement les fichiers. Vous pouvez créer un dossier qr_tutorial, puis y mettre un sous-dossier images pour stocker les QR Codes générés et des images à tester.

 

3. Créer un QR Code avec le module qrcode

3.1 Génération simple (texte ou URL)

Dans votre fichier main.py, ajoutez le code suivant qui crée un QR Code contenant une URL (ou du texte). On choisit un nom de fichier de sortie. Le QR code est obtenu sous forme d'image PNG. Cette méthode est idéale pour les cas simples.

créer un QR Code en Python avec qrcode

3.2 Génération avancée (taille, bordure, correction d’erreur)

Ici, on contrôle précisément les paramètres : la correction d’erreur (plus robuste mais plus “dense”), la taille des modules (box_size) et la bordure (border). C’est utile si vous devez imprimer le QR Code ou l’afficher dans une interface.

 

4. Lire un QR Code depuis une image avec OpenCV

4.1 Décodage avec QRCodeDetector

OpenCV propose QRCodeDetector. Il détecte et décode un QR Code depuis une image. C’est une solution simple si vous voulez rester uniquement dans l’écosystème OpenCV.

4.2 Dessiner le contour du QR Code détecté

Lorsque points est disponible, OpenCV fournit les sommets du QR Code. On peut dessiner un contour pour visualiser la zone scannée, ce qui est très utile en debug ou en application temps réel.

 

5. Lire un QR Code avec pyzbar

5.1 Décodage robuste (QR + autres codes-barres)

pyzbar est pratique car il peut décoder non seulement des QR Codes, mais aussi d’autres types de codes-barres. Il retourne une liste d’objets détectés : on peut afficher le contenu, le type, et même la zone détectée.

5.2 Dessiner la boîte autour du QR Code

Chaque objet renvoie un rectangle (rect) et parfois un polygone. On peut dessiner une boîte pour montrer ce qui est détecté, puis sauvegarder l’image annotée.

 

6. Lecture en temps réel avec une webcam (OpenCV)

6.1 Scanner en direct avec QRCodeDetector

Ce code ouvre la webcam, détecte et décode le QR Code à chaque frame. Dès qu’un QR Code est détecté, son contenu s’affiche dans la console, et un contour est dessiné sur l’image. Pour quitter, on appuie sur la touche q.

6.2 Variante temps réel avec pyzbar

Dans certains cas, pyzbar peut être plus "souple" (selon la qualité de l’image, l’éclairage, etc.). Le code suivant détecte tous les codes présents, affiche le contenu, et trace un rectangle autour.

 

7. Mini-projet : générer un QR Code puis vérifier sa lecture automatiquement

7.1 Objectif

Dans une vraie application, on veut souvent :

  • générer un QR Code à partir d’une donnée (par exemple un identifiant)
  • lire l’image produite
  • vérifier que le contenu lu correspond exactement à la donnée d’origine

7.2 Script complet (génération + lecture + validation)

Le code ci-dessous crée un QR Code, puis tente de le relire avec OpenCV. Ensuite, il compare la valeur lue à la valeur attendue et affiche un message de succès ou d’échec. Ce genre de test est utile pour l’automatisation et la validation de vos QR Codes avant diffusion.

7.3 Conseils pratiques (qualité, sécurité, erreurs fréquentes)

  • Éclairage : en webcam, un mauvais éclairage est la cause n°1 d’échec de lecture.
  • Taille : un QR Code trop petit à l’écran ou trop loin de la caméra est difficile à détecter.
  • Contraste : gardez un fond clair et un QR sombre (ou l’inverse) avec une bordure nette.
  • Données sensibles : évitez de mettre des secrets en clair. Préférez un identifiant + une vérification côté serveur.
  • Validation : vérifiez toujours le format (ex : présence de champs attendus) avant d’agir sur le contenu scanné.

 

 

Younes Derfoufi CRMEF OUJDA

Leave a Reply

Your email address will not be published. Required fields are marked *