Маркировка кирпича
Штрихкод, который должен пережить печь
- Год
- 2023
- Тип
- Маркировка и идентификация
- Материал
- Кирпич
- Формат
- R&D
- Технологии
- ML / Computer Vision
- Чтение
- 4 мин

В 2023 году мы исследовали, можно ли маркировать каждый кирпич прямо в глине: выдавить код на сырой заготовке на линии формовки, провести его через сушку и обжиг и прочитать камерой обычного телефона. Исследование закончилось обоснованным отказом от внедрения — и это тоже результат.
Задача
Заказчику нужна была поштучная маркировка кирпича без наклеек: оттиск в самой глине, пока заготовка ещё мягкая.
Главная сложность очевидна с самого начала. После формовки брус сохнет и уходит в печь; глина при этом садится и деформируется, а вместе с ней деформируется и код — штрихи меняют размер и форму. Прочитать же код нужно обычным телефоном, в цеху: при слабом освещении, с тенями и грязью на поверхности.
В успехе идеи сомневались многие. Исследование всё же провели: решение должно опираться на результаты испытаний, а не на прогнозы.
Первая проба: Code128
Начали со стандартного линейного кода Code128. Его накатывали валиком на сырой брус прямо на линии, печатали эталоны в разных масштабах и закладывали поправку на усадку.




После сушки и обжига код не читался. Code128 хранит данные в ширине штрихов и промежутков, а глина искажает именно ширину: узкий штрих расплывается до широкого, и код теряет смысл.
Выбор формата: RM4SCC
Следующим шагом стал подбор формата. Мы сравнили около сотни способов кодирования по двум требованиям:
- как можно больший запас на исправление ошибок — после сушки код сильно деформируется;
- надёжное считывание при низком контрасте, тенях и загрязнении.
Лучше всего подошёл RM4SCC — почтовый код Royal Mail, которым сортируют письма.
Каждый символ в нём состоит из четырёх штрихов. Штрихи различаются только высотой и положением относительно средней линии: короткий по центру, вверх, вниз или во всю высоту. Ширина штрихов и расстояния между ними данных не несут, поэтому деформация глины на смысл кода не влияет.
В каждом символе ровно два штриха уходят вверх и два — вниз. Если один штрих из четырёх не прочитан, но известна его позиция и три остальных распознаны верно, его можно восстановить.
Прототип на линии
Код наносили так же, как Code128: валик с рельефом прокатывается по сырому брусу.


Из печи кирпич выходил с налётом, трещинами и грязью на поверхности — с этим предстояло справляться распознаванию.
Распознавание
Для RM4SCC мы последовательно проверили три модели:
- Первая выделяла каждый символ своим цветом, чтобы разбить код на четвёрки штрихов. Этот подход не заработал.
- Вторая читала код целиком: на входе снимок, на выходе строка символов.
- Третья работала на уровне штрихов: определяла тип каждого штриха, CTC сводил результаты в строку, а символы собирались по четыре штриха.
Модели обучали на синтетических данных: код на текстурах кирпича и камня со сдвигами, наклоном и искажениями формы.



Последний символ кода RM4SCC — контрольный: он вычисляется из всех остальных и показывает, верно ли прочитан код. Мы использовали его и для восстановления повреждённых кодов. Если символ не распознавался, CTC ставил на его место метку [UNK], и позиция пропуска была известна точно — ради этого и понадобился CTC. Затем на это место перебором подставлялись допустимые символы с проверкой контрольного: при совпадении код считался восстановленным.
По итогам экспериментов с моделями, коррекцией изображения и восстановлением кодов задачу модели сузили: она только находит границы маркировки, а нормализацию изображения и декодирование штрихов выполняет алгоритм. В испытаниях эта связка оказалась самой надёжной.

Так выглядело считывание камерой телефона:

Результаты
Исследование подтвердило:
- линейный Code128 для оттиска в глине не подходит: деформация разрушает данные, записанные шириной штрихов;
- RM4SCC, где данные записаны высотой и положением штрихов, проходит сушку и обжиг и читается камерой телефона;
- надёжнее всего работает связка «модель находит маркировку — алгоритм нормализует и декодирует»; контрольный символ позволяет восстанавливать повреждённые коды.
Решение заказчика
В производство поштучная маркировка не пошла. Заказчик выбрал обычное этикетирование партий: на каждую партию — наклейка с кодом DataMatrix. Работа осталась исследовательским проектом.

