Analyse de la lecture multicode avec des appareils mobiles

Il est indéniable que les lecteurs de codes-barres permettent de gagner en vitesse et en précision, ce qui améliore la productivité de nombreux flux de travail. Pratiquement tous les points de vente, de l'épicerie au magasin d'articles de sport, tirent parti des codes-barres de produits lisibles, non seulement pour la gestion du point de vente, mais également pour la gestion et le réapprovisionnement des stocks. Centres de distribution, entrepôts, billets pour des évènements, compagnies aériennes, et bien d'autres : la liste des secteurs et des applications qui utilisent les codes-barres est longue.
Dans leur quête d'amélioration de la productivité, les entreprises cherchent désormais à lire plusieurs codes-barres en une seule fois. Pour des applications telles que la lecture d'une étiquette sur une palette, qui peut comporter jusqu'à six codes-barres GS1, il s'agit d'un prolongement évident. Un autre exemple courant est la lecture de l'étiquette d'un produit comportant plusieurs codes-barres lors de la réception des stocks. Alors que les solutions mobiles ont gagné en puissance, grâce à des caméras plus performantes et des processeurs plus rapides, les utilisateurs recherchent des applications de lecture multicode encore plus avancées.
Ainsi, l'un de nos clients nous a récemment contactés au sujet de ce qu'il considérait être un cas d'utilisation convaincant de la lecture multicode. Dans son cas, étant donné que les articles utilisés provenaient d'une armoire de stockage, les étiquettes des produits étaient apposées sur un formulaire de réapprovisionnement, chaque étiquette comportait deux codes-barres permettant l'identification du produit et chaque page pouvait contenir entre une et quinze étiquettes réparties en une ou deux colonnes. Il souhaitait pouvoir lire chaque page de codes-barres à l'aide d'un appareil mobile, en tenant simplement le téléphone au-dessus de la page pour la lire en intégralité.
Il nous a alors fait une démonstration d'un produit concurrent qui mettait en évidence les codes-barres relativement vite avant de restituer une liste de résultats. Sa première tentative de démonstration impliquait de tenir le téléphone portable au-dessus de la feuille de papier pour acquérir l'intégralité de la page en une seule fois, mais cela ne s'est pas passé comme prévu. Les codes-barres étant relativement petits, et certains d'une qualité discutable, le logiciel ne parvenait pas à tous les lire à cette distance.
Sa seconde tentative consistait à recourir à un « traitement par lot », c'est-à-dire tenir le téléphone portable plus près des codes puis le déplacer au-dessus de la page pour reproduire un mouvement de balayage et ainsi acquérir les codes-barres au fur et à mesure. Le téléphone portable ayant été rapproché, cette méthode s'est avérée plus efficace. Mais il restait deux problèmes : les codes-barres n'apparaissaient pas dans le même ordre que sur la feuille (ce qui était pourtant un besoin essentiel) et certains codes avaient mystérieusement disparu des résultats. Tout ce que nous avions à faire était de proposer une solution similaire mais qui restituerait tous les codes et dans le bon ordre. Rien de plus simple, n'est-ce pas ? Et bien non.
Fonctionnement de la lecture multicode
Cognex propose des systèmes de lecture de codes-barres depuis des décennies, notamment des systèmes fixes, des douchettes et, depuis peu, des téléphones portables, des tablettes et des terminaux portables de lecture de codes-barres. La lecture multicode est une tâche courante avec les applications fixes, mais bien moins avec les douchettes et les appareils mobiles. La raison principale en est la stabilité de l'image : avec les applications fixes (c'est-à-dire un système de lecture de codes-barres monté sur une position fixe), la caméra ne bouge pas, son orientation est connue et ses réglages permettent une distance de lecture et un champ de vision optimaux par rapport aux éléments à lire. De plus, l'éclairage et le mouvement sont généralement bien contrôlés ou compris, ce qui permet un meilleur réglage des performances de lecture. Bien que les caractéristiques du montage fixe créent un environnement plus contrôlé pour la lecture multicode, elle n'en reste pas moins une tâche difficile.
Dans l'idéal, un lecteur imageur devrait être capable de prendre une seule capture de la zone où se trouvent les codes-barres et de localiser et lire chacun d'eux. C'est cependant rarement le cas : tous les codes-barres ne peuvent pas être localisés ni lus en raison de variations de mise au point, d'éclairage, de symétrie, etc. Même dans les applications fixes, cela ne se produit quasiment jamais. À la place, la lecture multicode s'effectue en examinant de nombreuses images individuelles (acquisitions) d'un flux vidéo direct provenant de la caméra, puis en combinant les résultats de cette série de lectures. Par conséquent, dans la plupart des applications, les résultats de lecture de 10, 20, 30 acquisitions ou plus sont fusionnés, puisqu'aucune acquisition seule ne peut contenir tous les codes-barres.
Étant donné que plusieurs acquisitions sont analysées et que les résultats sont ensuite combinés, les algorithmes de lecture doivent être suffisamment sophistiqués pour éliminer les doublons sans supprimer les données valides. Prenons cet exemple de quatre codes-barres :

Lorsqu'un utilisateur lit ces codes à l'aide d'un lecteur multicode, il s'attend à obtenir quatre résultats : {A, B, C, A}. Partons du principe que nous devons acquérir deux images (acquisitions) pour détecter tous les codes en raison des variations de mise au point et d'éclairage. Sur la première acquisition, nous lisons les deux codes-barres supérieurs {A, B} :

Sur la seconde, nous lisons les trois codes-barres inférieurs {B, C, A} :

Chaque acquisition représente un ensemble de codes-barres, mais nous ne pouvons pas nous contenter de les assembler, sinon nous obtiendrions le résultat {A, B, C} et la seconde occurrence de A serait manquante. Par conséquent, la fusion des résultats de plusieurs acquisitions doit être bien plus sophistiquée qu'une simple suppression des valeurs de codes-barres en double.
Ajouter un peu (ou beaucoup) de mouvement
Une solution évidente pour la fusion des résultats de plusieurs acquisitions serait d'inclure des informations de positionnement en plus de la valeur des codes-barres pour le filtrage des doublons. Après tout, dans notre exemple, la seconde occurrence du code-barres A est positionnée de façon clairement distincte de celle détectée dans la première acquisition. Certaines applications multicodes procèdent justement de cette façon pour déterminer si un code est un doublon. Cela repose toutefois sur le fait que la position relative des codes-barres ne change pas, ou tout du moins très peu, d'une acquisition à l'autre.
Reprenons notre cas d'utilisation, où l'expérience de lecture classique implique que la caméra fournisse un aperçu en direct sur l'écran afin que l'utilisateur puisse positionner (diriger) l'appareil mobile au-dessus des codes-barres à lire. Lorsque l'utilisateur positionne le téléphone portable, de nombreuses acquisitions sont réalisées et lues, et le téléphone bouge constamment, même s'il est placé entre les mains les plus stables.
L'exemple ci-dessus est simple, l'utilisateur peut facilement positionner la caméra pour acquérir une image des quatre codes-barres en une seule fois. Mais que se passe-t-il lorsque les codes-barres sont trop nombreux (par exemple une page entière, comme dans l'exemple de notre client) et que l'utilisateur doit déplacer la caméra au-dessus des codes-barres pour tous les lire ? Déplacer l'appareil mobile est en effet indispensable pour acquérir tous les codes.
Gérer le mouvement avec un lecteur mobile peut s'avérer particulièrement difficile puisque la vitesse et la direction du mouvement ne sont généralement pas connues du lecteur. Pire encore, elles vont certainement varier avec l'utilisateur qui continue de tenir et déplacer l'appareil mobile.
Si seulement la lecture multicode était si simple
La lecture multicode est une tâche complexe non seulement car elle requiert la détection de tous les codes-barres, mais également car elle nécessite de déterminer à quel moment arrêter d'en chercher d'autres. Dans l'exemple simple utilisé ci-dessus, le nombre de codes-barres à lire est connu. Le lecteur peut être configuré pour rechercher quatre codes-barres avant de restituer les résultats.
Mais qu'en est-il du cas d'utilisation de notre client avec une page pouvant comporter entre deux et trente codes-barres ? Si une page comporte un nombre inconnu de codes-barres et que certains sont manquants ou endommagés, comment le système multicode peut-il en informer l'utilisateur ? Comment le lecteur multicode peut-il savoir que tous les codes n'ont pas été lus ? Les codes manquants sont de loin la plus grande faiblesse d'une solution de lecture multicode mal pensée. S'ils ne sont pas gérés correctement, les codes manquants peuvent facilement anéantir les gains de productivité attendus avec le recours à une approche de lecture multicode.
La démonstration n'est pas une panacée
Dans le cas de notre client, la démonstration qu'il cherchait à mettre en œuvre donnait des résultats peu fiables pour les raisons suivantes :
- Les codes-barres qu'il cherchait à lire présentaient des codes doubles qui constituaient des données valides, mais ils étaient identifiés comme des doublons d'un même code-barres et supprimés par le logiciel de lecture.
- Les codes n'étaient pas présentés dans le même ordre que sur la page sur laquelle ils apparaissaient car le logiciel de lecture n'avait aucun moyen précis d'évaluer la direction ou l'orientation de lecture lorsque l'utilisateur déplaçait le téléphone au-dessus des codes pour les acquérir. Le logiciel de lecture ne sachant pas où se trouvait le haut de la page, les codes-barres étaient restitués dans l'ordre de lecture et non dans l'ordre physique dans lequel ils se trouvaient sur la page.
Cependant, même en résolvant ces deux problèmes, ce flux de travail resterait inefficace en présence d'un code-barres illisible. L'utilisateur du système n'aurait tout bonnement aucun moyen d'identifier le code manquant pour le traiter manuellement.
Finalement, nous avons tout de même recommandé une solution multicode, mais une permettant à l'utilisateur de lire chaque étiquette à code double individuellement et dans l'ordre. De cette façon, l'application pouvait vérifier chaque étiquette/lecture à mesure que l'utilisateur progressait, fournissant un retour positif (ou négatif en cas de problème). L'application résultante n'était pas aussi attractive que la démonstration d'origine semblait l'être, mais elle a fourni un processus de travail robuste et efficace à ses utilisateurs.
Grâce à leurs caméras haute résolution et à leurs processeurs puissants, les téléphones portables et les tablettes sont de plus en plus à même d'effectuer des tâches de lecture de codes-barres complexes, notamment la lecture multicode. Cependant, ne croyez pas que lire une feuille entière de codes-barres ou un rayon entier de produits en une seule fois soit le meilleur flux de travail. Ces scénarios peuvent être utilisés dans des démonstrations habiles qui sont généralement réalisées dans des conditions idéales, mais vous devez tenir compte de toutes les variables pouvant affecter l'efficacité de votre flux de travail lorsque vous concevez ce dernier. Pour en savoir plus sur les terminaux portables et les autres solutions mobiles Cognex, téléchargez le guide produit Solutions mobiles.