Publiek testcorpus

Onze scannercompatibiliteitsclaims zijn slechts zo goed als het bewijs waarop ze zijn gebaseerd. Deze pagina is het corpus, de invoer waarmee we onze encoderfamilies regressiontesten, plus het telefonische cameragedrag dat je zelf kunt controleren zonder ons op ons woord te geloven.

Waarom dit bestaat: de meeste QR-tools publiceren een compatibiliteitsmatrix. Wij publiceren het corpus achter de matrix. Als je verantwoordelijk bent voor een scannervloot, detailhandel, magazijn, farma, luchtvaart, DMV, kun je dit corpus door je eigen lezers halen en elke claim die wij maken verifiëren.

Corpus.zip downloaden Gebundelde fixtures-JSON + CSV + methodologie + README. ~4 KB.

Versie laden…

Het corpus gebruiken

Download de fixtures.

Elke testvector staat in /test-vectors/fixtures.json. Eén JSON-object per type met de invoervelden en de verwachte gedecodeerde subtekenreeks(en). Live opgehaald van deze site, geen verouderde kopieën.

Regenereer de QR's.

Neem de fields-map van een fixture, voer de waarden in de generator in voor dat type en klik op Genereer. De resulterende QR is bit-voor-bit identiek aan wat onze CI round-trip test.

Scan met je eigen vloot.

Richt een iPhone-camera, Android-camera, Google Lens, industriële scanner (Zebra, Honeywell, Datalogic) of app-specifieke lezer (een bankapp, een authenticator) op de gegenereerde QR. Bevestig dat de gedecodeerde tekst elke expect-subtekenreeks voor die fixture bevat.

Meld discrepanties.

Als een scanner in je vloot een decodering teruggeeft die niet overeenkomt met de fixture, dien dan een issue in. We reproduceren, voegen je scanner toe aan de openbare compatibiliteitsmatrix en leveren (als het een encoderbug is) een oplossing.

Verwachte scanresultaten

Gerenderd vanuit dezelfde dataset als de compatibiliteitsmatrix en de regel "Scant op" van elke typepagina, zodat de drie elkaar niet kunnen tegenspreken. Het volledige fixturebestand op /test-vectors/ heeft 33 items, één per encoderfamilie die we regressiontesten; het is geen rij per producttype, en dat beweren we ook niet.

TypeFixture-invoeriPhone CameraAndroid CameraPro-scanner
URLhttps://example.com/testOpent linkA1Opent linkA5DecodeertA8
WiFiWIFI:S:MyNet;T:WPA;P:...;;Verbindt met netwerkA1Verbindt met netwerkA5Decodeert payloadA8
WiFi Enterprise (EAP)WPA2-EAP PEAP identity=alice@corpiOS 17+, gemeldUDecodeert; verbinden hangt af van de fabrikantUDecodeert payloadQ
vCardFN=Alice ORG=Acme ...Toevoegen aan contactenA1Toevoegen aan contactenA5Decodeert payloadA8
TOTPotpauth://totp/...?secret=JBSW...Authenticator-app leest hetA9, A10Authenticator-app leest hetA9, A10Decodeert URIA8
eSIMLPA:1$rsp.example.com$K2-LM...iOS 17.4+ activeertA4Android 13+ activeertUDecodeert URIQ
Bitcoin (BIP-21)bitcoin:1A1zP1eP...Wallet-app opentQWallet-app opentQDecodeert URIQ
SEPA (EPC)BCD header + name + IBAN + amountAlleen ruwe tekenreeksQAlleen ruwe tekenreeksQDecodeert ruwe tekenreeksQ
Swiss QR-billSPC header + IBAN + address + amountAlleen ruwe tekenreeksQAlleen ruwe tekenreeksQDecodeert ruwe tekenreeksQ
Micro QRCompact payloadGeen decoderingV, UGeen decoderingGIndustriële lezersZ
rMQRRectangular payloadGeen decoderingUGeen decoderingGNieuwere Zebra-, Scandit- en Cognex-firmwareZ
GS1 Digital Linkhttps://id.gs1.org/01/09506000134352Opent URLQOpent URLQPOS-firmware verwerkt de AI'sQ
AztecArbitrary payloadGeen decoderingA2Google Lens, sommige variantenA7NativeA8
Data MatrixArbitrary payloadGeen decoderingA2Google LensA6NativeA8
PDF417AAMVA or arbitraryGeen decoderingA2Google Lens, wisselendA7NativeA8
AAMVA driver license@\n\x1e\rANSI 636014100002DL...iOS 17+ rijbewijsbewuste stroomA3Alleen rijbewijsbewuste appsUNativeA8
EAN-13 / UPC-A0012345678905Geen decoderingApGoogle LensGElke retail-POSA8
Code 128ABC-123Geen decoderingApGoogle LensGNativeA8

Hoe je de markeringen leest

Bewijs

Wat "verwacht scanresultaat" betekent

Methodologische opmerkingen

Scannervloot-attestatielogboek

Elke handmatige apparaattest, gedateerd. Rijen worden toegevoegd wanneer we hardware aanschaffen of een gebruiker een discrepantie meldt; een resultaat verandert nooit stilzwijgend, het krijgt een nieuwe rij.

#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-10Geen enkele decodeert native (verwacht, zie /standards/non-qr-2d/)
A3iPhone 15 ProiOS 18.3, native CameraAAMVA PDF417partial2026-04-10iOS 17+ rijbewijsbewuste stroom biedt 'Toevoegen aan Wallet' aan; ruwe PDF417 wordt niet teruggegeven
A4iPhone 15 ProiOS 18.3, WalleteSIM LPApass2026-04-12eSIM-toevoegen-stroom start correct
A5Pixel 8Android 14, native CameraAll QR fixturespass2026-04-10
A6Pixel 8Android 14, Google LensData Matrixpass2026-04-10
A7Pixel 8Android 14, Google LensAztec, PDF417partial2026-04-10Sommige varianten decoderen; ondersteuning is wisselend
A8Zebra DS8100firmware CAAACS00-002-R06All 2D + 1D fixturespass2026-04-11Industriële imager, canonieke referentie
A9Google Authenticatorv7.0+ (iOS/Android)TOTP, HOTPpass2026-04-12Alleen SHA-1, 6 cijfers (negeert algoritme-/cijferparameters volgens Googles de-facto-profiel)
A101Passwordv8 (iOS/Android/macOS)TOTP, HOTPpass2026-04-12Volledige RFC-ondersteuning incl. SHA-256, SHA-512, 8 cijfers

Wat er komen gaat

Zie ook

Corpus voor het laatst regressiongetest 2026-04-18. Geverifieerde scanapparaten: iPhone 15 Pro / iOS 18.3, Pixel 8 / Android 14, Zebra DS8100.