Impression des codes-barres¶
La cause la plus fréquente de « mon code-barres ne se lit pas » n’est pas l’encodage – les barres sont trop petites. Les lecteurs ont besoin que la barre la plus étroite (1D) ou un module (2D) – la dimension X – soit assez large pour que leur optique la résolve. À mesure que les éléments passent sous ce seuil, les taux de lecture chutent brutalement.
La plupart des spécifications de symbologie laissent la dimension X à l’application. Les valeurs ci-dessous sont des recommandations pratiques pour la chaîne d’impression pyStrich typique : une imprimante laser grand public (300-600 DPI) plus, au choix, un lecteur portatif bon marché ou l’appareil photo d’un téléphone moderne. Augmentez la dimension X si l’un des maillons de cette chaîne est plus faible – rubans usés, appareils photo flous, lectures à distance – ou si la surface imprimée est réfléchissante ou galbée.
Symbologie |
Dimension X |
Notes |
|---|---|---|
Code 39 |
0,19 - 0,50 mm |
0,25 mm est une valeur par défaut sûre pour l’étiquetage industriel. |
Code 128 |
0,19 - 0,50 mm |
0,25 mm se lit de façon fiable avec la plupart des lecteurs fixes et portatifs. |
EAN-13 (détail) |
0,26 - 0,66 mm |
GS1 spécifie une dimension X nominale de 0,33 mm (grossissement 100 %) ; la lecture en détail admet généralement 80 %-200 % du nominal. |
Data Matrix |
0,25 - 0,50 mm |
~0,3 mm est le plancher pratique courant pour les imageurs portatifs. |
QR Code |
0,25 - 0,50 mm |
Les appareils photo de téléphone ont généralement besoin de >=0,4 mm à bout de bras. |
PDF417 |
0,25 - 0,50 mm |
La hauteur de rangée doit être >=3x la dimension X (valeur par défaut de pyStrich). |
Aztec Code |
0,38 - 0,76 mm |
Plage la plus fiable ; plus petit fonctionne avec de bons imageurs, mais les lectures par appareil photo de téléphone se dégradent rapidement en dessous de ~0,4 mm. |
Pour la vérification de la qualité d’impression, voir ISO/IEC 15415 (2D) ou ISO/IEC 15416 (1D) ; pour les applications de détail et de chaîne d’approvisionnement, suivez les GS1 General Specifications.
Astuce
Privilégiez le SVG ou l’EPS lorsque votre chaîne d’outils les prend en charge. La sortie vectorielle se met à l’échelle sans perte, de sorte que vous dimensionnez le symbole au moment de la mise en page plutôt que de figer une taille physique au moment de l’encodage.
Sortie vectorielle (SVG / EPS)¶
Pour le SVG et l’EPS, pyStrich ne détermine pas du tout la taille d’impression. La sortie est indépendante de la résolution – choisissez n’importe quelle bar_width (ou cellsize) et laissez l’outil de mise en page en aval mettre à l’échelle jusqu’à la dimension X dont vous avez besoin :
SVG : définissez
widthetheighten HTML / CSS, ou via leviewBoxdans votre outil de conception.EPS : mettez à l’échelle au moment de l’inclusion –
\includegraphics[width=40mm]{...}en LaTeX, ou via la taille de placement dans Illustrator / InDesign.
La bar_width EPS est exprimée en points PostScript (1 pt = 1/72 de pouce ≈ 0,353 mm), de sorte que la valeur par défaut produit déjà une taille physiquement raisonnable si vous ne la redéfinissez pas au moment de l’inclusion.
Astuce
Pour une sortie PDF, intégrez le SVG dans un modèle HTML et effectuez le rendu avec WeasyPrint. C’est une voie propre vers des planches d’étiquettes multiposes, des bordereaux de colisage et d’autres documents prêts à imprimer.
Sortie matricielle (PNG)¶
Le PNG est le seul format de sortie où bar_width / cellsize fixe la taille d’impression, car les images matricielles ne se mettent pas à l’échelle sans perte. En partant d’une dimension X cible et du DPI de l’imprimante :
bar_width (px) = X-dimension (mm) * DPI / 25.4
À 300 DPI, une dimension X de 0,25 mm nécessite bar_width=3 (arrondi à partir de 2,95). À 600 DPI, la même dimension X nécessite bar_width=6.
Arrondissez au pixel entier supérieur ; arrondir vers le bas fait passer la dimension X sous la limite de lisibilité.
Couleurs¶
Les symboles sont noirs sur blanc par défaut. Passez dark_hex et light_hex – chacune une couleur hexadécimale de 3, 6 ou 8 chiffres – à n’importe quelle méthode de rendu pour recolorer les modules (ou les barres) et le fond de façon cohérente en PNG, SVG et EPS. Les barres et tout texte en clair prennent dark_hex.
Les lecteurs seuillent sur la luminance ; gardez donc dark_hex et light_hex bien séparées en luminosité ; une paire à faible contraste érode la fiabilité de lecture, tout comme une dimension X trop petite. Le bleu marine sur gris clair, sobre, ci-dessous reste confortablement lisible.
from pystrich.qrcode import QRCodeEncoder
QRCodeEncoder("https://github.com/mmulqueen/pyStrich").save_svg(
"qrcode-navy.svg", dark_hex="#1b3a5c", light_hex="#e8e8e8"
)
Zones de silence¶
Toute symbologie exige un espace blanc (la zone de silence) autour du symbole pour que les lecteurs puissent en localiser les limites. pyStrich émet une zone de silence automatiquement ; ne rognez pas dans la marge blanche lorsque vous intégrez la sortie dans une autre image.
Symbologie |
Zone de silence appliquée par pyStrich |
|---|---|
Code 39 |
10x |
Code 128 |
10x |
EAN-13 |
11x |
Data Matrix |
Configurable via |
QR Code |
4 modules de chaque côté (imposé par la spécification). |
PDF417 |
Configurable via |
Aztec Code |
Configurable via |
Tolérance aux dommages¶
Les codes-barres 2D offrent une certaine tolérance aux dommages physiques et environnementaux – éraflures, bavures, marquages, occultation partielle – grâce à leur correction d’erreurs Reed-Solomon. Cette tolérance peut être améliorée en augmentant le niveau de correction d’erreurs, en agrandissant les dimensions d’impression et en positionnant le code-barres loin des bords de l’étiquette ou du document (qui subissent le plus d’usure). L’utilisation de supports et d’une impression adaptés est essentielle.
Pour les environnements difficiles, si les données encodées ont une longueur et un jeu de caractères prévisibles, portez le niveau de correction d’erreurs aussi haut que l’espace disponible sur l’étiquette ou le document le permet, à une taille de module raisonnable.
La correction d’erreurs ne protège que la zone de données : les motifs fixes du symbole (motif de recherche, motif de positionnement ou cible) doivent rester identifiables pour que le décodeur puisse ne serait-ce que se verrouiller.
Les exemples ci-dessous survivent chacun à une bavure diagonale spectaculaire placée à l’écart de ces motifs fixes.
Aztec ( |
Data Matrix |
QR Code ( |
|---|---|---|
|
|
|
Vérification¶
Si un code-barres imprimé ne se lit pas de façon fiable :
Essayez d’abord de le lire à l’écran. S’il échoue à l’écran, l’encodage ou le dimensionnement est en cause ; s’il réussit à l’écran mais échoue à l’impression, c’est le procédé d’impression qui est en cause.
Mesurez la dimension X avec une règle ou une loupe et vérifiez que la zone de silence est intacte – non rognée, non imprimée sur un fond coloré.
Vérifiez le contraste d’impression – les imprimantes thermiques à faible DPI ou les rubans usés peuvent produire des barres trop grises pour être lues.
Pour les déploiements en production imprimant des codes-barres à grande échelle, envisagez d’utiliser un vérificateur de qualité d’impression (un instrument qui note les symboles au regard des normes ISO/IEC 15415 / 15416). Une note de conformité obtenue une fois lors de l’intégration vaut mieux que la réimpression d’un millier d’étiquettes ratées.