Julkinen testikorpus
Skanneriyhteensopivuusväitteemme ovat vain yhtä hyviä kuin niiden taustalla oleva näyttö. Tämä sivu on korpus, syötteet, joita regressiontestaamme kooderiperheitämme vastaan, sekä puhelinkamerakäyttäytyminen, jonka voit tarkistaa itse ottamatta meitä sanaansa.
Lataa corpus.zip Pakatut fixtures-JSON + CSV + metodologia + README. ~4 KB.
Ladataan versiota…
Korpuksen käyttö
Jokainen testvektori sijaitsee tiedostossa /test-vectors/fixtures.json. Yksi JSON-objekti per tyyppi syötekenttien ja odotettujen purettujen osajono(je)n kanssa. Haetaan suoraan tältä sivustolta, ei vanhentuneita kopioita.
Ota minkä tahansa fikstuuksen fields-kartta, syötä arvot generaattoriin sille tyypille ja paina Luo. Tuloksena oleva QR on bitti-bitti-identtinen sen kanssa, mitä CI:mme ajaa round-trip:nä vastaan.
Osoita iPhone-kamera, Android-kamera, Google Lens, teollinen skanneri (Zebra, Honeywell, Datalogic) tai sovelluskohtainen lukija (pankkisovellus, todennussovellus) luotuun QR:ään. Vahvista, että purettu teksti sisältää jokaisen expect-osajonon kyseiselle fikstuukselle.
Jos laivastosi skanneri palauttaa purkauksen, joka ei vastaa fikstuuksia, luo ongelmaraportti. Reprodusoimme, lisäämme skannerisi julkiseen yhteensopivuusmatriisiin ja (jos kyseessä on kooderivirhe) toimitamme korjauksen.
Odotetut skannaustulokset
Renderöity samasta tietojoukosta kuin yhteensopivuusmatriisi ja jokaisen tyyppisivun "Skannautuu"-rivi, joten nämä kolme eivät voi olla keskenään ristiriidassa. Täydellisessä fixture-tiedostossa osoitteessa /test-vectors/ on 33 merkintää, yksi jokaista regressiotestaamaamme kooderiperhettä kohden; se ei ole yksi rivi tuotetyyppiä kohden, emmekä väitä niin.
| Tyyppi | Fikstuuksen syöte | iPhone Camera | Android Camera | Pro-skanneri |
|---|---|---|---|---|
| URL | https://example.com/test | Avaa linkinA1 | Avaa linkinA5 | PurkaaA8 |
| WiFi | WIFI:S:MyNet;T:WPA;P:...;; | Yhdistää verkkoonA1 | Yhdistää verkkoonA5 | Purkaa hyötykuormanA8 |
| WiFi Enterprise (EAP) | WPA2-EAP PEAP identity=alice@corp | iOS 17+, ilmoitettuU | Purkaa; liittyminen riippuu valmistajastaU | Purkaa hyötykuormanQ |
| vCard | FN=Alice ORG=Acme ... | Lisää yhteystietoihinA1 | Lisää yhteystietoihinA5 | Purkaa hyötykuormanA8 |
| TOTP | otpauth://totp/...?secret=JBSW... | Todennussovellus lukee senA9, A10 | Todennussovellus lukee senA9, A10 | Purkaa URI:nA8 |
| eSIM | LPA:1$rsp.example.com$K2-LM... | iOS 17.4+ käyttöönottaaA4 | Android 13+ käyttöönottaaU | Purkaa URI:nQ |
| Bitcoin (BIP-21) | bitcoin:1A1zP1eP... | Lompakkosovellus avautuuQ | Lompakkosovellus avautuuQ | Purkaa URI:nQ |
| SEPA (EPC) | BCD header + name + IBAN + amount | Vain raaka merkkijonoQ | Vain raaka merkkijonoQ | Purkaa raakana merkkijononaQ |
| Swiss QR-bill | SPC header + IBAN + address + amount | Vain raaka merkkijonoQ | Vain raaka merkkijonoQ | Purkaa raakana merkkijononaQ |
| Micro QR | Compact payload | Ei purkamistaV, U | Ei purkamistaG | Teolliset lukijatZ |
| rMQR | Rectangular payload | Ei purkamistaU | Ei purkamistaG | Uudempi Zebra-, Scandit- ja Cognex-laiteohjelmistoZ |
| GS1 Digital Link | https://id.gs1.org/01/09506000134352 | Avaa URL:nQ | Avaa URL:nQ | POS-laiteohjelmisto jäsentää AI:tQ |
| Aztec | Arbitrary payload | Ei purkamistaA2 | Google Lens, jotkin variantitA7 | NatiivistiA8 |
| Data Matrix | Arbitrary payload | Ei purkamistaA2 | Google LensA6 | NatiivistiA8 |
| PDF417 | AAMVA or arbitrary | Ei purkamistaA2 | Google Lens, epätasainenA7 | NatiivistiA8 |
| AAMVA driver license | @\n\x1e\rANSI 636014100002DL... | iOS 17+ ajokorttitietoinen kulkuA3 | Vain ajokorttitietoiset sovelluksetU | NatiivistiA8 |
| EAN-13 / UPC-A | 0012345678905 | Ei purkamistaAp | Google LensG | Jokainen vähittäiskaupan POSA8 |
| Code 128 | ABC-123 | Ei purkamistaAp | Google LensG | NatiivistiA8 |
Miten merkit luetaan
- ✓: lukee sen tehdasasetusten kamerasovelluksesta, ei erillistä sovellusta tarvita
- ~: lukee sen tietyllä solussa mainitulla ehdolla (tietty sovellus, käyttöjärjestelmäversio tai tila)
- ✗: ei pura sitä; tarvitset skannerisovelluksen tai laitteiston
Näyttö
- 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
Mitä "odotettu skannaustulosc" tarkoittaa
- Purkaa, natiivi puhelinkameralukija palauttaa hyötykuorman ilman erillistä sovellusta.
- Osittain, purkaminen riippuu tietystä sovelluksesta (todennus, lompakko, pankki) tai tietystä käyttöjärjestelmäversiosta.
- Ei purkamista, natiivi kamera ei palauta mitään. Vaatii erikoisskannerin tai -lukijan.
- Pienet kirjaimet jokaisen tuloksen jäljessä nimeävät näytön: A plus numero on rivi alla olevasta todistuslokista; muut kirjaimet ovat valmistajan dokumentaatiota, lueteltuna kunkin taulukon alla. U tarkoittaa, ettemme ole vielä testanneet kyseistä solua omilla laitteillamme.
Metodologisia huomioita
- Jokainen fikstuuksi suorittaa round-trip:n. CI:mme luo jokaisen koodin headless Chromiumissa, purkaa sen selaimen
BarcodeDetector-API:n kautta ja vahvistaa osajonon vastaavuuden. Vihreä CI tarkoittaa, että korpus on sisäisesti johdonmukainen. - Tämän taulukon skanneritulokset ovat manuaalisesta testauksesta oikeilla laitteilla. Ei syntetisoitu. iPhone 15 Pro iOS 18.3:lla, Pixel 8 Android 14:lla, Zebra DS8100 -imager firmware CAAACS00-002-R06:lla.
- Julkaisemme negatiiviset tulokset. Jos iPhone Camera kieltäytyy purkamasta symbologiaa (Data Matrix, Aztec, PDF417) taulukossa lukee "Ei purkamista", ei uudelleenmuotoilu "natiivi lukija":ksi.
- Korpus on versioitu. Kun lisäämme tyypin tai korjaamme kooderivirheen, vastaava fikstuuksikirjaus toimitetaan samassa commitissa. Muutosloki tallentaa jokaisen fikstuuksimuutoksen, ja corpus.VERSION.txt kantaa sen fixture-tiedoston tiivisteen, josta nykyinen ZIP on rakennettu.
Skannerilaivaston todistusloki
Jokainen manuaalinen laiteajo, päivättynä. Rivejä lisätään, kun hankimme laitteiston tai käyttäjä ilmoittaa poikkeamasta; tulos ei koskaan muutu hiljaisesti, se saa uuden rivin.
| # | 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 | Kumpikaan ei pura natiivisti (odotettua, katso /standards/non-qr-2d/) |
| A3 | iPhone 15 Pro | iOS 18.3, native Camera | AAMVA PDF417 | partial | 2026-04-10 | iOS 17+ ajokorttitietoinen kulku tarjoaa Lisää Walletiin; raakaa PDF417:ää ei palauteta |
| A4 | iPhone 15 Pro | iOS 18.3, Wallet | eSIM LPA | pass | 2026-04-12 | Lisää eSIM -kulku käynnistyy oikein |
| 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 | Jotkin variantit purkavat; tuki on epätasaista |
| A8 | Zebra DS8100 | firmware CAAACS00-002-R06 | All 2D + 1D fixtures | pass | 2026-04-11 | Teollinen kuvantaja, kanoninen referenssi |
| A9 | Google Authenticator | v7.0+ (iOS/Android) | TOTP, HOTP | pass | 2026-04-12 | Vain SHA-1, 6-numeroinen (ohittaa algorithm/digits-parametrit Googlen de facto -profiilin mukaisesti) |
| A10 | 1Password | v8 (iOS/Android/macOS) | TOTP, HOTP | pass | 2026-04-12 | Täysi RFC-tuki mukaan lukien SHA-256, SHA-512, 8-numeroinen |
Mitä on tulossa
- Esirenderoituja artefakteja. Nykyinen ZIP pakkaa fixtures + metodologia + CSV. Tuleva revisio lisää esirenderoituja SVG + PNG jokaista fikstuuksia varten, jotta voit pudottaa ne suoraan skannerilaivasto-harnessiin. Odottaa headless-selaimen vaihetta rakennusajalla.
- Skannerilaivasto-attestointi. Päivätty laiteloki on julkaistu tällä sivulla ja kasvaa joka kerta kun vahvistamme uuden laitteen osalta.
- Kolmannen osapuolen varmennus. Riippumaton tietoturvalaboratorio ajaa korpuksen skannerilaivastossa ja julkaisee allekirjoitetun attestoinnin. Odottaa, tilattu; raportti julkaistaan tässä sen saapuessa.
Katso myös
- /test-vectors/, täydellinen fixture-JSON ja hakukelpoinen taulukko.
- /compatibility/, elävä skanneriyhteensopivuusmatriisi.
- /standards/, per-standardi-referenssisivut.
- /print-size/, fyysinen tulostusohjaus korpuksen rinnalla.