公開テストコーパス
スキャナー互換性に関するわたしたちの主張は、その根拠となる証拠と同程度の信頼性しかありません。このページがコーパスです。各エンコーダーファミリーに対してリグレッションテストを行うための入力と、わたしたちの言葉を信じなくても自分で確認できるスマートフォンカメラの動作を掲載しています。
corpus.zip をダウンロード フィクスチャー JSON + CSV + 方法論 + README のセット。約 4 KB。
バージョンを読み込み中…
コーパスの使い方
すべてのテストベクターは /test-vectors/fixtures.json にあります。タイプごとに1つのJSONオブジェクトで、入力フィールドと期待されるデコード済みサブ文字列が含まれています。このサイトからライブで取得されるため、古いコピーはありません。
任意のフィクスチャーの fields マップを取り、その値をそのタイプの ジェネレーター に入力して「生成」をクリックします。生成されたQRコードは、わたしたちのCIがラウンドトリップテストに使用するものとビット単位で同一です。
iPhone Camera、Android Camera、Google Lens、産業用スキャナー(Zebra、Honeywell、Datalogic)、またはアプリ固有のリーダー(銀行アプリ、認証アプリ)を生成したQRコードに向けます。デコードされたテキストに、そのフィクスチャーのすべての expect サブ文字列が含まれていることを確認してください。
フリート内のスキャナーがフィクスチャーと一致しないデコード結果を返した場合、問題を報告してください。再現し、そのスキャナーを公開互換性マトリックスに追加し、(エンコーダーのバグであれば)修正を提供します。
期待されるスキャン結果
互換性マトリックスと各タイプページの「スキャン対応」の行と同じデータセットから描画されているため、この3つが食い違うことはありません。/test-vectors/にある完全なフィクスチャーファイルには33件のエントリがあり、これはリグレッションテストするエンコーダーファミリーごとに1件であって、製品タイプごとに1行ではありません。そのように主張したこともありません。
| タイプ | フィクスチャー入力 | iPhone Camera | Android Camera | プロスキャナー |
|---|---|---|---|---|
| URL | https://example.com/test | リンクを開くA1 | リンクを開くA5 | デコードA8 |
| WiFi | WIFI:S:MyNet;T:WPA;P:...;; | ネットワークに接続A1 | ネットワークに接続A5 | ペイロードをデコードA8 |
| WiFi Enterprise (EAP) | WPA2-EAP PEAP identity=alice@corp | iOS 17以降、報告ありU | デコード;接続できるかは端末メーカーに依存U | ペイロードをデコードQ |
| vCard | FN=Alice ORG=Acme ... | 連絡先に追加A1 | 連絡先に追加A5 | ペイロードをデコードA8 |
| TOTP | otpauth://totp/...?secret=JBSW... | 認証アプリが読み取りますA9, A10 | 認証アプリが読み取りますA9, A10 | URIをデコードA8 |
| eSIM | LPA:1$rsp.example.com$K2-LM... | iOS 17.4以降でプロビジョニングA4 | Android 13以降でプロビジョニングU | URIをデコードQ |
| Bitcoin (BIP-21) | bitcoin:1A1zP1eP... | ウォレットアプリが開くQ | ウォレットアプリが開くQ | URIをデコードQ |
| SEPA (EPC) | BCD header + name + IBAN + amount | 生文字列のみQ | 生文字列のみQ | 生文字列をデコードQ |
| Swiss QR-bill | SPC header + IBAN + address + amount | 生文字列のみQ | 生文字列のみQ | 生文字列をデコードQ |
| Micro QR | Compact payload | デコード不可V, U | デコード不可G | 産業用リーダーZ |
| rMQR | Rectangular payload | デコード不可U | デコード不可G | 新しめのZebra、Scandit、CognexファームウェアZ |
| GS1 Digital Link | https://id.gs1.org/01/09506000134352 | URLを開くQ | URLを開くQ | POSファームウェアがAIを解析Q |
| Aztec | Arbitrary payload | デコード不可A2 | Google Lens、一部のバリアントA7 | ネイティブA8 |
| Data Matrix | Arbitrary payload | デコード不可A2 | Google LensA6 | ネイティブA8 |
| PDF417 | AAMVA or arbitrary | デコード不可A2 | Google Lens、対応にばらつきありA7 | ネイティブA8 |
| AAMVA driver license | @\n\x1e\rANSI 636014100002DL... | iOS 17以降の免許証対応フローA3 | 免許証対応アプリのみU | ネイティブA8 |
| EAN-13 / UPC-A | 0012345678905 | デコード不可Ap | Google LensG | すべての小売POSA8 |
| Code 128 | ABC-123 | デコード不可Ap | Google LensG | ネイティブA8 |
マークの読み方
- ✓: 標準カメラアプリで読み取れます。追加アプリは不要です
- ~: セルに記載された条件下で読み取れます(特定のアプリ、OSバージョン、またはモード)
- ✗: デコードできません。スキャナーアプリまたはハードウェアが必要です
根拠
- 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
「期待されるスキャン結果」の意味
- デコード, スマートフォンのネイティブカメラリーダーが別アプリなしでペイロードを返します。
- 部分対応, デコードは特定のアプリ(認証アプリ、ウォレット、バンキング)または特定のOSバージョンに依存します。
- デコード不可, ネイティブカメラは何も返しません。専門のスキャナーまたはリーダーが必要です。
- 各結果の後ろの小さな文字は根拠を示しています:Aと数字の組み合わせは、下記の証明ログの該当行です。それ以外の文字はベンダーの文書を示し、各表の下に記載しています。U は、そのセルをまだ自社デバイスで検証していないことを意味します。
方法論に関する注記
- すべてのフィクスチャーはラウンドトリップします。 わたしたちのCIはヘッドレスChromiumで各コードを生成し、ブラウザの
BarcodeDetectorAPIを通じてデコードし直し、サブ文字列の一致を確認します。CIグリーンはコーパスが内部的に整合していることを意味します。 - この表のスキャナー結果は実際のデバイスでの手動テストによるものです。 合成ではありません。iOS 18.3のiPhone 15 Pro、Android 14のPixel 8、ファームウェアCAAACS00-002-R06のZebra DS8100イメージャー。
- 否定的な結果も公開します。 iPhone Cameraが特定の記号体系(Data Matrix、Aztec、PDF417)のデコードを拒否した場合、表では「デコード不可」と表記します。「ネイティブリーダー」と言い換えることはしません。
- コーパスはバージョン管理されています。 タイプを追加したりエンコーダーのバグを修正したりすると、対応するフィクスチャーエントリが同じコミットに含まれます。各フィクスチャーの変更は変更履歴に記録され、corpus.VERSION.txtには現在のZIPのビルド元となったフィクスチャーファイルのハッシュが記載されています。
スキャナーフリート証明ログ
手動によるデバイス検証をすべて日付付きで記録しています。行は、新しい機器を入手したときやユーザーが不一致を報告したときに追加されます。結果が静かに変わることはなく、常に新しい行が追加されます。
| # | 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 | ネイティブでデコードするものはありません(想定どおり、/standards/non-qr-2d/ を参照) |
| A3 | iPhone 15 Pro | iOS 18.3, native Camera | AAMVA PDF417 | partial | 2026-04-10 | iOS 17以降の免許証対応フローは「Walletに追加」を提示しますが、生のPDF417は返されません |
| A4 | iPhone 15 Pro | iOS 18.3, Wallet | eSIM LPA | pass | 2026-04-12 | eSIM追加のフローが正しく起動します |
| 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 | 一部のバリアントはデコードできますが、対応にばらつきがあります |
| A8 | Zebra DS8100 | firmware CAAACS00-002-R06 | All 2D + 1D fixtures | pass | 2026-04-11 | 産業用イメージャー、正式なリファレンス |
| A9 | Google Authenticator | v7.0+ (iOS/Android) | TOTP, HOTP | pass | 2026-04-12 | SHA-1のみ、6桁(Googleの事実上のプロファイルに従い、アルゴリズム/桁数パラメータは無視されます) |
| A10 | 1Password | v8 (iOS/Android/macOS) | TOTP, HOTP | pass | 2026-04-12 | SHA-256、SHA-512、8桁を含む完全なRFC対応 |
今後の予定
- 事前レンダリングされたアーティファクト。 現在のZIPにはフィクスチャー + 方法論 + CSVが含まれています。今後のリビジョンでは各フィクスチャーの事前レンダリングされたSVG + PNGを追加する予定で、スキャナーフリートのハーネスに直接組み込めるようになります。ビルド時のヘッドレスブラウザステップを待っています。
- スキャナーフリートの認証。 日付入りのデバイスログはこのページで公開されており、新しいデバイスで検証するたびに追記されます。
- 第三者による検証。 独立したセキュリティラボがコーパスをスキャナーフリートで実行し、署名付き認証書を公開します。保留中, 発注済み。報告書は届き次第ここで公開します。
関連ページ
- /test-vectors/, フィクスチャーJSON全体と検索可能なテーブル。
- /compatibility/, ライブスキャナー互換性マトリックス。
- /standards/, 標準ごとのリファレンスページ。
- /print-size/, コーパスに付随する物理印刷ガイダンス。