Öffentliches Testkorpus

Unsere Scanner-Kompatibilitätsbehauptungen sind nur so gut wie die Beweise, auf denen sie basieren. Diese Seite ist das Corpus, die Eingaben, gegen die wir unsere Encoder-Familien in der Regression testen, plus das Handykamera-Verhalten, das Sie selbst prüfen können, ohne uns auf unser Wort zu vertrauen.

Warum das existiert: Die meisten QR-Tools veröffentlichen eine Kompatibilitätsmatrix. Unsere veröffentlicht das Corpus hinter der Matrix. Wenn Sie für eine Scanner-Flotte verantwortlich sind, Einzelhandel, Lager, Pharma, Fluggesellschaft, DMV, können Sie dieses Corpus durch Ihre eigenen Lesegeräte laufen lassen und jede Behauptung, die wir machen, verifizieren.

corpus.zip herunterladen Fixtures JSON + CSV + Methodik + README. ~4 KB.

Version wird geladen…

So verwenden Sie das Corpus

Laden Sie die Fixtures herunter.

Jeder Testvektor ist in /test-vectors/fixtures.json. Ein JSON-Objekt pro Typ mit den Eingabefeldern und den erwarteten dekodierten Teilzeichenfolgen. Live von dieser Seite abgerufen, keine veralteten Kopien.

Regenerieren Sie die QRs.

Nehmen Sie die fields-Map eines beliebigen Fixtures, geben Sie die Werte in den Generator für diesen Typ ein und klicken Sie auf Generieren. Der resultierende QR ist bit-für-bit identisch mit dem, was unser CI als Round-Trip verarbeitet.

Scannen Sie mit Ihrer eigenen Flotte.

Richten Sie eine iPhone-Kamera, Android-Kamera, Google Lens, einen Industriescanner (Zebra, Honeywell, Datalogic) oder einen App-spezifischen Leser (Banking-App, Authenticator) auf den generierten QR. Bestätigen Sie, dass der dekodierte Text jede expect-Teilzeichenfolge für dieses Fixture enthält.

Melden Sie Abweichungen.

Wenn ein Scanner in Ihrer Flotte eine Dekodierung zurückgibt, die nicht mit dem Fixture übereinstimmt, öffnen Sie ein Issue. Wir reproduzieren es, fügen Ihren Scanner zur öffentlichen Kompatibilitätsmatrix hinzu und (falls es ein Encoder-Bug ist) stellen einen Fix bereit.

Erwartete Scan-Ergebnisse

Gerendert aus demselben Datensatz wie die Kompatibilitätsmatrix und die "Scannt auf"-Zeile jeder Typseite, sodass die drei sich nicht widersprechen können. Die vollständige Fixture-Datei unter /test-vectors/ hat 33 Einträge, einen pro Encoder-Familie, die wir in der Regression testen; es ist nicht eine Zeile pro Produkttyp, und das behaupten wir auch nicht.

TypFixture-EingabeiPhone CameraAndroid CameraPro-Scanner
URLhttps://example.com/testÖffnet LinkA1Öffnet LinkA5DekodiertA8
WiFiWIFI:S:MyNet;T:WPA;P:...;;Verbindet mit NetzwerkA1Verbindet mit NetzwerkA5Dekodiert PayloadA8
WiFi Enterprise (EAP)WPA2-EAP PEAP identity=alice@corpiOS 17+, gemeldetUDekodiert; Beitritt hängt vom Hersteller abUDekodiert PayloadQ
vCardFN=Alice ORG=Acme ...Zu Kontakten hinzufügenA1Zu Kontakten hinzufügenA5Dekodiert PayloadA8
TOTPotpauth://totp/...?secret=JBSW...Authenticator-App liest esA9, A10Authenticator-App liest esA9, A10Dekodiert URIA8
eSIMLPA:1$rsp.example.com$K2-LM...iOS 17.4+ provisioniertA4Android 13+ provisioniertUDekodiert URIQ
Bitcoin (BIP-21)bitcoin:1A1zP1eP...Wallet-App öffnet sichQWallet-App öffnet sichQDekodiert URIQ
SEPA (EPC)BCD header + name + IBAN + amountNur RohtextQNur RohtextQDekodiert RohtextQ
Swiss QR-billSPC header + IBAN + address + amountNur RohtextQNur RohtextQDekodiert RohtextQ
Micro QRCompact payloadKein DekodierenV, UKein DekodierenGIndustrielle LesegeräteZ
rMQRRectangular payloadKein DekodierenUKein DekodierenGNeuere Zebra-, Scandit- und Cognex-FirmwareZ
GS1 Digital Linkhttps://id.gs1.org/01/09506000134352Öffnet URLQÖffnet URLQPOS-Firmware wertet die AIs ausQ
AztecArbitrary payloadKein DekodierenA2Google Lens, einige VariantenA7NativA8
Data MatrixArbitrary payloadKein DekodierenA2Google LensA6NativA8
PDF417AAMVA or arbitraryKein DekodierenA2Google Lens, uneinheitlichA7NativA8
AAMVA driver license@\n\x1e\rANSI 636014100002DL...iOS 17+ lizenzfähiger AblaufA3Nur lizenzfähige AppsUNativA8
EAN-13 / UPC-A0012345678905Kein DekodierenApGoogle LensGJedes Einzelhandels-POSA8
Code 128ABC-123Kein DekodierenApGoogle LensGNativA8

Wie man die Markierungen liest

Beleg

Was "erwartetes Scan-Ergebnis" bedeutet

Methodologiehinweise

Scanner-Flotten-Attestierungsprotokoll

Jeder manuelle Gerätetest, datiert. Zeilen werden hinzugefügt, wenn wir neue Hardware bekommen oder ein Nutzer eine Abweichung meldet; ein Ergebnis ändert sich nie stillschweigend, es bekommt eine neue Zeile.

#DeviceOS / appCorpus sliceResultDateNotes
A1iPhone 15 ProiOS 18.3, native CameraAll QR fixturespass2026-04-10
A2iPhone 15 ProiOS 18.3, native CameraAztec, PDF417, Data Matrixfail2026-04-10Keines dekodiert nativ (erwartet, siehe /standards/non-qr-2d/)
A3iPhone 15 ProiOS 18.3, native CameraAAMVA PDF417partial2026-04-10iOS 17+ lizenzfähiger Ablauf bietet „Zu Wallet hinzufügen" an; rohes PDF417 wird nicht zurückgegeben
A4iPhone 15 ProiOS 18.3, WalleteSIM LPApass2026-04-12eSIM-Hinzufügen-Ablauf löst korrekt aus
A5Pixel 8Android 14, native CameraAll QR fixturespass2026-04-10
A6Pixel 8Android 14, Google LensData Matrixpass2026-04-10
A7Pixel 8Android 14, Google LensAztec, PDF417partial2026-04-10Einige Varianten dekodieren; Unterstützung ist uneinheitlich
A8Zebra DS8100firmware CAAACS00-002-R06All 2D + 1D fixturespass2026-04-11Industrieller Imager, kanonische Referenz
A9Google Authenticatorv7.0+ (iOS/Android)TOTP, HOTPpass2026-04-12Nur SHA-1, 6-stellig (ignoriert Algorithmus-/Ziffern-Parameter gemäß Googles De-facto-Profil)
A101Passwordv8 (iOS/Android/macOS)TOTP, HOTPpass2026-04-12Vollständige RFC-Unterstützung inkl. SHA-256, SHA-512, 8-stellig

Demnächst

Siehe auch

Corpus zuletzt am 2026-04-18. Überprüfte Scanner-Geräte: iPhone 15 Pro / iOS 18.3, Pixel 8 / Android 14, Zebra DS8100.