La première version du code-barre, brevetée en 1952, était circulaire. Cela était censé en faciliter la lecture, mais les défauts d'impression pouvaient rendre le code illisible. Il fut donc remplacé par le code barre horizontal.
Depuis des décennies, j'avais toujours entendu dire que le premier à utiliser les code-barres, avaient été la NASA, afin de suivre les milliers de pièces nécessaires à ses programmes spatiaux.
Or en fouillant le Net, je trouve surtout référence de l'emploi du code Datamatrix, pour le suivi des pièces utilisées dans la construction des navettes Spatiales.
https://fr.m.wikipedia.org/wiki/Datamatrix
Une petite anecdote à propos du code-barres.
Depuis l'implémentation des caisses automatiques dans les supermarchés, des filous ont trouvé la combine pour tromper les code barres.
Ceci fut, par exemple, le cas d'un jeune à Montbéliard, qui réussit à acheter une PS4, pour son poids équivalent en oranges... 9,29 €uros, pour un bien à 340 €.
Fort de son succès, il voulut répéter sa prouesse le lendemain... Il s'est fait gauler.
https://www.lefigaro.fr/conso/2018/06/26/20010-20180626ARTFIG00015-avec-les-caisses-en-libre-service-les-supermarches-face-a-une-hausse-des-vols.php
kepotx
En effet, le problème initial (entre autre, le cahier des charges demandait également qu'il soit peu cher, imprimable facilement, prenant peu de place, lisible sur différent supports dont certains mous...) était de le lire quel que soit l'orientation d laser, d'ou le premier prototype de code barre circulaire symétrique.
Mais la solution était très simple : faire rebondir le laser dans des miroirs, pour le dupliquer, avec deux lasers perpendiculaire. Quelque soit le sens de lecture, au moins un des deux lasers permet de lire un code barre carré en entier.
Et c'est pas le seul problème auquel a du faire face le code barre :
- comment faire si le code barre commence par du blanc ? => toujours délimiter le carré par une triple bande noir-blanc-noir (ce qui permet en plus de calibrer le laser)
- comment rajouter un max d'info sans trop agrandir le carré ? => mettre un deuxième carré a coté, pour éviter d'avoir un code barre trop haut. Réutiliser le marqueur noir-blanc-noir entre les deux carrés. Le code barre devait faire 10 chiffres, on a ainsi 5 chiffres d'un coté, 5 de l'autre. chaque chiffre est codé par 7 barres, 128 possibilité pour 10 chiffres, on est large... a priori.
- comment éviter les erreurs de lecture (reflets, déformations...) => utiliser la parité. imposer par exemple que le nombre de traits noir par chiffre soit pair, ça permet de détecter les erreurs simple, au prix d'une barre. Il en reste 6, 64 possibilité.
- comment ne pas se tromper entre gauche et droite ? => utiliser la parité, le premier carré sera impair, le deuxième pair.
- comment gérer le cas ou un code barre a 17 bandes noires de large, sans erreur de lecture => alterner le noir et le blanc, pas plus de 4 bandes d'une même couleur. On impose du blanc au début, du noir a la fin : on divise par 4, on est a 16. On enlève ceux ne respectant pas les combinaisons de plus de 4 bandes noire/blanche d'affilés, on arrive à ... 10 chiffres.
- Parfois, des erreurs arrivent quand même, sans détection, il faut plus de robustesse => faire la somme des impairs * 3, plus la somme des pairs, modulo 10 (ça détecte plus d'erreur que de faire la somme des chiffres, modulo 10).
- comment rajouter ce chiffre sans réimprimer et refaire des machines ? => revoir le système d'impair a gauche et pair a droite. tant que le premier et le dernier chiffre d'un code est de la même parité, on détecte le sens de lecture. On peux utiliser les 8 chiffres du milieu comme des bits, rajoutant de l'info : on peut ainsi sans problème rajouter cette information.
source : la conf de Gilles Debunne au DevFest Toulouse 2019 (https://www.youtube.com/watch?v=3XIAC098fAI)
ShaeGal
La difficulté de l'invention des codes à barres linéaires étaient, il me semble, la lecture dans les deux sens.
Tous les commentaires
Rooyo
Ayant été chez un grand distributeur à l'époque des premiers essais de scannettes, je me souviens que les erreurs constatées étaient en moyenne à l'avantage du distributeur ...
Dougpinnick37
Le terme code-barre c'est pour le grand public, dans le milieu on utilise tous le mot Gencode à la place .
raean
Pour limiter les erreurs de lecture des codes-barres, le dernier chiffre est une clé, c'est à dire que c'est un chiffre qui est calculé en fonction de tous les autres de telle sorte que si l'un des chiffres est modifié, la valeur de la clé ne correspondra plus et le lecteur de codes-barres détectera une erreur de lecteur. C'est pourquoi parfois les codes-barres ne "passent" pas à la caisse : si le code-barre est un peu abimé, au lieu de donner un résultat erroné, le lecteur verra que l'ensemble n'est pas cohérent et ne fera pas "bip". J'avais étudié l'algorithme qui permet de calculer cette clé et j'avais été surpris de constater que la position des chiffres est importante : les chiffres qui ont une position impaire (le 1er chiffre du code, le 3e, le 5e, et ainsi de suite) sont traités d'une part et les chiffres qui ont une position paire d'autre part avant d'être rassemblés pour calculer la clé, afin d'éviter les inversions. Si on inverse le 1er chiffre et le 3e chiffre par exemple la clé sera la même et le lecteur ne pourra pas détecter l'erreur, en revanche si on inverse deux chiffres successifs (le 1er et le 2e ou le 6e et le 7e par exemple), la clé ne sera plus bonne et une erreur sera détectée. Je m'étais demandé pourquoi détecter les inversions de chiffres, alors que le lecteur laser ne risque pas de lire les barres dans le désordre... C'est parce que les concepteurs ont prévu le cas où le code-barre est difficilement lisible avec le laser et la caissière doit taper le code sur le clavier de la caisse : quand on tape rapidement des chiffres les inversions sont une erreur fréquente. Mais un seul chiffre pour vérifier la cohérence de 11 autres chiffres ce n'est pas parfaitement sécurisé : en lisant mal le code on a une chance sur 10 de tomber quand même sur un nombre dont la clé correspond aux reste du code. Ca m'était arrivé en passant à la caisse au supermarché : quelques carottes que j'avais pesées et pour lesquelles j'avais collé sur le sachet le code-barre imprimé par la balance du rayon fruits et légumes étaient passées en caisse à 73 euros ! Quand je me suis étonné du total que j'avais payé et j'ai trouvé l'erreur sur le ticket de caisse, j'ai vérifié mon sachet de carottes et j'ai constaté que l'étiquette était un peu pliée ; ça avait modifié les barres et c'était apparemment tombé sur un code-barre valable, dont la clé correspondait au reste des barres mais qui ne correspondait pas au prix de mes carottes !
kepotx
En effet, le problème initial (entre autre, le cahier des charges demandait également qu'il soit peu cher, imprimable facilement, prenant peu de place, lisible sur différent supports dont certains mous...) était de le lire quel que soit l'orientation d laser, d'ou le premier prototype de code barre circulaire symétrique.
Mais la solution était très simple : faire rebondir le laser dans des miroirs, pour le dupliquer, avec deux lasers perpendiculaire. Quelque soit le sens de lecture, au moins un des deux lasers permet de lire un code barre carré en entier.
Et c'est pas le seul problème auquel a du faire face le code barre :
- comment faire si le code barre commence par du blanc ? => toujours délimiter le carré par une triple bande noir-blanc-noir (ce qui permet en plus de calibrer le laser)
- comment rajouter un max d'info sans trop agrandir le carré ? => mettre un deuxième carré a coté, pour éviter d'avoir un code barre trop haut. Réutiliser le marqueur noir-blanc-noir entre les deux carrés. Le code barre devait faire 10 chiffres, on a ainsi 5 chiffres d'un coté, 5 de l'autre. chaque chiffre est codé par 7 barres, 128 possibilité pour 10 chiffres, on est large... a priori.
- comment éviter les erreurs de lecture (reflets, déformations...) => utiliser la parité. imposer par exemple que le nombre de traits noir par chiffre soit pair, ça permet de détecter les erreurs simple, au prix d'une barre. Il en reste 6, 64 possibilité.
- comment ne pas se tromper entre gauche et droite ? => utiliser la parité, le premier carré sera impair, le deuxième pair.
- comment gérer le cas ou un code barre a 17 bandes noires de large, sans erreur de lecture => alterner le noir et le blanc, pas plus de 4 bandes d'une même couleur. On impose du blanc au début, du noir a la fin : on divise par 4, on est a 16. On enlève ceux ne respectant pas les combinaisons de plus de 4 bandes noire/blanche d'affilés, on arrive à ... 10 chiffres.
- Parfois, des erreurs arrivent quand même, sans détection, il faut plus de robustesse => faire la somme des impairs * 3, plus la somme des pairs, modulo 10 (ça détecte plus d'erreur que de faire la somme des chiffres, modulo 10).
- comment rajouter ce chiffre sans réimprimer et refaire des machines ? => revoir le système d'impair a gauche et pair a droite. tant que le premier et le dernier chiffre d'un code est de la même parité, on détecte le sens de lecture. On peux utiliser les 8 chiffres du milieu comme des bits, rajoutant de l'info : on peut ainsi sans problème rajouter cette information.
source : la conf de Gilles Debunne au DevFest Toulouse 2019 (https://www.youtube.com/watch?v=3XIAC098fAI)
Minas
Savez-vous que pour le QR code la capacité de stockage est bien plus importante que pour un code barre. On peut stocker jusqu'à 7089 caractères numériques ou 4296 caractères alphanumériques pour un QR code de 2 cm de côté ?
Epoxy
Depuis des décennies, j'avais toujours entendu dire que le premier à utiliser les code-barres, avaient été la NASA, afin de suivre les milliers de pièces nécessaires à ses programmes spatiaux.
Or en fouillant le Net, je trouve surtout référence de l'emploi du code Datamatrix, pour le suivi des pièces utilisées dans la construction des navettes Spatiales.
https://fr.m.wikipedia.org/wiki/Datamatrix
Une petite anecdote à propos du code-barres.
Depuis l'implémentation des caisses automatiques dans les supermarchés, des filous ont trouvé la combine pour tromper les code barres.
Ceci fut, par exemple, le cas d'un jeune à Montbéliard, qui réussit à acheter une PS4, pour son poids équivalent en oranges... 9,29 €uros, pour un bien à 340 €.
Fort de son succès, il voulut répéter sa prouesse le lendemain... Il s'est fait gauler.
https://www.lefigaro.fr/conso/2018/06/26/20010-20180626ARTFIG00015-avec-les-caisses-en-libre-service-les-supermarches-face-a-une-hausse-des-vols.php
ShaeGal
La difficulté de l'invention des codes à barres linéaires étaient, il me semble, la lecture dans les deux sens.
Epoxy
kepotx
ShaeGal