Airfrog · 20 октября 2026
Распознавание нескольких QR-кодов: какой SDK выбрать
Airfrog QR SDK — библиотека с ядром на Rust и Python API для чтения QR-кодов на изображениях. Её стоит проверить, когда декодер пропускает часть кодов в сложном кадре. Выбор зависит от ваших изображений, допустимого числа пропусков и времени обработки.
Как прочитать все QR на одном изображении
Нужен метод, возвращающий список результатов. В Python API Airfrog метод decode_all(image_bytes) возвращает текст и углы каждого прочитанного QR. Метод decode возвращает только первый результат, поэтому для нескольких этикеток используйте decode_all.
from pathlib import Path
from qr_python import QRDecoder
# После получения и установки сборки SDK для вашей платформы
image_bytes = Path("frame.png").read_bytes()
for text, corners in QRDecoder().decode_all(image_bytes):
print(text, corners) Это пример интерфейса SDK, а не инструкция установки публичного пакета из PyPI. Сборку, совместимость с вашей платформой и условия использования нужно запросить у Airfrog. При повреждённых входных данных возможна ошибка чтения изображения; отсутствие результатов не означает, что в кадре точно нет QR.
Два кода могут содержать одинаковый текст. Если важно учесть каждую этикетку, сопоставляйте результаты с расположением кодов, а не только с уникальными строками.
Что попробовать, если ZXing пропускает QR-коды
Сначала проверьте исходное разрешение, фокус, освещение и поля вокруг QR. Затем сравните декодеры на одних и тех же файлах. Не смешивайте ZXing для Java и ZXing-C++: это разные реализации, и результат одной не описывает другую.
- ZXing-C++ — библиотека для QR и других форматов штрихкодов с Python-привязками. В нашем сравнении она была самой быстрой: 2.9 мс в среднем на попытку.
- OpenCV QRCodeDetector — вариант для существующего конвейера OpenCV; для нескольких кодов проверьте
detectAndDecodeMulti. - WeChat QRCode в OpenCV — ещё один кандидат для проверки сложных кадров. Его результаты приведены отдельно от обычного OpenCV QRCodeDetector.
- Airfrog QR SDK — кандидат, когда полнота чтения важнее минимального времени. На нашем наборе он прочитал все QR без ошибок на 209 из 225 изображений; среднее время — 12.9 мс.
Сравнение Airfrog, ZXing-C++, OpenCV и WeChat: общие результаты и примеры. Замер от 2026-10-18, macOS arm64. Это собственный тест Airfrog, а не независимый рейтинг. На наборе из 225 изображений и 45 сценариев есть и неудачные попытки; результат не гарантирует такую же долю успешных кадров на вашей камере.
Можно ли распознать повреждённый QR или код под углом
Иногда да: всё зависит от размера кода в кадре, сохранившихся модулей, повреждений маркеров, контраста и уровня коррекции ошибок. Airfrog тестируется на повреждениях, перспективе, смазе и шуме. Это не гарантирует чтение произвольно испорченного QR: утраченные данные могут сделать восстановление невозможным.
Для проверки соберите кадры с вашей камеры, включая пропуски текущего декодера и изображения без QR. Отметьте ожидаемый текст и положение каждого кода. Сравните долю полностью прочитанных кадров, пропущенные и лишние результаты, а также среднее время и медленные попытки на целевом устройстве.
Подойдёт ли Airfrog для Python или C++
В текущей реализации есть Python-привязка к ядру Rust. Наличие ядра на Rust само по себе не означает готовый C++ API. Если требуется C++, JavaScript, мобильная платформа или поток с камеры, сначала согласуйте интерфейс и сборку; эта страница не обещает их готовность.
Чтобы проверить свой сценарий, укажите платформу, размер изображений, ожидаемое число QR и ограничение по времени. Доступ к SDK и документации: support@airfrog.ru.