Один из важнейших аспектов в работе с большим объемом товаров, – это скорость обработки. С ростом объемов продукции, проходящей через цепочки поставок, возрастает и потребность в быстром и точном распознавании информации на упаковке: штрих-кодов, QR-кодов, текстов и символов. Поэтому все больше компаний, занимающихся логистикой и розничной торговлей, переходят к автоматизации процесса распознавания маркировки на товарах.
Целый ряд товарных групп в России подлежит обязательной маркировке. Среди них: алкоголь, молочные продукты, косметика, фармацевтическая продукция и так далее. Поскольку обязательная маркировка делает каждую единицу товара уникальной, прием и отгрузка товара со склада стала выполняться по уникальным двумерным кодам: Data Matrix и QR-коду. По этим кодам товар отслеживают на всем его пути от производителя до конечного пользователя. И потребитель при желании может проверить подлинность приобретаемого товара.
Наша команда разработала систему распознавания маркировки на товарах, используя технологии компьютерного зрения и машинного обучения. Рассмотрим в данной статье архитектуру двухстадийного пайплайна для распознавания знаков и двумерных кодов.
Преимущества автоматизации распознавания маркировки:
- Скорость. Один из важнейших аспектов в логистике - это скорость обработки товаров. Чем быстрее система может считать информацию с товаров, тем быстрее их можно обработать на складах, упаковать и отправить.
- Точность. Человеческий фактор часто становится причиной ошибок при считывании и вводе данных. Автоматизация процесса легко решает эту проблему.
- Контроль качества. Рынок полон поддельной продукции, которая не только причиняет финансовый ущерб, но и нередко несет угрозу здоровью потребителя и наносит вред репутации производителя. Это особенно актуально для фармацевтики и пищевой отрасли. Искусственный интеллект идентифицирует подлинные товары по уникальным маркировкам, защищая тем самым интересы как потребителя, так и производителя.
Технологии
Для создания системы были выбраны современные библиотеки и модели с открытым исходным кодом:
TensorFlow - библиотека для машинного обучения.
OpenCV - библиотека компьютерного зрения для обработки изображения.
YOLOv5 - модель компьютерного зрения, используемая нами для детекции маркировки на товаре.
EfficientNet B0 - модель нейронной сети, которую мы используем для классификации маркировки.
Zxing - библиотека для распознавания QR-кодов, штрих-кодов и data matrix.
Пайплайн системы

Пайплайн нашей системы устроен следующим образом:
- Сбор данных. Изображение товара с маркировкой загружается в пайплайн системы и подвергается последовательной обработке моделями.
- Детекция маркировки. YOLOv5 определяет координаты и местоположение маркировки на изображении.
- Классификация маркировки. Модель классификации EfficientNet B0 определяет, является ли найденная маркировка двумерным знаком или другим знаком, а затем классифицирует его.
- Если это двумерный код, то используется библиотека Zxing для его расшифровки.
- Если это знак, то система классифицирует его по категориям.
- Передача данных через API. Система передает результаты обработки через API для дальнейшего использования.
Процесс распознавания маркировки
1. Сбор данных
Пользователь делает снимок товара с маркировкой и загружает его через веб-интерфейс нашего сайта в библиотеку маркировок. Изображение товара передается в базу данных для последующей обработки. С этого момента запускается процесс распознавания маркировки на товаре.

2. Детекция маркировки
После сбора данных изображение загружается в систему и подвергается обработке моделью детекции YOLOv5. На этом этапе система находит расположение маркировки на изображении.
Модель определяет координаты области (bbox), содержащей маркировку, ее класс и score - вероятность того, что найденный объект относится к тому или иному классу.

3. Классификация
После того как система нашла расположение маркировки на изображении с помощью детектора YOLOv5, переходим к классификации найденных объектов. Для выполнения этой задачи мы выбрали модель EfficientNet B0.
EfficientNet B0 базируется на концепции свёрточных нейронных сетей (CNN) и использует метод составного масштабирования (compound scaling) трёх ключевых параметров сети:
- Глубина (сколько слоёв в сети) – увеличивая количество слоёв, сеть становится способной обучаться более сложным зависимостям.
- Ширина (сколько нейронов в каждом слое) – сеть захватывает больше информации в каждом слое.
- Разрешение изображения – увеличение размера входного изображения позволяет сети извлекать более детализированные признаки.
Используя модель EfficientNet B0, система классифицирует найденные объекты по типам: двумерный код или знак.

3.1. Классификация знаков
Процесс классификации знаков маркировки происходит в несколько этапов:
- Подача изображения. На вход подается изображение товара с маркировкой, которое уменьшается до стандартного размера (224х224).
- Обработка. Модель пропускает изображение через последовательные сверточные слои и MBConv блоки, выделяя важные признаки: контуры, текстуры и другие детали маркировки. Она автоматически акцентирует внимание на ключевых признаках через SE-блоки. Благодаря этому модель может лучше распознавать ключевые элементы маркировки (например, значимые текстуры и символы), что улучшает качество классификации.
- Классификация. После того как изображение прошло через сеть EfficientNet B0, система возвращает результат — прогнозируемый класс маркировки.

Модель EfficientNet B0 классифицирует найденные объекты по нескольким категориям:
- Общая информация: основная информация о товаре.
- Государственные знаки соответствия: знаки, подтверждающие соответствие товара определенным стандартам.
- Манипуляционные знаки: знаки, указывающие на особенности хранения и обращения с товаром.
- Одежда: знаки, связанные с составом ткани.
- Переработка: информация о правильной утилизации продукции.
- Экология: экологические характеристики продукции.
- Предупредительные знаки: знаки, предупреждающие о потенциальных опасностях.
3.2. Распознавание двумерных кодов
Если система определяет, что объект – это двумерный код (QR-код, штрих-код или Data Matrix), то использует специализированную библиотеку Zxing для его распознавания. Zxing быстро извлекает из кода такую информацию, как серийные номера или описание товара.

Система собирает результаты детекции и классификации, а также расшифрованную информацию из двумерных кодов. Все эти данные объединяются в единый результат, который затем передается пользователю или другой системе для дальнейшей работы.
API
Мы разработали API, которое позволяет компаниям интегрировать систему в свои бизнес-процессы. API принимает изображение, обрабатывает его с помощью моделей и возвращает возвращает структурированный JSON-ответ, содержащий:
- Координаты обнаруженной маркировки.
- Тип маркировки (например, Data Matrix, QR-код, штрих-код или маркировочный знак).
- Расшифрованная информация из двумерных кодов (если применимо), включая серийные номера, ссылки или другие данные, закодированные в маркировке.
- Уверенность модели (confidence score) в правильности распознавания.
- Дополнительные метрики качества изображения, такие как оценка размытия (blur score) и баланса белого (wb score), которые помогают диагностировать проблемы с исходными данными.
Пример JSON-ответа:
{
barcode_format: "not_recognized"
barcode_raw_code: "not_recognized"
blur_score: 419.603
fixed_defect: ""
label_id: 34
label: "datamatrix"
location_data {
format: RELATIVE_BOUNDING_BOX
relative_bounding_box {
height: 0.072341785
width: 0.1377011
xmin: 0.61120814
ymin: 0.33963096
}
}
score: 0.99609375
wb_score: 72.3233]
}
Заключение
Мы успешно создали систему распознавания маркировки на товарах помогает ускорить бизнес-процессы, повысить точность и снизить риски, связанные с подделками. Использование таких технологий, как YOLOv5 и EfficientNet B0, позволяет обрабатывать изображения с высокой скоростью и точностью. Это решение подходит для компаний, работающих в логистике, розничной торговле или производстве, где важно быстрое и точное распознавание информации.