Задача
До автоматизации состав останавливался у весоизмерительной системы. Сотрудник стоял рядом с путями и записывал в тетрадь номер вагона и сведения о грузе, после чего другой сотрудник переносил бумажные записи в ERP. Каждый шаг добавлял свою проблему: полная остановка состава, присутствие человека в промышленной железнодорожной зоне, ручное считывание загрязнённой или плохо освещённой маркировки, ошибки и пропуски в записи, повторный ввод одних и тех же данных, задержка между фактическим взвешиванием и появлением информации в учёте.
Отдельно стоял вопрос доказательности. Между вагоном, его изображением и показанием весов не существовало единой цифровой связи, поэтому разобрать расхождение задним числом было почти невозможно. Поэтому задача формулировалась не как «прочитать текст на фотографии», а как «убрать ручной разрыв между физическим проходом вагона и его учётной транзакцией».
Решение
Сессия прохода. Единицей данных стал не кадр и не отдельное измерение, а проход состава. Внутри сессии система строила упорядоченную модель: порядковое положение вагона, интервал наблюдения, набор кадров, распознанный номер и альтернативные варианты OCR, измерение весов с признаками его качества, найденная транспортная или ERP-запись, результат проверки и состояние отправки.
Взвешивание в движении. Весовой контур работал по принципу weigh-in-motion — масса определялась во время медленного прохождения вагона по измерительному участку, что соответствует отраслевому классу automatic rail-weighbridge по OIML. Интеграция принимала не только итоговое значение: сохранялись направление и последовательность движения, границы измерительного окна, доступные сырые сигналы контроллера, диагностические признаки оборудования, допустимость скорости, а также факты остановки, отката или повторного проезда внутри зоны. Если масса тары была известна из учётных данных, система рассчитывала груз; если подтверждённой тары не было, сохранялось фактическое измерение без подмены недостающих данных предположением.
Два канала наблюдения. Промышленная площадка даёт блики, тень, осадки, пыль и повреждённую маркировку, поэтому вагон представлялся не одиночной фотографией, а серией кадров с RGB- и инфракрасных камер. Контур выбирал наиболее резкие и контрастные кадры, нормализовал перспективу и локальный контраст, распознавал номер и объединял результаты нескольких кадров и камер в один вывод с расчётной уверенностью. Инфракрасный канал не подменял обычное изображение — он давал дополнительное наблюдение там, где RGB терял контраст.
Проверка формата. Европейский грузовой вагон маркируется двенадцатизначным номером EVN/UIC с контрольным знаком. Это дало не только текст для ERP, но и формальный способ поймать ошибочно прочитанный символ до того, как он уйдёт в корпоративный учёт.
Корреляция потоков. Совпадения по времени было недостаточно: небольшое смещение связало бы номер одного вагона с массой следующего. Связь строилась по времени, направлению и порядку прохождения, а одинаковый номер, разворот или повторный проезд внутри зоны не создавали вторую ERP-операцию без проверки контекста.
Порог автоматизма. Автоматическая отправка выполнялась только после набора взаимосвязанных проверок: номер найден и соответствует структуре, контрольная цифра пройдена, уверенность OCR не ниже принятого порога, результат подтверждается лучшими кадрами, вагон однозначно сопоставлен с измерением, весовая запись завершена без блокирующей диагностики, последовательность вагонов не содержит необъяснимого пропуска или дубля, связанная учётная запись не противоречит номеру, операция не была передана ранее. Пороги и правила остались настраиваемыми эксплуатационными параметрами, а не зашитыми константами.
Обмен с ERP. Интеграционный слой отвечал за идемпотентность, очередь при недоступности ERP, повтор с контролируемой задержкой, разделение технической ошибки обмена и бизнес-отклонения, фиксацию ответа и внешнего идентификатора, сверку неподтверждённых операций. Если корпоративная система была недоступна, физический проход и доказательные материалы не терялись.
Очередь исключений. Ручное действие перенесли из каждого вагона в редкие неоднозначные случаи. Оператор видел исходные и улучшенные кадры, несколько кандидатов номера, весовую запись, соседние вагоны и причину блокировки. Он мог подтвердить вариант, исправить номер, связать запись вручную или передать случай ответственному подразделению — с обязательным указанием причины. Исходные данные, результат алгоритма и человеческое решение хранились раздельно, а версия модели и конфигурации сохранялась вместе с результатом, чтобы обновление OCR не переписывало уже завершённые записи.
Результат
Штатный проход вагона перестал зависеть от сотрудника с тетрадью и повторного ввода в ERP. Состав проходит весоизмерительный участок без обязательной полной остановки, а система собирает показания, распознаёт номер, проверяет связность данных и передаёт результат в корпоративный учёт.
Ручная работа осталась там, где она действительно нужна: нечитаемая маркировка, сомнительное измерение, конфликт с учётными данными. Для каждого решения сохраняется цифровая доказательная база из кадров, измерений и журнала действий — спорную операцию можно разобрать спустя месяцы и увидеть, что система увидела, что предложила, что было отправлено и кто изменил результат. Свой срез получила каждая роль: оператор весовой разбирает исключения, диспетчер видит составы и вагоны, склад сверяет операции, КИПиА следит за диагностикой камер и весов, а аудитор получает неизменяемую историю без права править операционные данные.