Skip to content

Часто задаваемые вопросы

1. Можно ли продукты Smart Engines встроить в любое решение?

Да. Наши продукты можно встроить в любое решение. Возможны разные варианты внедрения, в зависимости от инфраструктуры клиента.

2. Как установить и протестировать систему?

Можно скачать мобильные демо-приложения в Apple Store и Google Play по ссылкам:
в Google Play: https://play.google.com/store/apps/details?id=com.smartengines.se
в Apple Store: https://apps.apple.com/ru/app/smart-engines/id1593408182.

Для получения SDK под нужную вам операционную систему свяжитесь с нами по электронной почте sales@smartengines.ru или support@smartengines.ru, и мы подготовим подходящий SDK для тестирования интеграции.

3. Где можно найти описание вашего SDK?

Вся необходимая документация для интеграции и использования, включая подробные инструкции, собрана в SDK в папке /doc.

4. Как протестировать вашу библиотеку?

Для тестирования нашей библиотеки достаточно установить и запустить любой из примеров интеграции, они находятся в папке /samples.

5. У меня есть версия SDK для ОС Windows, но предстоит работать на ОС на основе ядра Linux. Как запустить систему для Linux?

Для разных платформ мы предоставляем разные SDK, наиболее точно подходящие для требуемой платформы. Свяжитесь с нами по почте sales@smartengines.ru или support@smartengines.ru, и мы передадим подходящий SDK.

6. У меня есть версия SDK для ОС Centos 7. При попытке запустить его на Ubuntu/Debian/Alpine, появляется много ошибок "undefined symbol". Почему?

SDK для различных семейств дистрибутивов ОС на основе ядра Linux могут отличаться друг от друга. Данная версия SDK несовместима с ядром вашей ОС.
Свяжитесь с нами по почте sales@smartengines.ru или support@smartengines.ru, и мы передадим подходящий SDK.

7. В мобильных примерах внутри SDK, когда открывается окно сканера, появляется кнопка запуска сканирования. Можно ли в нашем приложении сделать так, чтобы распознавание объектов в кадре начиналось автоматически при наведении камеры, без необходимости нажатия кнопки?

Данную кнопку можно скрыть. Но мы не рекомендуем это делать, по двум причинам:

  • Пользователь нажимает на кнопку после того, как убедился, что документ находится в фокусе и в нужном положении. Это позволяет ускорить время распознавания, поскольку в начале распознавания мы не подаем “мусорные” кадры на анализ.
  • Вместе с открытием экрана с камерой параллельно может происходить инициализация нашей библиотеки. Индикатором готовности системы служит кнопка.

8. Как использовать SDK, если необходимо отправлять запросы на распознавание с разных устройств? Имеются ли кейсы по распознаванию с нескольких устройств?

Если необходимо распознавать документы с разных устройств, возможны варианты:

  1. Распознавать непосредственно на клиентских устройствах, используя мобильный SDK или веб-SDK с поддержкой WASM. В случае веб-SDK работа осуществляется в браузерах устройств. Для этого необходима интеграция нашего SDK в вашу веб-инфраструктуру. Распознавание документов на клиентском устройстве позволяет получить множество изображений с камеры устройства за один сеанс распознавания. Это дает более качественные результаты в постоянно меняющихся условий съемки (блики, тени, смазы и т.п.).
  2. Отправлять изображения на сервер. В этом случае следует использовать серверный SDK.

9. Какие форматы изображений поддерживаются?

Нативно библиотека распознавания поддерживает:

  • JPEG;
  • PNG;
  • TIFF;
  • Буферы изображений в RGB;
  • одноканальные/полутоновые base64, как в виде буфера, так и файла.

10. Что делать, если необходимо распознать изображение в формате PDF?

Поскольку PDF — это контейнерный формат, который поддерживает страницы с данными в виде растровых и векторных слоев, мы рекомендуем самостоятельно извлекать и преобразовывать страницы из PDF в растровый формат перед их распознаванием.

11. Как работать с форматом HEIC?

Поддержка формата HEIC в мобильных SDK не отличается от работы с другими форматами изображений: чтение HEIC осуществляется системными средствами.
В серверных SDK необходимо самостоятельно открыть HEIC формат сторонними средствами и конвертировать либо в один из поддерживаемых нами форматов, либо передать непосредственно сырые пиксели в виде RGB буфера.

12. Как можно определить, какой у нас формат изображения, перед началом распознавания?

Если вы не знаете, какой формат изображения у вас на входе, вы можете ориентироваться на его mime-type.
Если вы используете мобильный SDK, вы можете применять встроенные средства операционной системы, которые всегда будут возвращать изображения в формате Bitmap в случае Android и UIImage в случае iOS.
Cоздание экземпляра класса se.common.image из Bitmap и UIImage представлено в наших примерах.

13. Как понять, что распознавание выполнено правильно и с результатом можно работать?

Для оценки уверенности системы в распознавании каждого поля мы предлагаем опираться на два параметра: Confidence и isAccepted.
Confidence (конфиденс) — эвристическая оценка, означающая “уверенность” системы в результате.
Это характеристика, присущая почти всем инструментам нашей библиотеки: шаблону. Показывает, насколько система уверена, что в данной области находится соответствующий элемент; полей документа на изображении и так далее.
Confidence имеет значение от 0.0 до 1.0.
isAccepted — флаг, принимающий значения true/false. Выставляется на основе порогов конфиденс для каждого поля нами индивидуально. Если конфиденс не ниже установленного порогового значения, значение флага isAccepted устанавливается true.

14. Можно ли измерить время распознавания?

Да. Метрики скорости распознавания добавлены в пример в SDK, но они не являются частью библиотеки распознавания. Они представляют из себя буквально разницу между двумя timestamp. Время распознавания — время работы метода Process().

15. Каждый движок обрабатывает один тип документов (один тип – один движок) или один движок может содержать несколько типов документов?

Один движок может содержать несколько типов документов. Типы документов и сценарии их обработки задаются в файле конфигурации (бандле) и определяется индивидуально. Список типов документов, входящих в движок, можно получить из библиотеки или найти в файле *.json внутри SDK в папке /doc.

16. Как сделать так, чтобы процесс распознавания не останавливался во время отсутствия документа?

Для остановки процесса распознавания реализован механизм терминальности. Терминальность системы наступает в двух случаях:

  1. С помощью внутреннего механизма автоматического принятия решения об остановке распознавания.

    К примеру, если все кадры светлые и хорошего качества, то терминальность наступает быстро. Если нет, то процесс выполняется долго. Пустые кадры в механизме терминальности не учитываются.

  2. Таймаут. Время отсчитывается с момента подачи первого кадра в сессию распознавания. Эта опция задается в настройках сессии. Таймаут переводит систему в терминальность принудительно.

17. Как понять, что распознать документ не получится?

  • При передаче на распознавание одного изображения, возврат пустого ответа означает, что библиотека не нашла ни одного из ожидаемых сессией распознавания типов документов на изображении.

  • При передаче серии изображений (видеопоток), механизм остановки распознавания реализован с помощью терминальности. При ее достижении, вы в любом случае получите результат. Судить о том, получилось или нет распознать документ, необходимо самостоятельно при разборе результата.

18. При сканировании одиночного изображения из файла возвращается результат. Но терминальность не наступает, и результат все равно больше не возвращается. Почему так происходит?

Терминальность результата предназначена для остановки потока кадров, когда кадры подаются друг за другом в режиме видео (это означает, что терминальность имеет смысл только при передаче в систему более одного кадра). Для одного изображения не следует ориентироваться на терминальность системы.

19. Где можно найти результаты анализа на подлинность документа?

Наличие функциональности, выполняющей проверку признаков подлинности документов, удостоверяющих личность, может быть включена в продукт Smart ID Engine (для этого необходима специальная лицензия). Все результаты детекции, распознавания и признаков подлинности, а также сравнения найденных лиц содержатся в объекте “результат распознавания”. Его содержимое настраивается заранее.

20. Можно ли настроить распознавание одного документа так, чтобы при подаче нескольких его изображений конечный результат улучшился?

Именно для этого и используется распознавание в видеопотоке. По мере добавления в сессию новых изображений (сессия распознавания — это процесс распознавания одного физического документа), каждое изображение будет распознаваться, а результаты — комбинироваться, "уточняя" итоговый результат.

21. Как понять, какие движки и типы документов для меня доступны?

Документы в нашей библиотеке распределены по движкам, движки — по режимамам распознавания (модам). Получить список мод, движков и типов документов можно с помощью методов класса IdSessionSettings. (см. примеры в папке /samples).

22. Как устроена обработка документов, имеющих две стороны?

Система может определять сторону документа. Двусторонние документы будут дополнять итоговый результат по мере получения изображений. В одну сессию следует последовательно отправлять изображения разных сторон документа.

23. Что будет в результате, если на исходном изображении содержится более одного документа?

Распознается только один документ, который найден системой первым в рамках сессии. Все остальные документы в кадре игнорируются. Поэтому рекомендуем подавать изображения с одним документом.

24. Можно ли распознать документ, содержащийся в наборе, если его тип заранее не известен?

Можно задать список распознаваемых документов.
Для этого необходимо указать соответствующие настройки в файле конфигурации (бандле).
Все поддерживаемые документы, содержащиеся в бандле, рассортированы по движкам. За каждым движком закреплен определенный набор инструментов распознавания. Задав режим распознавания (мод) и маску, можно определить набор распознаваемых документов.

25. Можно ли включить в распознавание только определенные поля?

Можно исключить поля, которые вас не интересуют. Это сократит время распознавания.

26. Как обновить библиотеку до новой версии?

Зависит от используемого SDK.

Для серверного SDK:
Замените библиотеки в папке /bin, связи (в папке /bindings) и бандл (файл *.se в папке /data-zip). Все это содержится в поставляемом SDK.

На ОС Android:
Распакуйте SDK. Обновите ваш проект Android в три шага:

  1. Binaries (бинарные файлы): найдите папку jniLibs/ в вашем приложении и замените ее содержимое на содержимое папки /sample/app/src/main/jniLibs/ из SDK.
  2. Wrapper (обертка): найдите файл lib/*.jar в вашем приложении и замените его на файл sample/app/src/main/libs/*.jar из SDK.
  3. Bundle (файл конфигурации): найдите файл assets/data/*.se в вашем приложении и замените его на файл sample/app/src/main/assets/data/*.se из SDK.

На iOS:
Замените содержимое папок SESmartID и SESmartIDCore на содержимое соответствующих папок из SDK.