Pourquoi les QR codes artistiques se scannent encore : l'idée de la trame
Un QR code artistique peut encore se scanner parce que certains décodeurs ne jugent pas chaque module dans son ensemble. Un décodeur open source, ZXing, lit un pixel au centre calculé de chaque module. L'approche par trame (halftone), décrite par Chu et al. en 2013, s'appuie là-dessus : chaque module garde en son centre un point de la bonne couleur, et l'image apparaît tout autour. L'astuce échoue quand le flou ou une superposition atteint le centre : chaque design a donc besoin d'un test de décodage et d'une épreuve imprimée.
Faits vérifiés le 17 octobre 2026.
Ce qu'un lecteur regarde, et ce qu'il ignore
La structure ci-dessous provient de l'édition 2006 de l'ISO/IEC 18004 ; une quatrième édition est parue en août 2024 et nous n'en avons pas lu le texte intégral. Un QR code a trois motifs de repérage identiques, faits de modules sombres 7×7, clairs 5×5 et sombres 3×3 dans le rapport 1:1:3:1:1 ; trouver les trois indique au lecteur où se trouve le symbole et comment il est tourné. Les motifs de synchronisation et d'alignement l'aident ensuite à placer la grille de modules.
Une fois la grille placée, le décodeur échantillonne chaque module. Un article de l'EUSIPCO 2022 part du principe que seul le pixel central de chaque module est échantillonné, mais ajoute que des pixels voisins peuvent l'être quand la grille d'échantillonnage est estimée avec des erreurs. Nous n'avons pas vérifié comment décodent les appareils photo intégrés des iPhone et des téléphones Android : voyez ZXing comme un exemple, pas comme tous les téléphones.
L'idée de la trame
Chu, Chang, Lee et Mitra ont publié « Halftone QR Codes » dans ACM Transactions on Graphics en novembre 2013. Le modèle de l'article divise chaque module en 3×3 sous-modules et lie la couleur du module à celui du centre, laissant les huit autres libres de suivre une image tramée. Dans des conditions parfaites, notent-ils, tout motif ayant la bonne couleur au centre devrait laisser le module lisible. Ils ne modifient que des modules de données.
Voyez-le comme une promesse par module : le centre est toujours juste, le reste peut montrer l'image. Si le décodeur échantillonne exactement le centre, l'image n'abîme aucun mot de code, et la correction d'erreurs reste en réserve (c'est notre lecture, pas une affirmation de l'article). L'échantillonnage réel est imparfait, et c'est là que la réserve est consommée. Les auteurs décrivent aussi une étape facultative qui, dans leurs tests, utilise délibérément jusqu'à la moitié de la capacité de correction.
L'article est franc sur le prix à payer : il cite comme limite le flou dû au sous-échantillonnage, car le pixel central qui porte les données est facilement pollué par ses voisins. Dans un test portant sur cinq codes, trois utilisateurs et quatre lecteurs de codes-barres sur téléphone, les codes tramés ont cessé de fonctionner à un rayon de flou gaussien de 2 pixels et un angle de vue de 40 degrés ; les codes ordinaires correspondants, à 6 pixels et 60 degrés. Le même article indique que, sur 100 codes créés avec les réglages par défaut, 91 ont été lus par les quatre lecteurs. Les tests ont utilisé un téléphone de 8 mégapixels et des codes affichés sur un écran : lisez-les comme une tendance, pas comme une prévision pour les téléphones d'aujourd'hui.
Là où les codes artistiques cassent
Chaque ligne rompt l'hypothèse de l'échantillonnage central ou consomme de la capacité de correction d'erreurs. La dernière colonne signale notre propre raisonnement.
| Ce que vous faites | Ce qui ne va pas | Fondement |
|---|---|---|
| Mettre des modules clairs sur fond sombre | L'édition 2006 autorise les symboles clairs sur fond sombre, mais chaque décodeur choisit s'il essaie une image inversée. ZXing ne le fait que si l'appelant active une indication ; jsQR essaie les deux par défaut, pour un coût en vitesse d'environ 50 %. | Norme, deux décodeurs ; appareils photo des téléphones non vérifiés |
| Peindre sur les trois motifs des coins | Ils localisent et orientent le symbole, et Chu et al. ne modifient que des modules de données. | Édition 2006 ; Chu et al. |
| Laisser moins de quatre modules de marge | L'édition 2006 exige une zone de silence de quatre modules de large. DENSO WAVE indique que des lettres ou des images autour du code empêchent d'assurer la marge requise. | Édition 2006 ; DENSO WAVE |
| Réduire les points centraux pour montrer plus d'image | Moins de marge quand la grille d'échantillonnage est légèrement décalée, et les codes tramés ont toléré moins de flou et d'angle dans le test de 2013. | EUSIPCO 2022 ; Chu et al. ; le lien avec la taille des points est notre déduction |
| Teinter les points avec les couleurs de l'image | L'écart entre sombre et clair peut se réduire. Le binariseur de ZXing traite un bloc de 8×8 pixels dont le pixel le plus clair et le plus sombre diffèrent de 24 niveaux ou moins (échelle de 0 à 255) comme ne contenant que des pixels clairs ou que des pixels sombres, et estime son seuil autrement. | Code source de ZXing ; le lien avec la teinte est notre déduction |
Pourquoi « 30 % de correction d'erreurs » ne fait pas 30 % de la surface
L'édition 2006 donne une capacité de récupération approximative de 7 %, 15 %, 25 % et 30 % pour les niveaux L, M, Q et H, en part des mots de code du symbole. DENSO WAVE exprime lui aussi le taux en proportion du total des mots de code. La norme ajoute qu'inverser un module fait décoder son caractère comme un mot de code apparemment valide mais différent, et que le corriger demande deux mots de code de correction. Son exemple : un symbole de version 6-H compte 172 mots de code, dont 112 pour la correction, ce qui permet de corriger 56 erreurs de décodage, soit 32,6 % de la capacité.
Tout pourcentage de surface n'est donc qu'une supposition. Dans un symbole régulier, un mot de code occupe une colonne de deux modules de large sur quatre de haut, selon notre lecture de la figure de placement des bits de la norme ; d'après notre déduction, des taches dispersées peuvent donc toucher plus de mots de code qu'une seule zone pleine de même surface. Nous n'affirmons rien sur la surface qu'un design peut couvrir. Pour choisir un niveau, voir les niveaux de correction d'erreurs expliqués ; pour des exemples finis, voir les idées de design par secteur.
Comment vérifier un code artistique avant de l'imprimer
- Partez du niveau H et du contenu le plus court possible. Plus de contenu signifie des modules plus petits à taille d'impression égale, et DENSO WAVE indique que des modules plus grands sont plus stables et plus faciles à lire. Le guide de la capacité de données montre à quelle vitesse les symboles grossissent.
- Vérifiez le contraste sombre/clair partout. Convertissez le design en niveaux de gris. Chaque point sombre doit être nettement plus sombre que les points clairs voisins, dans les zones claires comme sombres de l'image.
- Décodez-le numériquement à plusieurs tailles. Le vérificateur de QR code gratuit fonctionne dans votre navigateur sans envoyer l'image, teste le contraste et la zone de silence, refait le test à des tailles réduites et signale un code qui ne se décode qu'inversé.
- Imprimez une épreuve et scannez-la avec différents téléphones. L'annexe informative de la norme demande de vérifier un symbole dans sa configuration finale d'étiquette ou d'emballage, car « les surimpressions, la transparence et les surfaces courbes ou irrégulières peuvent toutes affecter la lisibilité du symbole ». Chu et al. ont constaté que quatre lecteurs de codes-barres sur un même téléphone se comportaient différemment : utilisez au moins deux téléphones, à la distance et sous la lumière réelles. Voir le guide des tailles d'impression pour les largeurs minimales.
- En cas d'échec, changez une seule chose à la fois. Agrandissez les points centraux, baissez le contraste de l'image, imprimez plus grand ou réduisez le contenu, puis répétez les étapes 3 et 4.
Ce qu'une vérification intégrée peut et ne peut pas vous dire
Dans l'éditeur de QR Maker AI, les thèmes festifs et les trames de motifs comme le caractère 福 sont gratuits, et la fusion d'image, votre propre image sous les points, est une fonction Pro en octobre 2026 (voir les tarifs). Pour les trames de motifs et la fusion d'image, l'éditeur ne dessine qu'un point central par module, place un bloc clair uni sous les motifs des coins, les motifs d'alignement et la zone du logo, et règle la correction d'erreurs au niveau H.
La vérification Scan Guard de l'éditeur décode le code rendu dans votre navigateur à une taille normale et à plusieurs tailles plus petites, avec un décodeur open source et uniquement en mode sombre sur clair. Elle ne peut tester ni les codes clairs sur fond sombre, ni le papier, ni l'encre, ni les surfaces courbes, ni l'appareil photo d'aucun téléphone : l'épreuve imprimée de l'étape 4 reste indispensable. Essayez un design dans l'éditeur.
FAQ
Comment fonctionnent les QR codes artistiques ?
Les codes de type trame gardent un point de la bonne couleur au centre de chaque module et dessinent l'image autour, parce que des décodeurs comme ZXing échantillonnent près du centre du module. La correction d'erreurs est la marge de sécurité supplémentaire.
Puis-je mettre une photo derrière un QR code et qu'il se scanne quand même ?
Cela peut marcher si les points restent nettement plus sombres ou plus clairs que leur entourage, si les coins et la marge restent dégagés et si la correction d'erreurs est au niveau H. Aucun design n'est sûr de se scanner : testez une épreuve imprimée.
Puis-je utiliser des points blancs sur fond sombre ?
La norme autorise les symboles clairs sur fond sombre, mais la prise en charge dépend de l'application : ZXing n'essaie une image inversée que si on le lui demande. Sombre sur clair est plus sûr ; testez tout design inversé sur les téléphones de votre public.
Quelle part d'un QR code un design peut-il couvrir ?
Le niveau ne se traduit pas en pourcentage de surface. Les niveaux de correction d'erreurs sont définis en part de mots de code, et un seul module inversé gâche tout son mot de code. Testez le fichier réel.
Pourquoi mon QR code personnalisé ne se scanne-t-il pas ?
Vérifiez les couleurs inversées, les coins masqués, une marge de moins de quatre modules, un contraste faible entre points sombres et clairs, et une impression trop petite. La liste de dépannage couvre d'autres causes.
Sources
- ZXing project — DefaultGridSampler.java. Undated source file. Accessed 17 October 2026.
- Chu, H.-K., et al. — Halftone QR Codes. ACM Transactions on Graphics 32(6), Article 217, SIGGRAPH Asia 2013 (author-hosted PDF, National Tsing Hua University; publisher record: ACM Digital Library). Published 1 November 2013. Accessed 17 October 2026.
- ISO/IEC — ISO/IEC 18004:2006, QR Code 2005 bar code symbology specification. Second edition, published 1 September 2006 (copy hosted by Public.Resource.Org). Accessed 17 October 2026.
- ISO — ISO/IEC 18004:2024 standard page. Fourth edition, published August 2024. Accessed 17 October 2026.
- Pena-Pena, K., Lau, D. L., Arce, G. R. — Colored-QRNet: Fast QR Code Color Image Embedding. EUSIPCO 2022 proceedings. Published 2022. Accessed 17 October 2026.
- ZXing project — DecodeHintType.java. Undated source file. Accessed 17 October 2026.
- jsQR project — README. Undated. Accessed 17 October 2026.
- DENSO WAVE — Examples of problems encountered in reading a code. QRcode.com, undated. Accessed 17 October 2026.
- ZXing project — HybridBinarizer.java. Undated source file. Accessed 17 October 2026.
- DENSO WAVE — Error correction feature. QRcode.com, undated. Accessed 17 October 2026.
- DENSO WAVE — Point for setting the module size. QRcode.com, undated. Accessed 17 October 2026.