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 canoniques contre lesquelles nous testons chaque encodeur 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.
Télécharger corpus.zip Fixtures JSON + CSV + méthodologie + README. ~4 Ko.
Chargement de la version…
Comment utiliser le corpus
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.
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.
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.
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, sous-ensemble sélectionné
C'est une vue compacte du JSON complet des fixtures, groupée par comportement du scanner. Pour la liste exhaustive de tous les types qu'Abundera supporte, allez à /test-vectors/.
| Type | Entrée du fixture | Caméra iOS | Caméra Android | Scanner pro |
|---|---|---|---|---|
| URL | https://example.com/test | Décode | Décode | Décode |
| WiFi | SSID=MyNet PSK=... WPA | Rejoint le réseau | Rejoint le réseau | Décode payload |
| vCard | FN=Alice ORG=Acme ... | Ajouter aux Contacts | Ajouter aux Contacts | Décode payload |
| TOTP | otpauth://totp/...?secret=JBSW... | App d'authentification le lit | App d'authentification le lit | Décode URI |
| eSIM | LPA:1$rsp.example.com$K2-LM... | iOS 17.4+ provisionne | Android 13+ provisionne | Décode URI |
| Bitcoin (BIP-21) | bitcoin:1A1zP1eP... | Ouvre app portefeuille | Ouvre app portefeuille | Décode URI |
| SEPA (EPC) | BCD header + name + IBAN + amount | Chaîne brute uniquement | Chaîne brute uniquement | Support app bancaire |
| Swiss QR-bill | SPC header + IBAN + address + amount | Chaîne brute uniquement | Chaîne brute uniquement | Apps bancaires suisses natives |
| GS1 Digital Link | https://id.gs1.org/01/09506000134352 | Ouvre URL | Ouvre URL | Firmware POS analyse les AI |
| Data Matrix | Arbitrary payload | Pas de décodage | Google Lens uniquement | Natif |
| Aztec | Arbitrary payload | Pas de décodage | Certains lecteurs Android | Natif |
| PDF417 | AAMVA or arbitrary | Pas de décodage | Google Lens partiel | Natif |
| Permis de conduire AAMVA | @
ANSI 636014080002DL... | iOS 17+ reconnaît la licence | Apps Android reconnaissant la licence | Natif |
| EAN-13 | 0012345678905 | Décode les chiffres | Décode les chiffres | Chaque POS retail |
| Micro QR | Compact payload | Pas de décodage | Pas de décodage | Lecteurs industriels uniquement |
| rMQR | Rectangular payload | Pas de décodage | Pas de décodage | Certains firmware Scandit/Cognex |
Ce que signifie "résultat de scan attendu"
- Decodes, Décode, le lecteur natif du téléphone retourne le payload sans avoir besoin d'une app séparée.
- Partial, Partiel, le décodage dépend d'une app spécifique (authentificateur, portefeuille, banque) ou d'une version OS spécifique.
- No decode, Pas de décodage, la caméra native ne retourne rien. Nécessite un scanner ou lecteur spécialisé.
Notes de méthodologie
- Tous les fixtures sont en aller-retour. Notre CI génère chaque code dans Chromium sans tête, le décode via l'API
BarcodeDetectordu navigateur et vérifie la correspondance de sous-chaîne. Un CI vert signifie que le corpus est cohérent en interne. - Les résultats du scanner dans ce tableau proviennent de tests manuels sur de vrais appareils. Pas de synthèse. iPhone 15 Pro sur iOS 18.3, Pixel 8 sur Android 14, imageur Zebra DS8100 sur firmware CAAACS00-002-R06.
- Nous publions les résultats négatifs. Si la caméra iPhone refuse de décoder une symbologie (Data Matrix, Aztec, PDF417), c'est un 'Pas de décodage' dans le tableau, pas un renommage de 'lecteur natif'.
- Le corpus est versionné. Quand nous ajoutons un type ou corrigeons un bug d'encodeur, l'entrée fixture correspondante est expédiée dans le même commit. Consultez l'historique du fixture pour la piste d'audit.
À venir
- Artefacts pré-rendus. Le ZIP actuel inclut fixtures + méthodologie + CSV. Une future révision ajoutera du SVG + PNG pré-rendus de chaque fixture pour que vous puissiez les intégrer directement dans un harness de parc de scanners. Étape de navigateur sans tête au moment de la compilation en attente.
- Attestation du parc de scanners. Journal daté sur docs/SCANNER_ATTESTATION.md, s'agrandit à chaque vérification contre un nouvel appareil.
- Vérification tierce. Un laboratoire de sécurité indépendant exécute le corpus sur un parc de scanners et publie une attestation signée. En attente, commandé ; le rapport sera publié ici à son arrivée.
Voir aussi
- /test-vectors/, JSON complet des fixtures et tableau consultable.
- /compatibility/, matrice de compatibilité des scanners en direct.
- /standards/, pages de référence par standard.
- /print-size/, guide d'impression physique qui accompagne le corpus.