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.