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

Одно из самых частых действий, выполняемых на складе – это сканирование штрихкодов. Сканируются как линейные, так и 2D штрихкоды. От того, как быстро и точно выполняется сканирование в составе программного обеспечения склада, зависит общая производительность работников на складе.

С одной стороны, давно существуют готовые промышленные решения – защищенные мобильные терминалы ТСД со встроенными аппаратными считывателями штрихкодов (2D imager). С другой стороны, сейчас все большее распространение получают нейронные сети. Одна из самых частых задач применения нейронных сетей – это обработка графической информации и распознавание объектов на ней, в том числе штрихкодов. Появляются новые библиотеки, которые вполне способны решать подобные задачи.

С развитием нейронных сетей и появлением готовых библиотек безальтернативность использования промышленных терминалов на складе ставится под сомнение. Библиотека с интегрированной обученной моделью нейронных сетей, установленная на обычный смартфон с хорошей камерой, позволяет выполнять работу не хуже. Это позволяет отказаться от дорогостоящих, громоздких, дефицитных и медленных промышленных ТСД и использовать на складе относительно недорогие смартфоны массового сегмента в защищенном чехле. Причем за цену одного промышленного терминала можно купить 5 смартфонов или больше.

Постановка задачи

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

Требования: 1. Нужна поддержка основных типов линейных штрихкодов и 2D штрихкодов таких как:

  • Code128EAN8, EAN13QR-CodePDF417

2. Распознавание бирок от производителя с определенными типами и количеством штрихкодов на борту.

3. Поддержка регулярных выражений для отсеивания ненужных баркодов, не подлежащих распознаванию.

4. Обеспечение максимальной точности распознавания без ошибок

5. Версия Android 10+

Что было реализовано

Задача была решена — был разработан native модуль под Android с минимальной версией SDK 29 на Java. Модуль был интегрирован в React-native приложение складского учета.

Модуль обеспечивает сканирование штрихкодов напрямую с видеопотока камеры в реальном времени, с динамической отрисовкой графической информации поверх видеопотока:

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

Таким образом модуль делает процесс сканирования штрихкодов интерактивным и интуитивным и предоставляет пользователю обратную связь о том, какие штрихкоды и в каком количестве уже отсканированы, а какие нет. Стимулирует пользователя поднести камеру ближе, если разрешения изображения недостаточно для точного распознавания. Цвет рамок вокруг баркодов различается в зависимости от того был ли уже распознан баркод или нет. Если баркод был считан первый раз, то происходит отрисовка прямоугольной рамки зеленого цвета, иначе выводится серая. Так пользователь получает обратную связь от модуля и более оптимально наводит камеру на бирку. Если бирка достаточно большая (бывают бирки размером А4), то пользователь должен вести камерой по столбцам со штрихкодами и видеть, что он уже отсканировал, а что нет.

Также были добавлены звуковые сигналы. Сделана автоматическая активация подсветки камеры.

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

Выбор подходящего SDK

Был проведен анализ существующих библиотек или SDK под Android для распознавания баркодов

  • Библиотека ZXing, ZBar и их производные
  • Различные платные библиотеки
  • Firebase ML-Kit SDK от Google

В результате был выбран ML-Kit SDK как наиболее перспективный вариант, к тому же бесплатный.

Что такое ML Kit SDK

ML Kit — это мобильный SDK от Google на базе обученных моделей нейронных сетей, которые могут быть загружены на устройство и использоваться offline в режиме реального времени.

Состав ML Kit

ML-Kit реализует следующие элементы машинного зрения:

  • Распознавание штрихкодов
  • Распознавание лиц на изображении
  • Построение уникальной сети лица
  • Распознавание текста
  • Маркировка изображений (определение объектов и создание текстовой подписи)
  • Обнаружение и отслеживание объектов
  • Распознавание цифровых чернил
  • Распознавание позы человека
  • Сегментация селфи

Также ML-Kit содержит API естественного языка:

  • Идентификация языка
  • Перевод
  • Умный ответ
  • Извлечение сущности

Преимущества ML Kit по сравнению с облачными решениями

ML Kit обрабатывает все данные на мобильном устройстве. В отличие от других решений, которые отправляют данные на сервер, где обрабатывают их и возвращают результат приложению, в котором результаты используются. Таким образом ML Kit имеет следующие преимущества:

  • Отзывчивость
  • Обработка данных в реальном времени без каких-либо задержек передачи данных
  • Возможность работать Offline
  • Работая непосредственно на устройстве, исключаются влияние сетевого соединения и пропускной способности
  • Защищенность данных, так как чувствительные для пользователя данные наружу не отправляются и, соответственно, не могут быть перехвачены.

Модели нейронных сетей и ML Kit

Google ML Kit использует тренированные ML модели по умолчанию. Это натренированные модели, которые покрывают различные сценарии применения и достаточны для большинства случаев. Также ML Kit предоставляет возможность в случае необходимости натренировать собственную модель, которая нацелена на специфические сценарии использования.

Кастомизация моделей для ML Kit

В том случае, если стандартные модели по какой-то причине не подходят, пользователь может использовать натренированную модель TensorFlow Lite, которая уже опубликована через хаб TensorFlow или даже натренировать собственную модель TensorFlow Lite, которая отвечает предъявляемым требованиям.

Продолжение читайте в нашем блоге. Компания Арсис постоянно публикует интересные статьи, основанные на личном опыте :)

0
2 комментария
Сергей Топалов

Быстро и удобно ,ИИ может возглавить рутинную и банальную работу ,что действительно необходимо для человека

Ответить
Развернуть ветку
Сергей Гусельников

Спасибо большое за представленную информацию, познавательно и полезно для имеющих отношение к этим процессам.

Ответить
Развернуть ветку
-1 комментариев
Раскрывать всегда