Offentlig testkorpus
Skannerkompabilitetspåstandene våre er bare like gode som bevisene de er bygget på. Denne siden er korpuset, inngangene vi regresjonstester koderfamiliene våre mot, pluss telefonkameraatferden du kan kontrollere selv uten å ta oss på ordet.
Last ned corpus.zip Samlet fixtures-JSON + CSV + metodologi + README. ~4 KB.
Laster versjon…
Slik bruker du korpuset
Alle testvektorer ligger i /test-vectors/fixtures.json. Ett JSON-objekt per type med inndatafelt og forventet dekodede delstreng(er). Hentes live fra dette nettstedet, ingen utdaterte kopier.
Ta en fixture sin fields-map, legg verdiene inn i generatoren for den typen og klikk Generer. Den resulterende QR er bit-for-bit identisk med det CI-en vår kjører round-trip mot.
Rett et iPhone-kamera, Android-kamera, Google Lens, industriell skanner (Zebra, Honeywell, Datalogic) eller app-spesifikk leser (en bankapp, en autentiserer) mot den genererte QR. Bekreft at den dekodede teksten inneholder hver expect-delstreng for den fikstuuren.
Hvis en skanner i flåten din returnerer en dekoding som ikke samsvarer med fikstuuren, opprett et problem. Vi reproduserer, legger til skanneren din i den offentlige kompatibilitetsmatrisen og (hvis det er en koderfeil) leverer en fiks.
Forventede skanningsresultater
Gjengitt fra samme datasett som kompatibilitetsmatrisen og hver typesides «Skannes på»-linje, så de tre kan ikke motsi hverandre. Den fullstendige fixture-filen på /test-vectors/ har 33 oppføringer, én per koderfamilie vi regresjonstester; det er ikke én rad per produkttype, og det påstår vi ikke at det er.
| Type | Fixture-inndata | iPhone Camera | Android Camera | Pro-skanner |
|---|---|---|---|---|
| URL | https://example.com/test | Åpner lenkeA1 | Åpner lenkeA5 | DekoderA8 |
| WiFi | WIFI:S:MyNet;T:WPA;P:...;; | Kobler til nettverkA1 | Kobler til nettverkA5 | Dekoder nyttelastA8 |
| WiFi Enterprise (EAP) | WPA2-EAP PEAP identity=alice@corp | iOS 17+, rapportertU | Dekoder; tilkobling avhenger av OEM-enU | Dekoder nyttelastQ |
| vCard | FN=Alice ORG=Acme ... | Legg til i KontakterA1 | Legg til i KontakterA5 | Dekoder nyttelastA8 |
| TOTP | otpauth://totp/...?secret=JBSW... | Autentiseringsapp leser denA9, A10 | Autentiseringsapp leser denA9, A10 | Dekoder URIA8 |
| eSIM | LPA:1$rsp.example.com$K2-LM... | iOS 17.4+ klargjørA4 | Android 13+ klargjørU | Dekoder URIQ |
| Bitcoin (BIP-21) | bitcoin:1A1zP1eP... | Lommebokapp åpnesQ | Lommebokapp åpnesQ | Dekoder URIQ |
| SEPA (EPC) | BCD header + name + IBAN + amount | Bare rå strengQ | Bare rå strengQ | Dekoder rå strengQ |
| Swiss QR-bill | SPC header + IBAN + address + amount | Bare rå strengQ | Bare rå strengQ | Dekoder rå strengQ |
| Micro QR | Compact payload | Ingen dekodingV, U | Ingen dekodingG | Industrielle lesereZ |
| rMQR | Rectangular payload | Ingen dekodingU | Ingen dekodingG | Nyere Zebra-, Scandit- og Cognex-firmwareZ |
| GS1 Digital Link | https://id.gs1.org/01/09506000134352 | Åpner URLQ | Åpner URLQ | POS-firmware tolker AI-eneQ |
| Aztec | Arbitrary payload | Ingen dekodingA2 | Google Lens, noen varianterA7 | NativtA8 |
| Data Matrix | Arbitrary payload | Ingen dekodingA2 | Google LensA6 | NativtA8 |
| PDF417 | AAMVA or arbitrary | Ingen dekodingA2 | Google Lens, ujevntA7 | NativtA8 |
| AAMVA driver license | @\n\x1e\rANSI 636014100002DL... | iOS 17+ førerkortbevisst flytA3 | Bare førerkortbevisste apperU | NativtA8 |
| EAN-13 / UPC-A | 0012345678905 | Ingen dekodingAp | Google LensG | Enhver butikk-POSA8 |
| Code 128 | ABC-123 | Ingen dekodingAp | Google LensG | NativtA8 |
Slik leser du merkene
- ✓: leser den fra standard kamera-appen, ingen ekstra app nødvendig
- ~: leser den under en betingelse angitt i cellen (en bestemt app, OS-versjon eller modus)
- ✗: dekoder den ikke; du trenger en skanner-app eller maskinvare
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
Hva "forventet skanningsresultat" betyr
- Dekoder, innebygd telefonkameraleser returnerer nyttelasten uten å trenge en separat app.
- Delvis, dekoding avhenger av en spesifikk app (autentiserer, lommebok, bank) eller en spesifikk OS-versjon.
- Ingen dekoding, innebygd kamera returnerer ingenting. Krever en spesialistskanner eller -leser.
- De små bokstavene etter hvert resultat navngir beviset: en A pluss et tall er en rad i attestasjonsloggen nedenfor; andre bokstaver er leverandørdokumentasjon, oppført under hver tabell. En U betyr at vi ikke har kjørt den cellen gjennom våre egne enheter ennå.
Metodologiske noter
- Enhver fikstur kjører round-trip. CI-en vår genererer hver kode i headless Chromium, dekoder den tilbake via nettleserens
BarcodeDetector-API og verifiserer delstrengsamsvar. En grønn CI betyr at korpuset er internt konsistent. - Skannerresultatene i denne tabellen er fra manuell testing på ekte enheter. Ikke syntetisert. iPhone 15 Pro på iOS 18.3, Pixel 8 på Android 14, Zebra DS8100-imager på firmware CAAACS00-002-R06.
- Vi publiserer negative resultater. Hvis iPhone Camera nekter å dekode en symbologi (Data Matrix, Aztec, PDF417) er det "Ingen dekoding" i tabellen, ikke en omformulering av "innebygd leser".
- Korpuset er versjonert. Når vi legger til en type eller retter en koderfeil leveres den tilsvarende fixture-posten i det samme commit. Endringsloggen registrerer hver fixture-endring, og corpus.VERSION.txt bærer hashen til fixture-filen den nåværende ZIP-en ble bygget fra.
Skannerflåte-attestasjonslogg
Hver manuelle enhetskjøring, datert. Rader legges til når vi anskaffer maskinvare eller en bruker rapporterer et avvik; et resultat endres aldri stille, 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 dekoder nativt (forventet, se /standards/non-qr-2d/) |
| A3 | iPhone 15 Pro | iOS 18.3, native Camera | AAMVA PDF417 | partial | 2026-04-10 | iOS 17+ førerkortbevisst flyt tilbyr Legg til i Wallet; rå PDF417 returneres ikke |
| A4 | iPhone 15 Pro | iOS 18.3, Wallet | eSIM LPA | pass | 2026-04-12 | Legg til eSIM-flyten 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 | Noen varianter dekoder; støtten er ujevn |
| A8 | Zebra DS8100 | firmware CAAACS00-002-R06 | All 2D + 1D fixtures | pass | 2026-04-11 | Industriell imager, kanonisk referanse |
| A9 | Google Authenticator | v7.0+ (iOS/Android) | TOTP, HOTP | pass | 2026-04-12 | Bare SHA-1, 6 sifre (ignorerer algorithm/digits-parametre iht. Googles de facto-profil) |
| A10 | 1Password | v8 (iOS/Android/macOS) | TOTP, HOTP | pass | 2026-04-12 | Full RFC-støtte inkl. SHA-256, SHA-512, 8 sifre |
Hva som kommer
- Forhåndsrenderte artefakter. Den nåværende ZIPen samler fixtures + metodologi + CSV. En fremtidig revisjon legger til forhåndsrenderte SVG + PNG av hver fikstur slik at du kan droppe dem direkte inn i en skannervlåte-harness. Venter på et headless-browsersteg ved byggetid.
- Skannerflåte-attestasjon. Den daterte enhetsloggen er publisert på denne siden og vokser hver gang vi verifiserer mot en ny enhet.
- Tredjepartsverifikasjon. Et uavhengig sikkerhetslaboratorium kjører korpuset gjennom en skannervlåte og publiserer en signert attestasjon. Venter, bestilt; rapport publiseres her ved ankomst.
Se også
- /test-vectors/, fullstendig fixture-JSON og søkbar tabell.
- /compatibility/, live skannerkompabilitetmatrise.
- /standards/, per-standard referansesider.
- /print-size/, fysisk utskriftsveiledning ved siden av korpuset.