Guide
Lire des codes-barres et des étiquettes par caméra
Décoder un code-barres ou un QR code, lire le texte d'une étiquette : ZXing-C++, Tesseract, PaddleOCR et réglages d'image à vérifier.
Mis à jour le
Sur un quai de réception ou à un poste de contrôle, deux besoins se confondent souvent : lire un code (code-barres, QR code, Data Matrix) et lire un texte (référence imprimée, numéro de lot, date). Ils ne se traitent pas avec les mêmes outils. Un code se décode avec une bibliothèque dédiée, rapide et déterministe. Un texte demande de l'OCR, la reconnaissance optique de caractères, qui peut se tromper. Cette page présente les outils open source courants, d'après leurs pages officielles lues le 15/11/2026, et la préparation d'image qui compte le plus.
Lire les codes : ZXing-C++
ZXing-C++ se décrit comme une bibliothèque open source de traitement d'images de codes-barres linéaires et matriciels, en C++, portée à l'origine de ZXing en Java. Sa licence est Apache-2.0. Les formats listés sur le dépôt :
- linéaires : EAN-13, EAN-8, UPC-A, UPC-E, ISBN, DataBar, Code 39, Code 93, Code 128, ITF (dont ITF-14), Codabar, Telepen, DX Film Edge ;
- matriciels : QR Code (et Micro QR, rMQR), Data Matrix, Aztec, PDF417, MaxiCode (lecture partielle).
Le projet propose des adaptations pour Python, Android, iOS, .NET, Go, Rust, WebAssembly et d'autres langages. La page lue n'inclut pas d'exemple Python : suivez le README de l'adaptation Python. Pour vos étiquettes, vérifiez que votre format figure dans la liste ; le type de code utilisé se lit dans la fiche du fournisseur ou sur l'étiquette elle-même.
Lire le texte : Tesseract et PaddleOCR
Tesseract : moteur d'OCR sous licence Apache 2.0, utilisable en ligne de commande ou en bibliothèque, qui reconnaît plus de 100 langues et lit des images PNG, JPEG ou TIFF. Sa documentation avertit qu'un bon résultat demande souvent d'améliorer l'image en entrée.
PaddleOCR : projet sous Apache 2.0 qui se présente comme un moyen de transformer un PDF ou une image en données structurées (Markdown, JSON). Il annonce plus de 100 langues et lit aussi le texte de scène, par exemple sur des pièces industrielles. La page lue ne donne pas la commande d'installation : elle renvoie à ses guides.
Préparer l'image : ce que recommande la documentation de Tesseract
La page « Improving the quality of the output » de Tesseract est très concrète :
| Problème | Recommandation |
|---|---|
| Résolution | Viser au moins 300 dpi ; agrandir les images qui n'y arrivent pas |
| Fond inégal | Essayer la binarisation adaptative (Adaptive Otsu, Sauvola, disponibles depuis Tesseract 5.0.0) |
| Bruit | Le nettoyer avant l'OCR : certains bruits ne sont pas supprimés par la binarisation |
| Texte penché | Redresser l'image pour que les lignes soient horizontales |
| Bords | Ajouter une petite bordure blanche (10 px en exemple) ; retirer les bordures sombres de numérisation |
| Petite zone | Choisir le mode de segmentation adapté : 7 pour une ligne, 8 pour un mot, 10 pour un caractère |
| Valeurs connues | Restreindre les caractères (par exemple les chiffres) avec tessedit_char_whitelist |
Cette dernière astuce est utile pour un numéro de lot ou une date : moins de caractères possibles, moins de confusions entre « 0 » et « O ». La documentation indique aussi que réentraîner Tesseract a peu de chances d'aider, sauf police très inhabituelle ou nouvelle langue.
Côté prise de vue
Une étiquette lisible commence à la caméra : mise au point sur le plan de l'étiquette, éclairage sans reflet sur le film plastique, résolution suffisante pour que les plus petits caractères fassent plusieurs pixels de haut. Ces choix pèsent plus que le logiciel. Un support qui garde l'étiquette à distance et angle constants simplifie tout. Mesurez ensuite le taux de lectures correctes sur un échantillon représentatif : un décodeur de code renvoie une valeur ou rien, alors qu'un OCR peut renvoyer une valeur fausse, qu'on détecte avec un contrôle (somme de contrôle, format attendu, comparaison avec la commande).
Et un grand modèle qui lit les images ?
Pour lire un compteur ou une plaque signalétique photographiée de façon ponctuelle, un grand modèle appelé par API est une option : voir Envoyer une image à une API. Anthropic indique qu'il peut se tromper sur les images de faible qualité, tournées ou très petites (moins de 200 pixels). Pour des milliers d'étiquettes par jour, un décodeur dédié est plus prévisible. Pour les documents scannés (factures, bons de livraison), le sujet est l'OCR documentaire : voyez le comparatif des API d'OCR.
Choisir
- Code présent ? Utilisez un décodeur de codes, pas un OCR.
- Texte seulement ? Prétraitez l'image, restreignez les caractères attendus, ajoutez une vérification.
- Étiquettes très variées ou abîmées ? Comparez un OCR, un détecteur qui localise d'abord la zone utile (détection) et un grand modèle.
- Mesurez sur vos images, avec les notions de précision et rappel.
Questions fréquentes
Code-barres ou OCR : quelle différence ?
Un code-barres ou un QR code se décode : c'est une information encodée par motif, lue par un décodeur dédié. L'OCR lit du texte imprimé, caractère par caractère, avec plus d'erreurs possibles.
Tesseract suffit-il pour une étiquette de palette ?
Cela dépend de l'image. Sa documentation indique qu'il fonctionne mieux à 300 dpi au moins et demande souvent un prétraitement. Testez sur vos étiquettes réelles.
Sources
Pages consultées pour écrire cet article :