Привет!

Меня зовут Калмыкова Надежда, я - Data Scientist в ПГК Диджитал. В блоге ПГК мои коллеги уже не раз делились тем, как мы разрабатываем цифровые продукты, аналогов которым нет в сфере железнодорожной логистики. Я работаю в отделе прототипирования и помогаю исследовать возможности реализации различных идей, прежде чем они станут полноценными продуктами или проектами и потребуют больших ресурсов. Сегодня хочу рассказать о не самой очевидной для промышленности задаче - поиске голосового решения для проведения инвентаризации.

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

Мы реализовали нашу первую версию и используем эту задачу для одного из треков грядущего хакатона ПГК Диджитал – HackWagon22. Поэтому лучшие практики его участников станут приятным дополнением к нашим идеям для решения задачи во второй части статьи.

Актуальность задачи

Любая компания, даже небольшая, регулярно сталкивается с задачей инвентаризации - как минимум, мебели и техники в офисе. А промышленные компании проводят еще инвентаризацию дорогостоящего оборудования и деталей. И если инвентаризация офисной техники проходит в теплом помещении (хотя и не всегда с комфортом - номера могут быть наклеены в неочевидных местах), то инвентаризация в «полях» может стать настоящим испытанием - дождь, снег, сбивающий с ног ветер, опасность нападения медведя. И ПГК здесь не исключение - как крупнейший оператор грузового парка, в управлении которого - около 100 тысяч вагонов, компания хранит вагонные детали на большом количестве складов в разных уголках страны, чтобы быть готовой своевременно обслуживать парк. Для точного понимания, что, сколько и где у нас есть, мы регулярно проводим инвентаризацию.

Итак, что такое инвентаризация в цифрах? Это почти 500 складов с более, чем 400 тыс. деталей (четверть из них пронумерована, остальные - без номера). Общая стоимость этих деталей - порядка 6,5 млрд руб. Каждый склад представляет собой открытое пространство, где хранятся детали не только ПГК, но и других собственников. Ежегодно осенью в течение нескольких месяцев проводится опись этих деталей. На каждом складе несколько сотрудников осматривают детали, определяют технические характеристики, ведут запись результатов осмотра. Далее результаты сверяются с учетными данными и здесь важно, чтобы все сошлось. Инвентаризация позволяет выявить утрату, и на основании этого вести претензионную работу, планировать ремонты вагонов и закупку запасных частей.

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

Учитывая количество складов и деталей, процесс, очевидно, трудоемкий. Еще одна проблема при инвентаризации – поиск деталей.  Они могут быть упорядоченно разложены на площадках длительного хранения, а могут быть задействованы в производстве, находиться в ремонтном цехе, грузиться для перемещения в другие цеха или депо. Ходить с папкой и вручную вписывать номер и завод детали в отчет, как это происходит обычно - задачка не из простых, которая требует много ресурсов. Сотрудники вынуждены проводить опись в группах по несколько человек - чтобы добраться до заводского номера боковой рамы, например, нужно проделать сложные манипуляции - раскрутить 4 гайки и открыть коробку, а затем все вернуть к первоначальному виду. Держа в руках папку с бумагами, это не сделать, поэтому, если сотрудников двое, один добирается до необходимых данных, а второй записывает.  Учитывая все это при выборе решения, мы понимали, что собирать данные с помощью фотографий для данного процесса не удобно - для фото нужны свободные руки.

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

Таким образом, постановка задачи:

Имеется аудиозапись сотрудника, проводящего инвентаризацию с описанием характеристик деталей. Запись ведется на диктофон обычного смартфона, в обычных условиях работы склада. Продолжительность записи может достигать часа (чтобы сотрудник, не прерываясь, мог пройти ряд с деталями целиком и ничего не пропустить), для каждой пронумерованной детали фиксируются: номер, завод изготовитель, год выпуска и комментарий – например: «брак».

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

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

Деталь

Номер детали

Завод

Год

Комментарий

Боковая рама

13246

5

1998

 

Колесная пара

324951

33

2007

Брак

Надрессорная балка

4952

14

2000

 

Предварительная работа с данными

Первые «подходы к снаряду» были на искусственных аудиозаписях - мы попросили коллег сымитировать процесс, находясь в офисе. Звучит довольно оптимистично, ведь помимо промышленных шумов, которые часто присутствуют на складах, сильно влияет человеческий фактор - тут сотрудник отвлекся, здесь остановился поболтать с коллегой, а потом негодует, что номер плохо различим. А в наших аудио очень четко и в тихом помещении пользователь читал отчет. Неудивительно, что с такими исходными данными, задача свелась к тому, чтобы добавить обработку специфической лексики (например, надрессорная балка) и разнести информацию по нужным полям.

Но получив первые "реальные" аудио, мы столкнулись с проблемами - большая часть аудио состояла из шума, за которым порой не слышно голоса. Свистит ветер, слышно жужжание станков, лязг и грохот каких-то деталей, движение поездов. Близко к записывающему сотруднику может оказаться его коллега, который решит что-то обсудить, перекрикивая все вокруг - и этот голос неизбежно оказывается на записи. Кроме того, нередко запись содержала эмоциональные комментарии и критику в адрес завода, который сделал такую кривую деталь. Тогда нам пришлось развивать свою готовность идти на компромисс. Сошлись на том, что главное в задаче - получить правильные значения числовых полей отчетов, а с остальным - будем разбираться.

Естественные шумы на разных частотах, посторонняя речь и разная последовательность описания деталей внесли путаницу, поэтому мы написали четкую инструкцию для пользователей, которые делают запись, где прописали кодовые слова "Номер", “Год”, “Завод” и "Комментарий", для перехода к следующему объекту - “Следующий”, а так же поставили условие на то, чтобы значение поля шло после его наименования ("год девяносто восьмой", а не "девяносто восьмой год", в противном случае описание правил разнесения значений по столбцам могло сломаться всплывшей в разговоре не о детали цифрой).

Спойлер: порой ее соблюдали не идеально, но бОльшую часть проблем с формированием отчета это решило.

Затем мы составили список вариантов, как можно разными словами назвать одну и ту же сущность (например, “рама боковая” aka “БР”, aka “рама”, aka “РБ”). Комментарии к деталям тоже ограничили конечным количеством вариантов из одного-двух слов. Кроме того, стоит иметь в виду, что железнодорожные термины являются чем-то экзотичным и почти всегда распознаются совсем непохоже. Однако, нам повезло, что у нас есть список уникальных деталей, которые могут встретиться на складах.

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

Заключение

В этой статье описана идея голосовой инвентаризации деталей вагонов ПГК, актуальность такого помощника и сложности, с которыми мы столкнулись в начале работы над ним. Мы надеемся, что участникам HackWagon22 будет интересно попробовать свои силы в решении такой нетипичной для отрасли задачи и приложить руку к цифровизации логистики.

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

Комментарии (0)