Lecteur de code-barres

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Lecteur et douchette.
Lecteur de code-barres

Un lecteur de code-barres est un appareil électronique servant à lire les informations stockées sous la forme de codes-barres. Il est l'ancêtre du lecteur de code QR.

Tout d'abord implémentés sous la forme de crayons optiques avec lesquels l'utilisateur devait manuellement balayer le code à une vitesse aussi constante que possible, ils ont ensuite évolués grâce à l'application de miroirs mobiles, vers des scanners automatiques. D'abord fixes comme on voit encore fréquemment dans les supermarchés, et ensuite vers des version portatives que l'on l'appelle également douchette ou scannette dans le cas de son utilisation courante.

Le principe[modifier | modifier le code]

Un code-barres code une information numérique sous la forme de barres parallèles fortement contrastées permettant une reconnaissance par une machine avec un taux d'erreurs aussi faible que possible. Il a évolué vers les codes QR (à deux dimensions), dans lesquels les barres sont remplacées par des petits carrés.

Quatre solutions optiques existent pour détecter ces motifs :

  1. la DEL (ou LED) : le mouvement est manuel et le lecteur à la forme d'un gros crayon;
  2. le capteur linéaire à CCD : Il s'agit du précurseur à une dimension de la caméra CCD. le lecteur capte tout le code-barres sans mouvement de l'utilisateur mais nécessite d'être correctement alligné avec celui-ci;
  3. différentes formes plus au moins complexes de scanners laser : le mouvement automatique de balayage du rayon (miroir rotatif ou oscillant) va parcourir toute la largeur du code-barres. Le parcours du rayon peut aller de la forme d'un simple balayage linéaire (dans les douchettes les plus simples), à une séquence complexe de segments linéaires sous des angles différents permettant à l'opérateur de gagner du temps en évitant de devoir se préoccuper de l'orientation sous laquelle il présente le code barre (C'est généralement le mécanisme qu'on observe dans les scanners fixes, aux caisses des grands magasins).
  4. la caméra CCD : capteur identique à ceux des appareils photo numériques, muni d'une optique et d'un éclairage adaptés à la lecture de code-barres ; C'est la principale solution permettant la lecture des codes 2D (on peut également traiter les codes 2D, au moyen d'un balayage laser suffisamment serré, mais la démocratisation des caméra CCD en fait une solution plus économique).

De façon générale, les dispositifs à balayage (1 et 3) fonctionnent en parcourant le code barre au moyen d'un point lumineux qui est reflété par le code, passe par un dispositif optique permettant de recevoir la lumière réfléchie en limitant au maximum l'influence du faisceau incident (dans le cas du scanner laser, on utilise généralement un miroir semi réfléchissant positionné à 45° de sorte qu'une éventuelle réflexion du faisceau incident sera envoyé dans la direction opposée à celle du capteur); et enfin, la lumière réfléchie est transformée par un capteur (photodiode ou phototransistor) en un signal électrique qui va devoir être traité électroniquement et puis de façon numérique.

En toute généralité, on ne peut pas considérer que le code est parcouru à vitesse parfaitement constante. Ce n'était clairement déjà pas le cas avec les crayons optiques qui dépendaient du mouvement de l'opérateur; et même si le scanner dispose d'un système de balayage à miroirs rotatif (par exemple un polygone régulier dont chaque face est un miroir), c'est la rotation de l'angle du faisceau qui est constante, mais pas la vitesse à laquelle le faisceau parcours le code barre (qui est une fonction trigonométrique - et donc, non linéaire - de l'angle). Dans le cas des système à miroir oscillant, c'est encore moins le cas, parce que l'inertie du miroir fait qu'il doit ralentir à l'extrémité de sa course avant de repartir dans l'autre sens. De plus, même si l'angle parcouru par le faisceau était suffisamment petit pour qu'on puisse considérer que le rapport entre l'angle et la position sur le code soit quasi linéaire, il y a encore une déformation possible parce que le code barre lui-même n'est souvent pas plan (il peut être apposé sur une boite à conserve ou sur un emballage mou, comme un sachet plastique). Et même si le code barre était plan, il se produit un effet de perspective s'il n'est pas présenté de façon suffisamment perpendiculaire au lecteur. Le seul moyen de garantir une vitesse exactement constante, serait d'avoir des codes barre plats et un faisceau qui se déplace parallèlement à vitesse constante, mais c'est techniquement plus complexe à réaliser, et ça n'est pas nécessaire.

Dans le cas où malgré tout le code est parcouru à vitesse approximativement constante, on pourrait alors considérer que l'erreur éventuelle est trop petite pour induire un décalage suffisant pour présenter un risque d'erreur sur la longueur. En clair, cela signifie que si on mesure la largeur de la première barre et qu'on vise ensuite le milieu des intervalles suivants, les écarts cumulés entre le début et la fin du code barre sont insuffisants pour induire des erreurs. Dans le cas général où cette vitesse constante ne peut être garantie, par contre, on doit alors mettre en place un dispositif électronique de resynchronisation, qui va détecter toutes les transitions, pour se resynchroniser dessus et produire une sortie binaire normalisée.

Il alors encore la question du sens de lecture qui doit alors être contrôlé au moyen d'informations de détrompage incluses dans la structure du code.

Pour les codes 2D, tous ces problèmes se posent à l'identique, mais s'y ajoutent en plus le fait que le code n'est quasiment jamais présenté "droit" par rapport à la "matrice de détection" (les pixels de la caméra CCD). Et donc, il contient également des informations de détrompage (les carrés qu'on peut observer aux coins des codes QR, par exemple) permettant de remettre l'image droite avant le traitement.

Codage[modifier | modifier le code]

Il existe de nombreuses façons de coder un code à barres, mais la plupart des méthodes utilisent, au début et à la fin, des barres de la largeur élémentaire afin de caler initialement le lecteur pour qu'il connaisse la largeur d'un code. En effet, outre le fait que le code peut avoir des tailles variable, la distance à laquelle il est présenté au scanner, va aussi faire varier sa taille apparente. Au centre du code à barres se trouvent les informations permettant de transformer les informations utiles en message.

Par exemple, on peut imaginer que « une bande noire ayant trois fois la taille d'une bande élémentaire, suivie d'une bande blanche du double de la largeur élémentaire, suivie d'une bande noire et d'une bande blanche toutes deux de largeur élémentaire » désignent le chiffre 0.

Cette information sera alors transformée en signal électrique en fonction du temps, ressemblant à ceci :

Lecteur de code barre (exemple de signal).png

avec en abscisse le temps, et en ordonnée, le signal électrique.

Contraintes des systèmes de codage[modifier | modifier le code]

Il existe de nombreux systèmes de codages, tous ces systèmes doivent avoir en commun quelques propriétés :

  • Ils doivent avoir un sens de lecture. Si un code est lu dans un sens, on ne doit pas pouvoir lire un autre code en le lisant dans l'autre sens. En effet, on ne sait pas dans quel sens le scanner va lire le code.
  • Le code doit contenir suffisamment d'informations de cohérence pour pouvoir être déclaré non valide si une barre est « mal reconnue » (c'est-à-dire si sa largeur a été incorrectement reconnue) : Il est toujours possible qu'un code soit abîmé par la présence de taches, par exemple, et il ne faut pas oublier que si le lecteur est capable de se resynchroniser pour des petites variation de vitesse, cette capacité est limitée. En particulier dans le cas des crayons optiques, une vitesse trop instable de la main fera que le code sera mal reconnu.

Dans tous les cas, la structure des codes contient des informations permettant de vérifier que la lecture s'est bien passée. La plus simple, étant la vérification que la quantité de données lues correspond bien à ce qu'on attendait selon le type de code. on peut aussi trouver des informations de parité, de somme de contrôle, voire des information plus complexe - sans perdre de vue qu'on est limité par la quantité de donnée contenues dans le code.

Dans tous les cas aussi la structures des codes doit garantir l'impossibilité de confondre le contenu du code avec les informations de détrompage et de reconnaissance de ses extrémités (plusieurs codes barres pourraient de suivre et devenir indistinguables), ainsi qu'une alternance suffisante des contrastes pour éviter des longues périodes sans changement de couleur, qui interdiraient toute possibilité de resynchronisation.

Les codes utilisés[modifier | modifier le code]

De nombreux systèmes existent, mais les principaux utilisés en France pour les produits de grande consommation sont EAN 8 et EAN 13, sur 8 et 13 chiffres respectivement, ainsi que les codes presses ISBN et ISSN sur 18 chiffres, composés d'un EAN 13 suivi d'un add-on sur 5 chiffres (dans lequel est stocké le numéro, ainsi que sa spécificité, c'est-à-dire son caractère hors-série ou non).

Les produits pharmaceutiques et médicaux en France utilisent les code 39[1] et code 128 (norme CIP Pharmacode), alors que les produits pharmaceutiques et médicaux en Suisse utilisent le code EAN 13.

Certaines postes utilisent POSTNET, d'autres le code-barres postal français.

Utilisation[modifier | modifier le code]

Les lecteurs de code-barres sont principalement utilisés dans le cadre du commerce. Plébiscités par les commerçants qui vendent des articles lourds et difficilement manipulables, le lecteur de code-barres facilite la tâche des hotesses de caisses. Les nouveaux modèles de lecteurs sont désormais sans fil ou communiquent avec la caisse enregistreuse via Bluetooth[2].

Notes et références[modifier | modifier le code]