公开测试语料库
我们关于扫描仪兼容性的声明,其可信度取决于支撑它们的证据。这个页面就是语料库, , 我们对每个编码器进行回归测试的标准输入,以及无需相信我们的话就能自行审计的手机摄像头行为。
为什么存在这个页面:大多数 QR 工具会发布兼容性矩阵。我们发布的是矩阵背后的语料库。如果您负责管理一批扫描仪, , 零售、仓储、制药、航空、DMV, , 您可以用自己的读取设备运行这个语料库,验证我们做出的每一项声明。
下载 corpus.zip 打包的 fixtures JSON + CSV + 方法论 + README。约 4 KB。
正在加载版本…
如何使用语料库
下载 fixtures。
每个测试向量都在 /test-vectors/fixtures.json 中。每种类型一个 JSON 对象,包含输入字段和预期的解码子字符串。从本站实时获取,没有陈旧副本。
重新生成 QR 码。
取任意 fixture 的 fields 映射,将值输入该类型的生成器,然后点击生成。生成的 QR 码与我们 CI 往返测试所用的完全一致,逐位相同。
用您的设备群扫描。
将 iPhone Camera、Android Camera、Google Lens、工业扫描仪(Zebra、Honeywell、Datalogic)或特定应用读取器(银行应用、身份验证器)对准生成的 QR 码。确认解码文本包含该 fixture 的每个 expect 子字符串。
报告差异。
如果您的设备群中某台扫描仪返回的解码结果与 fixture 不符,请提交问题。我们会重现问题,将您的扫描仪添加到公开兼容性矩阵,并(如果是编码器缺陷)发布修复。
预期扫描结果, , 精选子集
这是完整 fixture JSON 按扫描仪行为分组的简洁视图。Abundera 支持的所有类型的完整列表,请访问 /test-vectors/。
| 类型 | Fixture 输入 | iOS Camera | Android Camera | 专业扫描仪 |
|---|---|---|---|---|
| URL | https://example.com/test | 解码成功 | 解码成功 | 解码成功 |
| WiFi | SSID=MyNet PSK=... WPA | 加入网络 | 加入网络 | 解码 payload |
| WiFi Enterprise (EAP) | WPA2-EAP PEAP identity=alice@corp | iOS 17+ | 解码成功 | 解码成功 |
| vCard | FN=Alice ORG=Acme ... | 添加到通讯录 | 添加到通讯录 | 解码 payload |
| 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 固件 |
"预期扫描结果"的含义
- 解码成功, 手机原生摄像头读取器无需单独应用即可返回 payload。
- 部分支持, 解码取决于特定应用(身份验证器、钱包、银行)或特定操作系统版本。
- 无法解码, 原生摄像头不返回任何内容。需要专用扫描仪或读取器。
方法论说明
- 每个 fixture 都经过完整往返。我们的 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),表格中显示"无法解码",而非改称"原生读取器"。
- 语料库有版本控制。当我们添加类型或修复编码器缺陷时,相应的 fixture 条目会在同一次提交中发布。查看 fixture 历史记录以获取审计追踪。
即将推出
- 预渲染工件。当前 ZIP 包含 fixtures + 方法论 + CSV。未来版本将添加每个 fixture 的预渲染 SVG + PNG,方便您直接放入扫描仪设备群测试环境。等待构建时无头浏览器步骤。
- 扫描仪设备群认证。docs/SCANNER_ATTESTATION.md 上的带日期日志, , 每次验证新设备时增长。
- 第三方验证。独立安全实验室通过扫描仪设备群运行语料库并发布签名认证。等待中, , 已委托;报告到达后将在此发布。
另请参阅
- /test-vectors/, 完整的 fixture JSON 和可搜索的表格。
- /compatibility/, 实时扫描仪兼容性矩阵。
- /standards/, 各标准参考页面。
- /print-size/, 配合语料库使用的实体打印指南。