Offentligt testkorpus
Våra påståenden om skannerkompatibilitet är bara lika bra som bevisen de bygger på. Den här sidan är korpuset, inmatningarna vi regressionstestar våra kodarfamiljer mot, plus telefonkamerabeteendet som du kan granska själv utan att ta oss på orden.
Ladda ner corpus.zip Paketerade fixtures-JSON + CSV + metodik + README. ~4 KB.
Laddar version…
Hur du använder korpuset
Varje testvektor finns i /test-vectors/fixtures.json. Ett JSON-objekt per typ med inmatningsfält och förväntade avkodade delsträng(ar). Hämtas live från den här webbplatsen, inga inaktuella kopior.
Ta valfri fixtures fields-map, lägg in värdena i generatorn för den typen och klicka på Generera. Den resulterande QR är bit-för-bit identisk med vad vår CI kör round-trip mot.
Rikta en iPhone-kamera, Android-kamera, Google Lens, industriell skanner (Zebra, Honeywell, Datalogic) eller appspecifik läsare (en bankapp, en autentiserare) mot den genererade QR. Bekräfta att den avkodade texten innehåller varje expect-delsträng för den fixturens.
Om en skanner i din flotta returnerar en avkodning som inte matchar fixturens, registrera ett ärende. Vi reproducerar, lägger till din skanner i den offentliga kompatibilitetsmatrisen och (om det är ett kodarfel) levererar en fix.
Förväntade skanningresultat
Renderad från samma dataset som kompatibilitetsmatrisen och varje typsidas rad "Skannas på", så de tre kan inte säga emot varandra. Den fullständiga fixture-filen på /test-vectors/ har 33 poster, en per kodarfamilj vi regressionstestar; det är inte en rad per produkttyp, och vi påstår inte att den är det.
| Typ | Fixture-inmatning | iPhone Camera | Android Camera | Pro-skanner |
|---|---|---|---|---|
| URL | https://example.com/test | Öppnar länkA1 | Öppnar länkA5 | AvkodarA8 |
| WiFi | WIFI:S:MyNet;T:WPA;P:...;; | Ansluter till nätverkA1 | Ansluter till nätverkA5 | Avkodar payloadA8 |
| WiFi Enterprise (EAP) | WPA2-EAP PEAP identity=alice@corp | iOS 17+, rapporteratU | Avkodar; anslutning beror på tillverkarenU | Avkodar payloadQ |
| vCard | FN=Alice ORG=Acme ... | Lägg till i KontakterA1 | Lägg till i KontakterA5 | Avkodar payloadA8 |
| TOTP | otpauth://totp/...?secret=JBSW... | Autentiseringsappen läser denA9, A10 | Autentiseringsappen läser denA9, A10 | Avkodar URIA8 |
| eSIM | LPA:1$rsp.example.com$K2-LM... | iOS 17.4+ etablerarA4 | Android 13+ etablerarU | Avkodar URIQ |
| Bitcoin (BIP-21) | bitcoin:1A1zP1eP... | Plånboksappen öppnasQ | Plånboksappen öppnasQ | Avkodar URIQ |
| SEPA (EPC) | BCD header + name + IBAN + amount | Bara råsträngQ | Bara råsträngQ | Avkodar råsträngQ |
| Swiss QR-bill | SPC header + IBAN + address + amount | Bara råsträngQ | Bara råsträngQ | Avkodar råsträngQ |
| Micro QR | Compact payload | Ingen avkodningV, U | Ingen avkodningG | Industriella läsareZ |
| rMQR | Rectangular payload | Ingen avkodningU | Ingen avkodningG | Nyare Zebra-, Scandit- och Cognex-firmwareZ |
| GS1 Digital Link | https://id.gs1.org/01/09506000134352 | Öppnar URLQ | Öppnar URLQ | POS-firmware tolkar AI:ernaQ |
| Aztec | Arbitrary payload | Ingen avkodningA2 | Google Lens, vissa varianterA7 | NativtA8 |
| Data Matrix | Arbitrary payload | Ingen avkodningA2 | Google LensA6 | NativtA8 |
| PDF417 | AAMVA or arbitrary | Ingen avkodningA2 | Google Lens, ojämntA7 | NativtA8 |
| AAMVA driver license | @\n\x1e\rANSI 636014100002DL... | iOS 17+ körkortsmedvetet flödeA3 | Bara körkortsmedvetna apparU | NativtA8 |
| EAN-13 / UPC-A | 0012345678905 | Ingen avkodningAp | Google LensG | Varje butiks-POSA8 |
| Code 128 | ABC-123 | Ingen avkodningAp | Google LensG | NativtA8 |
Så läser du markeringarna
- ✓: läses av standardkameraappen, ingen extra app behövs
- ~: läses under ett villkor som anges i cellen (en specifik app, OS-version eller läge)
- ✗: avkodar den inte; du behöver en skanner-app eller hårdvara
Bevis
- A: our own device test; the number is the row in the attestation log
- Ap: Apple's support page describes the Camera app and Code Scanner as reading QR codes and lists no other symbology
- G: Google Lens decodes the ML Kit barcode formats: Codabar, Code 39, Code 93, Code 128, EAN-8, EAN-13, ITF, UPC-A, UPC-E, Aztec, Data Matrix, PDF417 and QR Code; Micro QR and rMQR are not on the list
- Z: Zebra lists Micro QR and rectangular Micro QR among the DS8100 series' 2D symbologies
- V: Apple's Vision framework decodes Micro QR for third-party apps since iOS 15; that is a developer API, not the Camera app
- Q: a standard QR symbol, so decoding is the attested QR result; the question is what the phone does with the payload
- U: not in our attestation log yet; from vendor documentation or field reports, treat as provisional
Vad "förväntat skanningresultat" betyder
- Avkodar, inbyggd telefonkameraläsare returnerar payload utan att en separat app behövs.
- Delvis, avkodning beror på en specifik app (autentiserare, plånbok, bank) eller en specifik OS-version.
- Ingen avkodning, inbyggd kamera returnerar ingenting. Kräver en specialistskanner eller läsare.
- De små bokstäverna efter varje resultat namnger underlaget: A plus ett nummer är en rad i attestloggen nedan; andra bokstäver är leverantörsdokumentation, listad under varje tabell. Ett U betyder att vi ännu inte kört den cellen genom våra egna enheter.
Metodologiska noter
- Varje fixture kör round-trip. Vår CI genererar varje kod i headless Chromium, avkodar den via webbläsarens
BarcodeDetector-API och verifierar delsträngsmatchningen. En grön CI innebär att korpuset är internt konsekvent. - Skannerresultaten i den här tabellen är från manuell testning på riktiga enheter. Inte syntetiserade. iPhone 15 Pro på iOS 18.3, Pixel 8 på Android 14, Zebra DS8100-imager på firmware CAAACS00-002-R06.
- Vi publicerar negativa resultat. Om iPhone Camera vägrar att avkoda en symbologi (Data Matrix, Aztec, PDF417) är det "Ingen avkodning" i tabellen, inte en omformulering av "inbyggd läsare".
- Korpuset är versionerat. När vi lägger till en typ eller åtgärdar ett kodarfel levereras motsvarande fixture-post i samma commit. Ändringsloggen registrerar varje fixture-ändring, och corpus.VERSION.txt bär hashen för den fixture-fil som den nuvarande ZIP-filen byggdes från.
Skannerflottans attestlogg
Varje manuell enhetskörning, daterad. Rader läggs till när vi skaffar ny hårdvara eller en användare rapporterar en avvikelse; ett resultat ändras aldrig tyst, det får en ny rad.
| # | Device | OS / app | Corpus slice | Result | Date | Notes |
|---|---|---|---|---|---|---|
| A1 | iPhone 15 Pro | iOS 18.3, native Camera | All QR fixtures | pass | 2026-04-10 | |
| A2 | iPhone 15 Pro | iOS 18.3, native Camera | Aztec, PDF417, Data Matrix | fail | 2026-04-10 | Ingen avkodar nativt (förväntat, se /standards/non-qr-2d/) |
| A3 | iPhone 15 Pro | iOS 18.3, native Camera | AAMVA PDF417 | partial | 2026-04-10 | iOS 17+ körkortsmedvetet flöde erbjuder Lägg till i Wallet; rå PDF417 returneras inte |
| A4 | iPhone 15 Pro | iOS 18.3, Wallet | eSIM LPA | pass | 2026-04-12 | Flödet för att lägga till eSIM utlöses korrekt |
| A5 | Pixel 8 | Android 14, native Camera | All QR fixtures | pass | 2026-04-10 | |
| A6 | Pixel 8 | Android 14, Google Lens | Data Matrix | pass | 2026-04-10 | |
| A7 | Pixel 8 | Android 14, Google Lens | Aztec, PDF417 | partial | 2026-04-10 | Vissa varianter avkodar; stödet är ojämnt |
| A8 | Zebra DS8100 | firmware CAAACS00-002-R06 | All 2D + 1D fixtures | pass | 2026-04-11 | Industriell imager, kanonisk referens |
| A9 | Google Authenticator | v7.0+ (iOS/Android) | TOTP, HOTP | pass | 2026-04-12 | Bara SHA-1, 6 siffror (ignorerar algoritm-/siffer-parametrar enligt Googles de facto-profil) |
| A10 | 1Password | v8 (iOS/Android/macOS) | TOTP, HOTP | pass | 2026-04-12 | Fullt RFC-stöd inkl. SHA-256, SHA-512, 8 siffror |
Vad som kommer
- Förrenderade artefakter. Den nuvarande ZIPen buntar fixtures + metodik + CSV. En framtida revision lägger till förrenderade SVG + PNG av varje fixture så att du kan droppa dem direkt in i en skannerflottharness. Väntar på ett headless-browsersteg vid byggtid.
- Skannerflottans attestering. Den daterade enhetsloggen publiceras på den här sidan och växer varje gång vi verifierar mot en ny enhet.
- Tredjepartsverifiering. Ett oberoende säkerhetslaboratorium kör korpuset genom en skannerflotta och publicerar en signerad attestering. Väntar, beställd; rapporten publiceras här vid ankomst.
Se även
- /test-vectors/, fullständig fixture-JSON och sökbar tabell.
- /compatibility/, live skannerkompatibilitetsmatris.
- /standards/, per-standard referenssidor.
- /print-size/, fysisk utskriftsvägledning bredvid korpuset.