Публичный тестовый корпус
Наши заявления о совместимости со сканерами не лучше доказательств, на которых они основаны. Эта страница и есть корпус, канонические входные данные, которые мы регрессионно тестируем для каждого кодировщика, плюс поведение камеры телефона, которое можно проверить самостоятельно, не доверяя нам на слово.
Скачать corpus.zip Набор fixtures JSON + CSV + методология + README. ~4 КБ.
Загрузка версии…
Как использовать корпус
Каждый тестовый вектор находится в /test-vectors/fixtures.json. Один объект JSON на тип с полями ввода и ожидаемыми декодированными подстроками. Загружается в реальном времени с этого сайта, никаких устаревших копий.
Возьмите карту fields любого fixture, введите значения в генератор для этого типа и нажмите «Сгенерировать». Полученный QR-код побитово идентичен тому, что наш CI тестирует в цикле.
Направьте iPhone Camera, Android Camera, Google Lens, промышленный сканер (Zebra, Honeywell, Datalogic) или специализированный считыватель приложений (банковское приложение, аутентификатор) на сгенерированный QR-код. Убедитесь, что декодированный текст содержит каждую подстроку expect для данного fixture.
Если сканер в вашем парке вернёт декодирование, не совпадающее с 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, декодирует его обратно через API
BarcodeDetectorбраузера и проверяет совпадение подстроки. Зелёный CI означает, что корпус внутренне согласован. - Результаты сканеров в этой таблице получены при ручном тестировании на реальных устройствах. Не синтезированы. iPhone 15 Pro на iOS 18.3, Pixel 8 на Android 14, Zebra DS8100 imager на прошивке CAAACS00-002-R06.
- Мы публикуем отрицательные результаты. Если iPhone Camera отказывается декодировать симбологию (Data Matrix, Aztec, PDF417), в таблице это «Нет декодирования», мы не переименовываем это в «нативный считыватель».
- Корпус версионирован. Когда мы добавляем тип или исправляем ошибку кодировщика, соответствующая запись fixture поставляется в том же коммите. Проверьте историю fixture для аудиторского следа.
Что ожидается
- Предварительно отрисованные артефакты. Текущий ZIP содержит fixtures + методологию + CSV. Будущая версия добавит предварительно отрисованные SVG + PNG каждого fixture, чтобы их можно было напрямую вставить в тестовую оснастку парка сканеров. Ожидает шага безголового браузера во время сборки.
- Аттестация парка сканеров. Датированный журнал на docs/SCANNER_ATTESTATION.md, пополняется при каждой проверке нового устройства.
- Верификация третьей стороной. Независимая лаборатория безопасности прогоняет корпус через парк сканеров и публикует подписанную аттестацию. В процессе, заказано; отчёт будет опубликован здесь по получении.
Смотрите также
- /test-vectors/, полный fixture JSON и таблица с поиском.
- /compatibility/, актуальная матрица совместимости сканеров.
- /standards/, справочные страницы по стандартам.
- /print-size/, руководство по физической печати, дополняющее корпус.