Veřejný testovací korpus
Naše tvrzení o kompatibilitě čteček jsou jen tak dobrá jako důkazy, na nichž stojí. Tato stránka je korpus, vstupy, které regresně testujeme proti rodinám našich kodérů, plus chování fotoaparátu telefonu, které si můžete sami ověřit, aniž byste nám museli věřit na slovo.
Stáhnout corpus.zip Sada fixtures JSON + CSV + metodika + README. ~4 KB.
Načítání verze…
Jak používat korpus
Každý testovací vektor se nachází v /test-vectors/fixtures.json. Jeden JSON objekt na typ se vstupními poli a očekávaným dekódovaným podřetězcem. Načítáno živě z tohoto webu, žádné zastaralé kopie.
Vezměte mapu fields libovolné fixture, vložte hodnoty do generátoru pro daný typ a klikněte na Generovat. Výsledný QR kód je bit po bitu identický s tím, co naše CI testuje v cyklu.
Namiřte iPhone Camera, Android Camera, Google Lens, průmyslovou čtečkou (Zebra, Honeywell, Datalogic) nebo aplikačně specifickou čtečkou (bankovní aplikace, autentikátor) na vygenerovaný QR kód. Potvrďte, že dekódovaný text obsahuje každý podřetězec expect pro danou fixture.
Pokud čtečka ve vaší flotile vrátí dekódování, které neodpovídá fixture, zadejte problém. Reprodukujeme ho, přidáme vaši čtečku do veřejné matice kompatibility a (pokud jde o chybu kodéru) zašleme opravu.
Očekávané výsledky skenování
Vykresleno ze stejné datové sady jako matice kompatibility a řádek „Skenuje na" na každé stránce typu, takže si tyto tři nemohou odporovat. Úplný soubor fixture na /test-vectors/ má 33 položek, jednu na každou rodinu kodérů, kterou regresně testujeme; není to jeden řádek na typ produktu a netvrdíme, že je.
| Typ | Vstup fixture | iPhone Camera | Android Camera | Profesionální čtečka |
|---|---|---|---|---|
| URL | https://example.com/test | Otevře odkazA1 | Otevře odkazA5 | DekódujeA8 |
| WiFi | WIFI:S:MyNet;T:WPA;P:...;; | Připojí se k sítiA1 | Připojí se k sítiA5 | Dekóduje payloadA8 |
| WiFi Enterprise (EAP) | WPA2-EAP PEAP identity=alice@corp | iOS 17+, hlášenoU | Dekóduje; připojení závisí na výrobci zařízeníU | Dekóduje payloadQ |
| vCard | FN=Alice ORG=Acme ... | Přidat do kontaktůA1 | Přidat do kontaktůA5 | Dekóduje payloadA8 |
| TOTP | otpauth://totp/...?secret=JBSW... | Přečte to aplikace autentikátoruA9, A10 | Přečte to aplikace autentikátoruA9, A10 | Dekóduje URIA8 |
| eSIM | LPA:1$rsp.example.com$K2-LM... | iOS 17.4+ provisionujeA4 | Android 13+ provisionujeU | Dekóduje URIQ |
| Bitcoin (BIP-21) | bitcoin:1A1zP1eP... | Otevře se peněženková aplikaceQ | Otevře se peněženková aplikaceQ | Dekóduje URIQ |
| SEPA (EPC) | BCD header + name + IBAN + amount | Jen surový řetězecQ | Jen surový řetězecQ | Dekóduje surový řetězecQ |
| Swiss QR-bill | SPC header + IBAN + address + amount | Jen surový řetězecQ | Jen surový řetězecQ | Dekóduje surový řetězecQ |
| Micro QR | Compact payload | Bez dekódováníV, U | Bez dekódováníG | Průmyslové čtečkyZ |
| rMQR | Rectangular payload | Bez dekódováníU | Bez dekódováníG | Novější firmware Zebra, Scandit a CognexZ |
| GS1 Digital Link | https://id.gs1.org/01/09506000134352 | Otevře URLQ | Otevře URLQ | Firmware POS zpracuje AIQ |
| Aztec | Arbitrary payload | Bez dekódováníA2 | Google Lens, u některých variantA7 | NativníA8 |
| Data Matrix | Arbitrary payload | Bez dekódováníA2 | Google LensA6 | NativníA8 |
| PDF417 | AAMVA or arbitrary | Bez dekódováníA2 | Google Lens, nespolehlivěA7 | NativníA8 |
| AAMVA driver license | @\n\x1e\rANSI 636014100002DL... | iOS 17+ postup rozpoznávající řidičský průkazA3 | Jen aplikace rozpoznávající řidičský průkazU | NativníA8 |
| EAN-13 / UPC-A | 0012345678905 | Bez dekódováníAp | Google LensG | Každý maloobchodní POSA8 |
| Code 128 | ABC-123 | Bez dekódováníAp | Google LensG | NativníA8 |
Jak číst značky
- ✓: přečte ho standardní aplikace fotoaparátu, žádná další aplikace není potřeba
- ~: přečte ho za podmínky uvedené v buňce (konkrétní aplikace, verze OS nebo režim)
- ✗: nedekóduje ho; potřebujete aplikaci pro skenování nebo hardware
Důkaz
- 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
Co znamená „očekávaný výsledek skenování"
- Dekóduje, nativní čtečka fotoaparátu telefonu vrátí payload bez potřeby samostatné aplikace.
- Částečně, dekódování závisí na konkrétní aplikaci (autentikátor, peněženka, bankovnictví) nebo konkrétní verzi OS.
- Bez dekódování, nativní fotoaparát nic nevrátí. Vyžaduje specializovanou čtečku.
- Malá písmena za každým výsledkem jmenují důkaz: A plus číslo je řádek protokolu osvědčení níže; ostatní písmena jsou dokumentace výrobce, uvedená pod každou tabulkou. U znamená, že jsme tuto buňku zatím neprošli na vlastních zařízeních.
Poznámky k metodice
- Každá fixture projde celým cyklem. Naše CI generuje každý kód v bezhlavém Chromiu, dekóduje ho zpět přes
BarcodeDetectorAPI prohlížeče a ověřuje shodu podřetězce. Zelené CI znamená, že korpus je vnitřně konzistentní. - Výsledky čteček v této tabulce pocházejí z ručního testování na reálných zařízeních. Nejsou syntetizovány. iPhone 15 Pro na iOS 18.3, Pixel 8 na Android 14, Zebra DS8100 imager na firmware CAAACS00-002-R06.
- Zveřejňujeme i negativní výsledky. Pokud iPhone Camera odmítne dekódovat symbologii (Data Matrix, Aztec, PDF417), je to v tabulce „Bez dekódování", ne přejmenované „nativní čtečka".
- Korpus má verze. Když přidáme typ nebo opravíme chybu kodéru, odpovídající položka fixture se doručí ve stejném commitu. Changelog zaznamenává každou změnu fixture a corpus.VERSION.txt nese hash souboru fixture, ze kterého byl sestaven aktuální ZIP.
Protokol osvědčení flotily čteček
Každý ruční test zařízení, s datem. Řádky přibývají, když získáme nový hardware nebo uživatel nahlásí nesrovnalost; výsledek se nikdy tiše nezmění, dostane nový řádek.
| # | 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 | Žádná nedekóduje nativně (očekávané, viz /standards/non-qr-2d/) |
| A3 | iPhone 15 Pro | iOS 18.3, native Camera | AAMVA PDF417 | partial | 2026-04-10 | Postup iOS 17+ rozpoznávající řidičský průkaz nabídne přidání do Wallet; surový PDF417 se nevrací |
| A4 | iPhone 15 Pro | iOS 18.3, Wallet | eSIM LPA | pass | 2026-04-12 | Postup přidání eSIM se spustí správně |
| 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 | Některé varianty dekódují; podpora je nespolehlivá |
| A8 | Zebra DS8100 | firmware CAAACS00-002-R06 | All 2D + 1D fixtures | pass | 2026-04-11 | Průmyslový imager, kanonická reference |
| A9 | Google Authenticator | v7.0+ (iOS/Android) | TOTP, HOTP | pass | 2026-04-12 | Jen SHA-1, 6místné (ignoruje parametry algoritmu/počtu číslic dle de facto profilu Google) |
| A10 | 1Password | v8 (iOS/Android/macOS) | TOTP, HOTP | pass | 2026-04-12 | Plná podpora RFC včetně SHA-256, SHA-512, 8místné |
Co přichází
- Předrenderované artefakty. Současný ZIP obsahuje fixtures + metodiku + CSV. Budoucí verze přidá předrenderované SVG + PNG každé fixture, abyste je mohli přímo vložit do testovacího systému flotily čteček. Čeká se na krok s bezhlavým prohlížečem v době sestavení.
- Atestace flotily čteček. Datovaný protokol ze zařízení je zveřejněn na této stránce a roste pokaždé, když ověříme proti novému zařízení.
- Ověření třetí stranou. Nezávislá bezpečnostní laboratoř spustí korpus přes flotilu čteček a zveřejní podepsanou atestaci. Čeká se, objednáno; zpráva bude zveřejněna zde po doručení.
Viz také
- /test-vectors/, celý fixture JSON a prohledávatelná tabulka.
- /compatibility/, živá matice kompatibility čteček.
- /standards/, referenční stránky pro jednotlivé standardy.
- /print-size/, pokyny pro fyzický tisk, které doplňují korpus.