Offentligt testkorpus
Vores scannerkompatibilitetspåstande er kun så gode som de beviser, de er bygget på. Denne side er korpuset, de input, vi regressionstester vores encoder-familier mod, plus telefonkamerabehavioren du kan kontrollere selv uden at tage vores ord for det.
Download corpus.zip Samlet fixtures-JSON + CSV + metodologi + README. ~4 KB.
Indlæser version…
Sådan bruges korpuset
Alle testvektorer befinder sig i /test-vectors/fixtures.json. Et JSON-objekt pr. type med inputfelter og forventede afkodede delstreng(e). Hentes live fra dette websted, ingen forældede kopier.
Tag en fixtures fields-map, sæt værdierne i generatoren for den type, og klik på Generer. Den resulterende QR er bit-for-bit identisk med det, vores CI kører round-trip mod.
Ret et iPhone-kamera, Android-kamera, Google Lens, industriel scanner (Zebra, Honeywell, Datalogic) eller app-specifik læser (en bankapp, en autentifikator) mod den genererede QR. Bekræft, at den afkodede tekst indeholder enhver expect-delstreng for den fixture.
Hvis en scanner i din flåde returnerer en afkodning, der ikke matcher fixturens, indgiv et issue. Vi reproducerer, tilføjer din scanner til den offentlige kompatibilitetsmatrix og (hvis det er en encoderfejl) leverer en rettelse.
Forventede scanningresultater
Gengivet fra det samme datasæt som kompatibilitetsmatricen og hver typesides "Scanner på"-linje, så de tre ikke kan modsige hinanden. Den fulde fixture-fil på /test-vectors/ har 33 poster, én per encoder-familie vi regressionstester; det er ikke én række per produkttype, og det påstår vi ikke, at den er.
| Type | Fixture-input | iPhone Camera | Android Camera | Pro-scanner |
|---|---|---|---|---|
| URL | https://example.com/test | Åbner linkA1 | Åbner linkA5 | AfkoderA8 |
| WiFi | WIFI:S:MyNet;T:WPA;P:...;; | Tilslutter til netværkA1 | Tilslutter til netværkA5 | Afkoder payloadA8 |
| WiFi Enterprise (EAP) | WPA2-EAP PEAP identity=alice@corp | iOS 17+, rapporteretU | Afkoder; tilslutning afhænger af OEM'enU | Afkoder payloadQ |
| vCard | FN=Alice ORG=Acme ... | Tilføj til KontakterA1 | Tilføj til KontakterA5 | Afkoder payloadA8 |
| TOTP | otpauth://totp/...?secret=JBSW... | Autentifikationsapp læser denA9, A10 | Autentifikationsapp læser denA9, A10 | Afkoder URIA8 |
| eSIM | LPA:1$rsp.example.com$K2-LM... | iOS 17.4+ klargørA4 | Android 13+ klargørU | Afkoder URIQ |
| Bitcoin (BIP-21) | bitcoin:1A1zP1eP... | Wallet-app åbnesQ | Wallet-app åbnesQ | Afkoder URIQ |
| SEPA (EPC) | BCD header + name + IBAN + amount | Kun rå strengQ | Kun rå strengQ | Afkoder rå strengQ |
| Swiss QR-bill | SPC header + IBAN + address + amount | Kun rå strengQ | Kun rå strengQ | Afkoder rå strengQ |
| Micro QR | Compact payload | Ingen afkodningV, U | Ingen afkodningG | Industrielle læsereZ |
| rMQR | Rectangular payload | Ingen afkodningU | Ingen afkodningG | Nyere Zebra-, Scandit- og Cognex-firmwareZ |
| GS1 Digital Link | https://id.gs1.org/01/09506000134352 | Åbner URLQ | Åbner URLQ | POS-firmware parser AI'erneQ |
| Aztec | Arbitrary payload | Ingen afkodningA2 | Google Lens, nogle varianterA7 | NativeA8 |
| Data Matrix | Arbitrary payload | Ingen afkodningA2 | Google LensA6 | NativeA8 |
| PDF417 | AAMVA or arbitrary | Ingen afkodningA2 | Google Lens, ujævntA7 | NativeA8 |
| AAMVA driver license | @\n\x1e\rANSI 636014100002DL... | iOS 17+ kørkortsbevidst flowA3 | Kun kørkortsbevidste appsU | NativeA8 |
| EAN-13 / UPC-A | 0012345678905 | Ingen afkodningAp | Google LensG | Enhver butiks-POSA8 |
| Code 128 | ABC-123 | Ingen afkodningAp | Google LensG | NativeA8 |
Sådan læses markeringerne
- ✓: læser den fra standard-kameraappen, ingen ekstra app nødvendig
- ~: læser den under en betingelse angivet i cellen (en specifik app, OS-version eller tilstand)
- ✗: afkoder den ikke; du skal bruge en scanner-app eller hardware
Dokumentation
- 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
Hvad "forventet scanningresultat" betyder
- Afkoder, native telefonkameralæser returnerer payload uden at en separat app er nødvendig.
- Delvis, afkodning afhænger af en specifik app (autentifikator, wallet, bank) eller en specifik OS-version.
- Ingen afkodning, native kamera returnerer ingenting. Kræver en specialistscanner eller -læser.
- De små bogstaver efter hvert resultat navngiver dokumentationen: A plus et tal er en række i attesteringsloggen nedenfor; andre bogstaver er leverandørdokumentation, oplistet under hver tabel. Et U betyder, at vi endnu ikke har kørt den celle igennem vores egne enheder.
Metodologiske noter
- Enhver fixture kører round-trip. Vores CI genererer hver kode i headless Chromium, afkoder den tilbage via browserens
BarcodeDetector-API og verificerer delstrengsmatchningen. En grøn CI betyder, at korpuset er internt konsekvent. - Scannerresultaterne i denne tabel er fra manuel testning på rigtige enheder. Ikke syntetiseret. iPhone 15 Pro på iOS 18.3, Pixel 8 på Android 14, Zebra DS8100-imager på firmware CAAACS00-002-R06.
- Vi publicerer negative resultater. Hvis iPhone Camera nægter at afkode en symbologi (Data Matrix, Aztec, PDF417), er det "Ingen afkodning" i tabellen, ikke en omformulering af "native læser".
- Korpuset er versioneret. Når vi tilføjer en type eller retter en encoderfejl, leveres den tilsvarende fixture-post i det samme commit. Ændringsloggen registrerer hver fixture-ændring, og corpus.VERSION.txt bærer hashet for den fixture-fil, den aktuelle ZIP blev bygget fra.
Scanner-flåde-attesteringslog
Hver manuel enhedskørsel, dateret. Rækker tilføjes, når vi anskaffer hardware, eller en bruger rapporterer en uoverensstemmelse; et resultat ændres aldrig i stilhed, det får en ny række.
| # | 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 afkoder nativt (forventet, se /standards/non-qr-2d/) |
| A3 | iPhone 15 Pro | iOS 18.3, native Camera | AAMVA PDF417 | partial | 2026-04-10 | iOS 17+ kørkortsbevidst flow tilbyder Tilføj til Wallet; rå PDF417 returneres ikke |
| A4 | iPhone 15 Pro | iOS 18.3, Wallet | eSIM LPA | pass | 2026-04-12 | Tilføj-eSIM-flowet udlø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 | Nogle varianter afkoder; understøttelsen er ujævn |
| A8 | Zebra DS8100 | firmware CAAACS00-002-R06 | All 2D + 1D fixtures | pass | 2026-04-11 | Industriel imager, kanonisk reference |
| A9 | Google Authenticator | v7.0+ (iOS/Android) | TOTP, HOTP | pass | 2026-04-12 | Kun SHA-1, 6 cifre (ignorerer algorithm/digits-parametre iht. Googles de facto-profil) |
| A10 | 1Password | v8 (iOS/Android/macOS) | TOTP, HOTP | pass | 2026-04-12 | Fuld RFC-understøttelse inkl. SHA-256, SHA-512, 8 cifre |
Hvad der kommer
- Forhåndsrenderede artefakter. Den nuværende ZIP bundler fixtures + metodologi + CSV. En fremtidig revision tilføjer forhåndsrenderede SVG + PNG af hver fixture, så du kan droppe dem direkte ind i en skannervlåde-harness. Afventer et headless-browsertrin ved byggetid.
- Skannervlåde-attestation. Den daterede enhedslog er publiceret på denne side og vokser hver gang vi verificerer mod en ny enhed.
- Tredjepartsverificering. Et uafhængigt sikkerhedslaboratorium kører korpuset gennem en skannervlåde og publicerer en signeret attestation. Afventer, bestilt; rapport vil blive publiceret her ved ankomst.
Se også
- /test-vectors/, fuld fixture-JSON og søgbar tabel.
- /compatibility/, live scannerkompatibilitetsmatrix.
- /standards/, per-standard referencesider.
- /print-size/, fysisk udskriftvejledning ved siden af korpuset.