Возможности распознавания
- Распознавание 18 форматов линейных и двумерных штрихкодов: QR, Aztec, PDF417, DataMatrix, RMQR, MicroPDF417, Micro QR, Codabar, Code 39, Code 93, Code 128, EAN-8, EAN-13, ITF, ITF-14, UPC-A, UPC-E, GS1 Databar
- Сканирование платежных QR-кодов СБП по стандартам Банка России и с отклонениями от них
- Автоматическое определение типа платежного кода: QR, Aztec, DataMatrix
- Декодирование платежных сообщений и извлечение платежных реквизитов
- Одновременное распознавание всех штрихкодов на изображении, включая коды разных типов
- Непрерывное сканирование видеопотока без ограничений по количеству штрихкодов
- Настройка списка типов штрихкодов, допустимых к распознаванию
- Автоматическое определение типа и локализация штрихкодов с помощью компактных 4,6-битных нейросетей
- Распознавание черно-белых, инверсных, цветных и многоцветных штрихкодов
- Считывание кодов независимо от способа нанесения и материала поверхности
- Распознавание штрихкодов на прозрачных, изогнутых и других неплоских поверхностях
- Считывание компактных штрихкодов с мелкими элементами
- Распознавание загрязненных, поврежденных и частично обрезанных QR-кодов, в том числе при потере до 30% площади по краям
- Считывание штрихкодов с экранов смартфонов, кассовых аппаратов, платежных терминалов и электронных билбордов
- Автоматический поиск штрихкодов на фотографиях, сканах и в видеопотоке
- Распознавание при съемке под любым углом
- Устойчивость к недостаточному и избыточному освещению, контрастным теням и бликам
- Распознавание изображений низкого разрешения: система устойчиво распознает QR-коды в разрешении от 2 пикселей на модуль в простых случаях и от 3 пикселей на модуль — в сложных
- Высокая скорость распознавания, в том числе на бюджетных смартфонах
- Определение координат штрихкодов, оценка уверенности распознавания и маскирование объектов
- Интеграция в мобильные, десктопные, серверные и веб-приложения
- Распознавание непосредственно в браузере и PWA-приложениях с помощью WebAssembly
- REST API для low-code интеграции, API для C, C++, C#, Java, Python, PHP
- Поддержка React Native, Flutter и интеграции с 1С
- Совместимость с Android, iOS, Windows, Linux, ОС Аврора, РЕД ОС, Astra Linux, ОС Альт и ОС Эльбрус
- Поддержка архитектур x86, x86_64, ARM, MIPS и «Эльбрус»
- Локальное распознавание без подключения к интернету и передачи изображений на внешние серверы
- Полностью автоматическая обработка данных в оперативной памяти устройства
Возможности
интеграции
CodeEngine engine = CodeEngine.CreateFromEmbeddedBundle();
CodeEngineSessionSettings settings = engine.GetDefaultSessionSettings();
settings.SetOption(jnicodeengine.toString(EngineSettingsGroup.Barcode) + ".enabled", "true");
settings.SetOption(jnicodeengine.toString(EngineSettingsGroup.Barcode) + ".COMMON.enabled", "true");
CodeEngineSession session = engine.SpawnSession(settings, <PERSONALIZED_SIGNATURE>);
Image image = Image.FromFile(<PATH_TO_IMAGE>);
CodeEngineResult result = session.Process(image);
for (CodeObjectsMapIterator it_obj = result.ObjectsBegin();
!it_obj.Equals(result.ObjectsEnd());
it_obj.Advance()) {
CodeObject code_object = it_obj.GetValue();
for (CodeFieldsMapIterator it_field = code_object.FieldsBegin();
!it_field.Equals(code_object.FieldsEnd());
it_field.Advance()) {
CodeField code_field = it_field.GetValue();
String name = code_field.Name();
String value;
if (code_field.HasBinaryRepresentation())
value = code_field.GetBinaryRepresentation().GetBase64String().GetCStr();
else
value = code_field.GetOcrString().GetFirstString().GetCStr();
}
}
std::unique_ptr<se::code::CodeEngine> engine(se::code::CodeEngine::CreateFromEmbeddedBundle());
std::unique_ptr<se::code::CodeEngineSessionSettings> settings(engine->GetDefaultSessionSettings());
settings->SetOption((toString(EngineSettingsGroup::Barcode) + ".enabled").c_str(), "true");
settings->SetOption((toString(EngineSettingsGroup::Barcode) + ".COMMON.enabled").c_str(), "true");
std::unique_ptr<se::code::CodeEngineSession> session(engine->SpawnSession(*settings, <PERSONALIZED_SIGNATURE>));
std::unique_ptr<se::common::Image> image(se::common::Image::FromFile(<PATH_TO_IMAGE>));
const se::code::CodeEngineResult& result = session->Process(*image);
for (auto it_obj = result.ObjectsBegin(); it_obj != result.ObjectsEnd(); ++it_obj) {
const se::code::CodeObject &code_object = it_obj.GetValue();
for (auto it_field = code_object.FieldsBegin(); it_field != code_object.FieldsEnd(); ++it_field) {
const se::code::CodeField& code_field = it_field.GetValue();
std::string name = code_field.Name();
std::string value = "";
if (code_field.HasBinaryRepresentation())
value = code_field.GetBinaryRepresentation().GetBase64String().GetCStr();
else
value = code_field.GetOcrString().GetFirstString().GetCStr();
}
}
CodeEngine engine = CodeEngine.CreateFromEmbeddedBundle();
CodeEngineSessionSettings settings = engine.GetDefaultSessionSettings();
settings.SetOption(cscodeengine.toString(EngineSettingsGroup.Barcode) + ".enabled", "true");
settings.SetOption(cscodeengine.toString(EngineSettingsGroup.Barcode) + ".COMMON.enabled", "true");
CodeEngineSession session = engine.SpawnSession(settings, <PERSONALIZED_SIGNATURE>);
Image image = Image.FromFile(<PATH_TO_IMAGE>);
CodeEngineResult result = session.Process(image);
for (CodeObjectsMapIterator it_obj = result.ObjectsBegin();
!it_obj.Equals(result.ObjectsEnd());
it_obj.Advance()) {
CodeObject code_object = it_obj.GetValue();
for (CodeFieldsMapIterator it_field = code_object.FieldsBegin();
!it_field.Equals(code_object.FieldsEnd());
it_field.Advance()) {
CodeField code_field = it_field.GetValue();
String name = code_field.Name();
String value;
if (code_field.HasBinaryRepresentation())
value = code_field.GetBinaryRepresentation().GetBase64String().GetCStr();
else
value = code_field.GetOcrString().GetFirstString().GetCStr();
}
}
engine = pycodeengine.CodeEngine.CreateFromEmbeddedBundle()
settings = engine.GetDefaultSessionSettings()
settings.SetOption(
pycodeengine.toString(pycodeengine.EngineSettingsGroup_Barcode) + ".enabled", "true")
settings.SetOption(
pycodeengine.toString(pycodeengine.EngineSettingsGroup_Barcode) + ".COMMON.enabled", "true")
session = engine.SpawnSession(settings, <PERSONALIZED_SIGNATURE>)
image = pycodeengine.Image.FromFile(<PATH_TO_IMAGE>)
session.Process(image)
result = session.GetCurrentResult()
it_obj = result.ObjectsBegin()
while (it_obj != result.ObjectsEnd()):
code_object = it_obj.GetValue()
it_field = code_object.FieldsBegin()
while (it_field != code_object.FieldsEnd()):
code_field = it_field.GetValue()
name = code_field.Name()
if code_field.HasBinaryRepresentation():
value = code_field.GetBinaryRepresentation().GetBase64String().GetCStr()
else:
value = code_field.GetOcrString().GetFirstString().GetCStr()
it_field.Advance()
it_obj.Advance()
Уверенность распознавания, координаты объектов, маскирование
Модульная структура для снижения размера библиотеки
Распознавание любых штрихкодов
Система Smart Engines распознает линейные и двумерные штрихкоды любых форматов, автоматически определяя их тип и извлекая закодированные данные. Технология поддерживает классические черно-белые, цветные, многоцветные и инверсные штрихкоды. Это позволяет использовать единое решение для считывания платежных кодов, товарной маркировки, этикеток и других носителей закодированной информации без необходимости предварительно выбирать нужный тип.
Считывание всех кодов в кадре или на изображении
Искусственный интеллект Smart Engines автоматически находит и распознает все штрихкоды, присутствующие в кадре, независимо от их количества, типа и расположения. Технология позволяет одновременно считывать линейные и двумерные коды с фотографий, сканов и видеопотока, определяя координаты каждого из них и извлекая закодированные данные. Пользователю не требуется вручную выделять каждый штрихкод или сканировать их по очереди.
Режим непрерывного сканирования видеопотока
Технология Smart Engines поддерживает непрерывное распознавание штрихкодов в видеопотоке без ограничений на их количество. Система автоматически обнаруживает новые коды по мере их появления в кадре, определяет формат и извлекает закодированные данные в режиме реального времени. Это особенно удобно для последовательного считывания большого числа штрихкодов при приемке товаров, инвентаризации и других складских операциях.
Сканирование платежных QR-кодов для СБП
ИИ Smart Engines распознает QR-коды для оплаты через Систему быстрых платежей (СБП), сформированные по стандартам Банка России, а также с отклонениями от них. Технология автоматически декодирует платежное сообщение, извлекает необходимые реквизиты и передает их в платежную форму банковского приложения. Это позволяет максимально упростить переводы, оплату товаров и услуг даже при нестандартном оформлении QR-кодов.
Поддержка поврежденных и трудночитаемых штрихкодов
Система Smart Engines распознает загрязненные, потертые и поврежденные штрихкоды. Технология считывает QR-коды даже при потере до 30% их площади по краям. Это дает возможность распознавать штрихкоды на изношенных этикетках, упаковках и других носителях, которые могут повреждаться при транспортировке и выцветать с течением времени.
Считывание штрихкодов с любых поверхностей
Технология Smart Engines распознает штрихкоды на бумаге, товарных упаковках, этикетках и других носителях, а также на изогнутых и прозрачных поверхностях. Система позволяет считывать коды непосредственно с экранов смартфонов, кассовых аппаратов и платежных терминалов. Искусственный интеллект учитывает особенности расположения и нанесения штрихкодов и обеспечивает надежное извлечение данных независимо от материала поверхности и способа отображения кода.
Работа в любых условиях
Решение Smart Engines обеспечивает мгновенное распознавание штрихкодов даже в экстремальных условиях съемки. Система устойчива к недостаточному и избыточному освещению, контрастным теням, бликам, низкому разрешению изображений и геометрическим искажениям. Пользователю не требуется специально подбирать освещение, ракурс или положение камеры.
Умная камера для всех способов оплаты
Технологии Smart Engines позволяют объединить распознавание платежных штрихкодов, телефонных номеров и банковских карт в едином интерфейсе банковского приложения. Пользователю достаточно навести камеру смартфона на нужные реквизиты – система автоматически извлечет необходимые данные и передаст их в платежную форму. Единая умная камера упрощает проведение платежей и переводов, сокращает количество действий пользователя и снижает риск ошибок при вводе платежных данных.
Распознавание в приложениях, браузере и мессенджерах
Система Smart Engines позволяет интегрировать распознавание штрихкодов в мобильные приложения, а также веб-страницы и мини-приложения мессенджеров Telegram и MAX с помощью WebAssembly. Распознавание выполняется полностью локально и без подключения к интернету – как на смартфонах, так и на терминалах сбора данных (ТСД). Это позволяет использовать единое решение как для оплаты по QR-кодам, так и для автоматизации приемки товаров, инвентаризации и складского учета.
Отсутствие риска утечки:
Попробуйте качество наших технологий
- Скачайте мобильное демо-приложение, в котором все возможности собраны воедино
- Можно на время отключить интернет, чтобы убедиться, что изображения и ваши данные не передаются
- Попробуйте наше программное решение на примере QR/штрихкода, банковской карты, номера телефона и других объектов
Заказать продукт
Часто задаваемые вопросы
Система Smart Engines автоматически находит в кадре линейные и двумерные коды, определяет их тип и извлекает закодированные данные. Для сканирования достаточно навести камеру смартфона на штрихкод или сделать фотографию. Если в кадре несколько кодов разных типов, система распознает все сразу.
QR-код распознается на смартфоне за 0,1 секунды. Высокая скорость работы сохраняется и на бюджетных смартфонах, что обеспечивает одинаковый пользовательский опыт независимо от устройства клиента.
Система распознает двумерные коды QR, Micro QR, RMQR, Aztec, DataMatrix, PDF417 и MicroPDF417. Поддерживаются и линейные штрихкоды: Codabar, Code 39, Code 93, Code 128, EAN-8, EAN-13, ITF, ITF-14, UPC-A, UPC-E и GS1 DataBar.
Да. Система считывает платежные QR-коды для переводов по СБП, выполненные как по стандартам Банка России, так и с отклонениями от них. Тип платежного кода (QR, Aztec или DataMatrix) определяется автоматически, а платежное сообщение декодируется с извлечением реквизитов для заполнения платежной формы.
Да. Система одновременно распознает все штрихкоды на изображении, даже если они разных типов. В режиме непрерывного сканирования видеопотока количество считываемых кодов не ограничено.
Да. Система считывает загрязненные, потертые, поврежденные и частично обрезанные коды, в том числе при потере до 30% площади QR-кода по краям. Код распознается даже на помятой упаковке или стертой этикетке.
Штрихкоды считываются с бумаги, упаковки, товаров, а также с прозрачных, изогнутых и других неплоских поверхностей. Способ нанесения и материал поверхности значения не имеют. Система также распознает коды с экранов смартфонов, кассовых аппаратов, платежных терминалов и электронных билбордов.
Да. Система распознает черно-белые, инверсные, цветные и многоцветные штрихкоды. Также поддерживаются компактные коды с мелкими элементами.
Да. Система устойчива к недостаточному и избыточному освещению, контрастным теням и бликам и распознает коды при съемке под любым углом. QR-коды уверенно считываются при разрешении от 2 пикселей на модуль в простых случаях и от 3 пикселей на модуль – в сложных.
Да. Распознавание штрихкодов объединяется с распознаванием номеров телефонов и банковских карт в единой «умной камере» приложения. Пользователь наводит камеру на нужные реквизиты, а система автоматически извлекает платежные данные.
Да. Сканирование работает на смартфонах и терминалах сбора данных (ТСД) без подключения к интернету. Это позволяет автоматизировать складские операции, инвентаризацию и товарный учет даже там, где нет стабильной связи.
Распознавание встраивается в мобильные, десктопные, серверные и веб-приложения, а в браузер и PWA подключается через WebAssembly. Для low-code интеграции есть REST API. Также доступны API для C, C++, C#, Java, Python и PHP, поддержка React Native и Flutter и интеграция с 1С.
Система совместима с Android, iOS, Windows, Linux, ОС Аврора, РЕД ОС, Astra Linux, ОС Альт и ОС Эльбрус. Поддерживаются архитектуры x86, x86_64, ARM, MIPS и «Эльбрус», поэтому решение подходит для проектов с требованиями импортозамещения.
Нет. Распознавание выполняется локально на устройстве, без подключения к интернету и передачи изображений на внешние серверы. Все операции выполняются в оперативной памяти устройства.