공개 테스트 코퍼스
스캐너 호환성에 관한 저희의 주장은 그 근거가 되는 증거만큼만 신뢰할 수 있습니다. 이 페이지가 코퍼스입니다. 모든 인코더에 대해 회귀 테스트를 실행하는 표준 입력과, 저희 말을 그냥 믿지 않고도 직접 확인할 수 있는 스마트폰 카메라 동작을 담고 있습니다.
corpus.zip 다운로드 fixtures JSON + CSV + 방법론 + README 번들. 약 4 KB.
버전 로드 중…
코퍼스 사용 방법
모든 테스트 벡터는 /test-vectors/fixtures.json에 있습니다. 타입별로 하나의 JSON 객체가 있으며, 입력 필드와 기대되는 디코딩 서브문자열이 포함됩니다. 이 사이트에서 실시간으로 가져오므로 오래된 복사본이 없습니다.
임의의 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 | 네트워크 연결 | 네트워크 연결 | 페이로드 디코딩 |
| 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 버전에 따라 달라집니다.
- 디코딩 불가, 네이티브 카메라가 아무것도 반환하지 않습니다. 전문 스캐너나 리더가 필요합니다.
방법론 참고 사항
- 모든 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의 날짜 기록 로그, 새 기기를 검증할 때마다 추가됩니다.
- 제3자 검증. 독립 보안 연구소가 코퍼스를 스캐너 플리트로 실행하고 서명된 인증서를 공개합니다. 대기 중, 의뢰 완료. 보고서는 도착하는 즉시 여기에 공개됩니다.
관련 항목
- /test-vectors/, 전체 fixture JSON 및 검색 가능한 테이블.
- /compatibility/, 실시간 스캐너 호환성 매트릭스.
- /standards/, 표준별 참조 페이지.
- /print-size/, 코퍼스에 딸린 물리적 인쇄 지침.