Corpus de test public

Nos affirmations de compatibilité des scanners ne valent que les preuves sur lesquelles elles reposent. Cette page est le corpus, les entrées contre lesquelles nous testons nos familles d'encodeurs en régression, plus le comportement de la caméra téléphone que vous pouvez auditer vous-même sans nous croire sur parole.

Pourquoi ça existe : la plupart des outils QR publient une matrice de compatibilité. La nôtre publie le corpus derrière la matrice. Si vous êtes responsable d'un parc de scanners, retail, entrepôt, pharma, compagnie aérienne, DMV, vous pouvez exécuter ce corpus sur vos propres lecteurs et vérifier chaque affirmation que nous faisons.

Télécharger corpus.zip Fixtures JSON + CSV + méthodologie + README. ~4 Ko.

Chargement de la version…

Comment utiliser le corpus

Téléchargez les fixtures.

Chaque vecteur de test est dans /test-vectors/fixtures.json. Un objet JSON par type avec les champs d'entrée et les sous-chaînes décodées attendues. Récupéré en temps réel depuis ce site, pas de copies périmées.

Régénérez les QR.

Prenez le map fields d'un fixture, entrez les valeurs dans le générateur pour ce type et cliquez Générer. Le QR résultant est bit à bit identique à ce que notre CI traite en aller-retour.

Scannez avec votre propre parc.

Pointez une caméra iPhone, caméra Android, Google Lens, scanner industriel (Zebra, Honeywell, Datalogic) ou lecteur spécifique à l'app (app bancaire, authentificateur) sur le QR généré. Confirmez que le texte décodé contient chaque sous-chaîne expect de ce fixture.

Signalez les écarts.

Si un scanner de votre parc retourne un décodage qui ne correspond pas au fixture, signalez un problème. Nous reproduirons, ajouterons votre scanner à la matrice de compatibilité publique et (si c'est un bug d'encodeur) enverrons un correctif.

Résultats de scan attendus

Généré à partir du même jeu de données que la matrice de compatibilité et la ligne « Scanne sur » de chaque page de type, ces trois éléments ne peuvent donc pas se contredire. Le fichier de fixtures complet sur /test-vectors/ compte 33 entrées, une par famille d'encodeurs que nous testons en régression ; ce n'est pas une ligne par type de produit, et nous ne prétendons pas que ce soit le cas.

TypeEntrée du fixtureiPhone CameraAndroid CameraScanner pro
URLhttps://example.com/testOuvre le lienA1Ouvre le lienA5DécodeA8
WiFiWIFI:S:MyNet;T:WPA;P:...;;Rejoint le réseauA1Rejoint le réseauA5Décode le payloadA8
WiFi Enterprise (EAP)WPA2-EAP PEAP identity=alice@corpiOS 17+, signaléUDécode ; la connexion dépend du fabricantUDécode le payloadQ
vCardFN=Alice ORG=Acme ...Ajouter aux ContactsA1Ajouter aux ContactsA5Décode le payloadA8
TOTPotpauth://totp/...?secret=JBSW...L'application d'authentification le litA9, A10L'application d'authentification le litA9, A10Décode l'URIA8
eSIMLPA:1$rsp.example.com$K2-LM...iOS 17.4+ provisionneA4Android 13+ provisionneUDécode l'URIQ
Bitcoin (BIP-21)bitcoin:1A1zP1eP...Ouvre l'app portefeuilleQOuvre l'app portefeuilleQDécode l'URIQ
SEPA (EPC)BCD header + name + IBAN + amountChaîne brute uniquementQChaîne brute uniquementQDécode la chaîne bruteQ
Swiss QR-billSPC header + IBAN + address + amountChaîne brute uniquementQChaîne brute uniquementQDécode la chaîne bruteQ
Micro QRCompact payloadPas de décodageV, UPas de décodageGLecteurs industrielsZ
rMQRRectangular payloadPas de décodageUPas de décodageGFirmware Zebra, Scandit et Cognex récentsZ
GS1 Digital Linkhttps://id.gs1.org/01/09506000134352Ouvre l'URLQOuvre l'URLQLe firmware POS analyse les AIQ
AztecArbitrary payloadPas de décodageA2Google Lens, certaines variantesA7NatifA8
Data MatrixArbitrary payloadPas de décodageA2Google LensA6NatifA8
PDF417AAMVA or arbitraryPas de décodageA2Google Lens, inégalA7NatifA8
AAMVA driver license@\n\x1e\rANSI 636014100002DL...Flux compatible permis dès iOS 17A3Apps compatibles permis uniquementUNatifA8
EAN-13 / UPC-A0012345678905Pas de décodageApGoogle LensGChaque POS retailA8
Code 128ABC-123Pas de décodageApGoogle LensGNatifA8

Comment lire les marques

Preuve

Ce que signifie "résultat de scan attendu"

Notes de méthodologie

Journal d'attestation du parc de scanners

Chaque passage manuel sur un appareil, daté. Des lignes sont ajoutées lorsque nous acquérons du matériel ou qu'un utilisateur signale une divergence ; un résultat ne change jamais silencieusement, il obtient une nouvelle ligne.

#DeviceOS / appCorpus sliceResultDateNotes
A1iPhone 15 ProiOS 18.3, native CameraAll QR fixturespass2026-04-10
A2iPhone 15 ProiOS 18.3, native CameraAztec, PDF417, Data Matrixfail2026-04-10Aucun ne décode nativement (attendu, voir /standards/non-qr-2d/)
A3iPhone 15 ProiOS 18.3, native CameraAAMVA PDF417partial2026-04-10Le flux compatible permis d'iOS 17+ propose Ajouter au Wallet ; le PDF417 brut n'est pas retourné
A4iPhone 15 ProiOS 18.3, WalleteSIM LPApass2026-04-12Le flux d'ajout d'eSIM se déclenche correctement
A5Pixel 8Android 14, native CameraAll QR fixturespass2026-04-10
A6Pixel 8Android 14, Google LensData Matrixpass2026-04-10
A7Pixel 8Android 14, Google LensAztec, PDF417partial2026-04-10Certaines variantes décodent ; le support est inégal
A8Zebra DS8100firmware CAAACS00-002-R06All 2D + 1D fixturespass2026-04-11Imageur industriel, référence canonique
A9Google Authenticatorv7.0+ (iOS/Android)TOTP, HOTPpass2026-04-12SHA-1 uniquement, 6 chiffres (ignore les paramètres algorithme/chiffres selon le profil de facto de Google)
A101Passwordv8 (iOS/Android/macOS)TOTP, HOTPpass2026-04-12Support RFC complet incl. SHA-256, SHA-512, 8 chiffres

À venir

Voir aussi

Corpus dernièrement testé en régression le 2026-04-18. Appareils scanner vérifiés : iPhone 15 Pro / iOS 18.3, Pixel 8 / Android 14, Zebra DS8100.