公開テストコーパス
スキャナー互換性に関するわたしたちの主張は、その根拠となる証拠と同程度の信頼性しかありません。このページがコーパスです。各エンコーダーに対してリグレッションテストを行うための標準入力と、わたしたちの言葉を信じなくても自分で確認できるスマートフォンカメラの動作を掲載しています。
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 サブ文字列が含まれていることを確認してください。
フリート内のスキャナーがフィクスチャーと一致しないデコード結果を返した場合、問題を報告してください。再現し、そのスキャナーを公開互換性マトリックスに追加し、(エンコーダーのバグであれば)修正を提供します。
期待されるスキャン結果, 厳選されたサブセット
これはフィクスチャーJSON全体をスキャナーの動作別にグループ化したコンパクトなビューです。Abunderaがサポートするすべてのタイプの詳細リストは /test-vectors/ をご覧ください。
| タイプ | フィクスチャー入力 | iOS Camera | Android Camera | プロスキャナー |
|---|---|---|---|---|
| URL | https://example.com/test | デコード | デコード | デコード |
| WiFi | SSID=MyNet PSK=... WPA | ネットワークに接続 | ネットワークに接続 | ペイロードをデコード |
| WiFi Enterprise (EAP) | WPA2-EAP PEAP identity=alice@corp | iOS 17+ | デコード | デコード |
| vCard | FN=Alice ORG=Acme ... | 連絡先に追加 | 連絡先に追加 | ペイロードをデコード |
| TOTP | otpauth://totp/...?secret=JBSW... | 認証アプリが読み取る | 認証アプリが読み取る | URIをデコード |
| eSIM | LPA:1$rsp.example.com$K2-LM... | iOS 17.4+ がプロビジョニング | Android 13+ がプロビジョニング | URIをデコード |
| Bitcoin (BIP-21) | bitcoin:1A1zP1eP... | ウォレットアプリが開く | ウォレットアプリが開く | URIをデコード |
| SEPA (EPC) | BCD header + name + IBAN + amount | 生文字列のみ | 生文字列のみ | バンキングアプリのサポート |
| Swiss QR-bill | SPC header + IBAN + address + amount | 生文字列のみ | 生文字列のみ | スイスのバンキングアプリがネイティブ対応 |
| GS1 Digital Link | https://id.gs1.org/01/09506000134352 | URLを開く | URLを開く | POSファームウェアがAIを解析 |
| Data Matrix | Arbitrary payload | デコード不可 | Google Lensのみ | ネイティブ |
| Aztec | Arbitrary payload | デコード不可 | 一部のAndroidリーダー | ネイティブ |
| PDF417 | AAMVA or arbitrary | デコード不可 | Google Lensで部分対応 | ネイティブ |
| AAMVA driver license | @\n\x1e\rANSI 636014080002DL... | iOS 17+ が運転免許証を認識 | Android の運転免許証対応アプリ | ネイティブ |
| EAN-13 | 0012345678905 | 数字をデコード | 数字をデコード | すべての小売POS |
| Code 128 | ABC-123 | デコード | デコード | ネイティブ |
| Micro QR | Compact payload | デコード不可 | デコード不可 | 産業用リーダーのみ |
| rMQR | Rectangular payload | デコード不可 | デコード不可 | 一部のScandit/Cognexファームウェア |
「期待されるスキャン結果」の意味
- デコード, スマートフォンのネイティブカメラリーダーが別アプリなしでペイロードを返します。
- 部分対応, デコードは特定のアプリ(認証アプリ、ウォレット、バンキング)または特定のOSバージョンに依存します。
- デコード不可, ネイティブカメラは何も返しません。専門のスキャナーまたはリーダーが必要です。
方法論に関する注記
- すべてのフィクスチャーはラウンドトリップします。 わたしたちの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)のデコードを拒否した場合、表では「デコード不可」と表記します。「ネイティブリーダー」と言い換えることはしません。
- コーパスはバージョン管理されています。 タイプを追加したりエンコーダーのバグを修正したりすると、対応するフィクスチャーエントリが同じコミットに含まれます。監査証跡として フィクスチャーの履歴 を確認してください。
今後の予定
- 事前レンダリングされたアーティファクト。 現在のZIPにはフィクスチャー + 方法論 + CSVが含まれています。今後のリビジョンでは各フィクスチャーの事前レンダリングされたSVG + PNGを追加する予定で、スキャナーフリートのハーネスに直接組み込めるようになります。ビルド時のヘッドレスブラウザステップを待っています。
- スキャナーフリートの認証。 docs/SCANNER_ATTESTATION.md の日付入りログ, 新しいデバイスで検証するたびに追記されます。
- 第三者による検証。 独立したセキュリティラボがコーパスをスキャナーフリートで実行し、署名付き認証書を公開します。保留中, 発注済み。報告書は届き次第ここで公開します。
関連ページ
- /test-vectors/, フィクスチャーJSON全体と検索可能なテーブル。
- /compatibility/, ライブスキャナー互換性マトリックス。
- /standards/, 標準ごとのリファレンスページ。
- /print-size/, コーパスに付随する物理印刷ガイダンス。