
Deux QR codes sur une étiquette : écart et lecture sans erreur
Une étiquette d'expédition porte deux codes, un pour le transporteur et un pour l'entrepôt, à douze millimètres l'un de l'autre. Le scanner portatif lit celui qu'il trouve en premier, et cela dépend de la façon dont l'opérateur le tient. Des colis commencent à être enregistrés sur la mauvaise fiche, et personne ne comprend pourquoi pendant trois semaines.
Deux codes sur une même feuille de papier est une demande normale. C'est aussi la situation où les lecteurs se comportent le moins prévisiblement, parce que rien dans la spécification QR ne dit quoi que ce soit sur ce qu'il faut faire quand il y en a deux.
Un lecteur voit un cadre, pas une étiquette
Le décodeur n'a aucune idée de l'existence de votre étiquette. Ce qu'il reçoit de l'appareil photo, c'est une image rectangulaire, et il y cherche une signature très précise : une alternance foncé, clair, foncé, clair, foncé dont les longueurs approchent le rapport 1:1:3:1:1. Il la traque en parcourant l'image ligne par ligne, sans jamais se demander où commence et où s'arrête le support imprimé.
Avec deux codes dans le cadre, il trouve six motifs de repérage. Ce qui se passe ensuite dépend entièrement du logiciel. Il peut les grouper en deux symboles et renvoyer les deux, les grouper en deux et n'en renvoyer qu'un, ou les grouper de travers et ne rien renvoyer. Le groupement est de la géométrie : trois repères posés aux coins d'un carré plausible, avec un pas de module cohérent, appartiennent à un même symbole. Mettez deux codes tout près l'un de l'autre, à la même taille, et deux de ces six candidats peuvent finir aussi proches l'un de l'autre qu'ils le sont de leurs propres partenaires.
C'est cette défaillance qu'il faut prévenir par la conception. Pas le cas gênant où le lecteur a pris le mauvais code, mais le cas où il a assemblé un carré à partir de repères appartenant à deux codes différents, ce qui produit une lecture nulle sur une étiquette où les deux codes sont parfaits.
Quel écart est suffisant
Chaque code a besoin de sa marge complète de quatre modules sur chaque côté, et cette marge appartient à un seul code au lieu d'être partagée avec le voisin. L'écart minimal honnête entre deux codes est donc la somme des deux marges, huit modules du plus grand des deux, mesurés entre les modules sombres extérieurs.
En modules, pas en millimètres, comme toujours. Un code de 33 modules imprimé sur 30 mm de large a des modules proches de 0,9 mm, donc huit d'entre eux font environ 7,3 mm. Le même code sur 15 mm de large en demande la moitié. Compter en modules plutôt qu'en millimètres est toute la discipline ici, et c'est pourquoi un écart qui marchait sur une affiche échoue sur un autocollant.
Huit modules est le plancher, et en pratique donnez-en davantage. L'ambiguïté de groupement empire à mesure que les codes se rapprochent relativement à leur propre taille, donc un écart généreux est ce qui maintient les deux grappes de motifs de repérage distinguables. Et un lecteur tenu de biais voit une image comprimée et cisaillée dans laquelle un écart limite se resserre encore.
Si l'étiquette a de la place, empilez les codes sur des lignes séparées plutôt que côte à côte, avec du texte entre les deux. Du texte dans l'écart n'est pas une violation de marge tant que chaque code garde ses quatre modules libres, et une ligne de texte sépare mieux les deux codes qu'un espace vide, parce qu'elle dit en plus à une personne quel code est lequel.
Certains lecteurs prennent le plus proche, d'autres le premier trouvé
Il n'y a pas de norme, et le comportement se sépare par application plutôt que par plateforme.
Les applications appareil photo des téléphones visent en général un seul résultat et choisissent par prééminence : le plus grand candidat, le plus central, ou le premier détecté, ce qui sur un appareil tenu à la main est d'ordinaire le code le plus proche du centre du viseur. Certaines applications récentes détectent plusieurs codes à la fois et dessinent un repère cliquable sur chacun, ce qui convertit l'ambiguïté en un choix fait par la personne.
Les applications de scan dédiées et les imageurs matériels se comportent autrement. Beaucoup renvoient le premier symbole qui se décode proprement, et l'ordre de balayage dépend de la façon dont l'image est parcourue, donc la réponse change avec l'angle de l'appareil. D'autres ont un mode multicode ou par lot qui lit tout ce qui est dans le cadre et renvoie une liste, et il est généralement livré désactivé parce qu'il coûte du temps de décodage sur chaque image.
Deux conclusions s'ensuivent. Vous ne pouvez pas contrôler quel code un lecteur donné choisira, donc ne concevez jamais une étiquette où se tromper de code fait des dégâts. Et si deux codes doivent coexister en servant des lecteurs différents, achetez la séparation avec de la distance physique au lieu de compter sur la préférence d'un lecteur.
Quand deux codes sont la bonne réponse
Il y a des cas où deux est correct et où un seul serait pire.
- Deux publics avec des lecteurs différents. Un scanner de caisse qui attend une convention de contenu et un client qui attend un lien ne font pas le même travail, et les fusionner ne sert ni l'un ni l'autre.
- Un lien plus un contenu autonome. Un code wifi qui fonctionne sans réseau, à côté d'un lien vers le règlement intérieur, qui en a besoin. Ce qui se termine sur l'appareil et ce qui exige un réseau est la ligne de partage.
- Un code plus un numéro de série. Un code identifie l'unité et l'autre pointe vers le manuel. Les étiquettes d'actifs portent souvent les deux, parce que le numéro de série doit être lisible par un système qui n'a jamais entendu parler de votre page web.
- Deux langues, parfois. Parfois.
Ce dernier point mérite son propre paragraphe, parce que c'est la raison la plus fréquente pour laquelle les gens veulent deux codes, et généralement la mauvaise.
Deux langues, c'est en général un seul code
Un code par langue a l'air attentionné et vous coûte ce qui rend les codes utiles. Chaque pièce imprimée porte désormais un partage figé, non mesuré et non modifiable de votre public, et le partage est faux de toute façon : les visiteurs ne se trient pas proprement entre deux étiquettes, et un francophone devant un code français et un code anglais flashera celui qui est le plus près de sa main.
Un seul code pointant vers une page qui propose les deux langues, ou qui lit la préférence linguistique du téléphone et propose un sélecteur, fait le même travail avec la moitié du travail graphique et vous donne un seul jeu de compteurs au lieu de deux. Construire des expériences multilingues passe en revue les approches ; la version courte est que l'aiguillage appartient à la page, pas à l'étiquette.
L'exception est le cas où les deux destinations sont réellement deux choses différentes et non deux traductions d'une même chose : un formulaire pour le personnel et une carte pour les clients, un ticket interne et une page publique de suivi. Ce sont deux codes parce que ce sont deux usages.
Une personne ne distingue pas deux codes
C'est la partie qu'on oublie. Deux carrés noirs identiques ne portent aucune information sur lequel est lequel. Un lecteur voyant, en bonne lumière, ne peut pas les distinguer, et quelqu'un qui utilise un lecteur d'écran sur une version numérique de l'étiquette n'obtient absolument rien, à moins qu'un humain ne l'ait écrit.
Alors légendez-les, en mots, à côté de chaque code, à une taille lisible depuis l'endroit où la personne se tiendra.
- Utilisez un nom, pas une consigne. Carte et Carte des vins battent Scannez ici et Scannez-moi, qui sont indistinguables l'un de l'autre.
- Placez la légende du même côté de chaque code, de façon constante, pour que l'appariement soit évident d'un coup d'œil.
- Sur écran et dans un e-mail, donnez à chaque image un texte alternatif qui nomme sa destination plutôt que les mots QR code, et incluez les vrais liens en texte. Le texte alternatif des images de code en donne les détails.
- Si un code est pour le personnel et l'autre pour le public, dites-le. Une ligne indiquant Réservé au personnel évite plus de mauvais scans que n'importe quelle séparation.
Et en France ?
Un cas typique de double code se trouve sur les étiquettes de vin. Depuis que les ingrédients et la déclaration nutritionnelle peuvent passer par une étiquette électronique, beaucoup de domaines veulent aussi un code vers leur boutique ou leur histoire. Or la Commission européenne demande que la page de l'étiquette électronique reste dépourvue de contenu marketing.
Il faut donc souvent deux codes distincts sur la même contre-étiquette : l'un pour l'information réglementaire, l'autre pour la communication. Appliquez les règles de cet article : un écart suffisant, mesuré en modules, et une légende claire sous chaque code, « Ingrédients et informations nutritionnelles » d'un côté, « Découvrir le domaine » de l'autre.
Le test
Imprimez l'étiquette à sa taille définitive, puis scannez-la huit fois de suite dans des conditions différentes : deux fois avec un téléphone bien centré, deux fois avec l'un des codes repoussé au bord du cadre, deux fois en tenant l'appareil à une trentaine de degrés, et deux fois avec le lecteur dédié que cette étiquette croisera réellement en production. À chaque essai, notez lequel des deux codes a répondu.
Si vous obtenez les deux codes sur ces huit tentatives, la séparation fonctionne et les étiquettes imprimées font leur travail. Si une tentative ne renvoie rien du tout, l'écart est trop petit et des repères sont groupés de travers. Élargissez-le en nombre de modules plutôt qu'à l'œil, et confrontez les règles de placement et de taille à la distance à laquelle les gens se tiendront réellement. Si les deux destinations doivent un jour être échangées, c'est un argument pour un code dynamique sur les deux, puisque les étiquettes sont la partie coûteuse.


