Нейросеть сократила время подачи объявления о продаже автомобиля в два раза

Кейс автомобильного портала Drom.ru.

Сегодня Drom.ru хочет рассказать вам про то, как с помощью больших данных и машинного обучения мы смогли принести пользу живым людям, упростив решение их бытовых задач. Для этого нам потребовалось изучить очень много данных, написать нейросетку и обучить её (два раза).

Вы когда-нибудь пробовали разместить объявление о продаже машины? На первый взгляд — тривиальная задача. Однако обычному человеку требуется в среднем десять минут для того, чтобы заполнить данные о своей машине на Drom.ru: выбрать модель, указать параметры автомобиля, переписать VIN, перепроверить два раза.

Пользователю несколько облегчают задачу функции автозаполнения, которые мы в своё время внедрили, но всё равно — десять минут как с компьютера, так и с телефона. Это много, долго и утомительно. Нам всегда хотелось сократить время подачи объявления до минимума, чтобы можно было на Drom.ru разместить объявление так же быстро, как завести мотор в машине — раз и поехали.

Идея, которую мы в итоге реализовали, была задумана давно, но технологии и объем накопленных данных только сейчас дошли до нужного уровня. Теперь продавец делает фотографию свидетельства о регистрации (СТС, или иначе СОР), мы её быстро распознаём и заполняем нужные поля в объявлении автоматом. «Нашли, чем удивить в 2017 году», — скажете вы. Не спешите с выводами. Одним распознаванием текста наша задача не решается.

Правильное решение потребовало от нас создания системы проверки данных в СТС на ошибки

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

Всё началось с подготовки обучающей выборки

Где найти большое количество СТС для анализа данных? Сперва собрали все те, которые были в наших объявлениях. Таких оказалось мало. Думали распарсить выдачу Google, но там много мусора и повторов. Тогда решили попробовать краудсорсинг — при подаче объявления просили пользователей присылать фото своих СТС. Люди откликнулись — за несколько дней набрались тысячи фотографий. Настроение сразу улучшилось.

Следующий шаг — выбор инструментария для работы. Есть готовые библиотеки для распознавания текста. С ними сразу начались проблемы. Во-первых, в СТС смешиваются латинский и русский алфавиты, во-вторых, используются разные шрифты. Значительный объём информации приходится на цифры, для которых нет готовых словарей.

К тому же данные в документах крайне неаккуратно печатаются. Информацию в бланк СТС вносят сами сотрудники ГИБДД, печатают карточки на некачественных принтерах: если что-то не видно, то это «не проблема». Данные «выползают» за поля. Без определённого навыка с трудом можно понять, что к чему. Мы смотрели глазами на СОРки и, бывало, сами не могли разобрать, что же там написано.

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

Довольно быстро мы сделали инструмент разметки полей и данных в СТС, в который загрузили фотографии, полученные от пользователей. Инструмент быстро разошёлся по компании — сотрудники сами охотно размечали СОРки.

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

После этого мы отцифровали данные. Это оказалось сложнее и дольше. Зато ручной работы больше не требовалось.

Сведения из нескольких тысяч СОРок руками переводились в цифровой формат

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

Что за модели, и что они могут

Для работы мы взяли TensorFlow от Google. С его помощью мы обучили одну модель, которая занимается распознаванием прямо на телефоне пользователя, а вторая работает на нашем сервере.

В приложении на телефоне мы обрабатываем видеопоток с камеры в реальном времени. Это позволяет снизить влияние освещённости и проблем с фокусировкой. Задача первой модели — точно распознать символы. Обучили мы её за три дня на одном GPU. Дальше в дело вступает уже нейросеть.

Вторая модель работает на нашем сервере, мы научили её определять, к какому полю какие значения относятся. Модель знает словари возможных значений, может исправлять ошибки, а также выполняет валидацию данных: вдруг кто-то случайно или по умыслу захочет исказить информацию в СТС. Точность модели на среднестатистических данных составляла около 97%. Мы посчитали, что этого достаточно.

Как показал недавний опрос среди наших пользователей, почти 80% продавцов делают фотографии машины для объявлений с телефона.

Стартовали мы с обновления нашего приложения «ДромАвто»

В первый месяц «подача в один клик» крутилась только в приложении, мы собирали обратную связь. Потом подключили и браузерную версию.

Из интересного: люди не всегда фотографируют нужную сторону СТС. У документа две стороны: данные есть и на лицевой, и на обратной. На лицевой содержатся сведения про владельца, а на обратной — про машину. Сейчас мы придумали, как в момент съёмки сигнализировать пользователю, что он снимает не ту сторону.

В чем же магия

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

За большие данные отвечает база VIN-кодов из объявлений Drom.ru. VIN — это 17-значный номер, который выбит на кузове каждой машины. У одинаковых модификаций автомобилей он, как правило, имеет общую часть, поэтому, скормив миллионы значений нейронной сети, мы теперь по VIN умеем определять модель автомобиля, объем двигателя и другие параметры, а заодно проверять корректность заполнения СТС.

Вот так камера телефона видит СТС

Мы научились автоматом исправлять часть ошибок в полях СТС, понимать, какие параметры плохо пропечатаны или вышли за поля документа. Например, довольно распространённая ошибка в ГИБДД — недопечатаная мощность мотора в лошадиных силах. Она не влезает и переносится на оборотную сторону документа. Мы вычисляем «лошадей» по киловаттам, которые идут в той же строке. Это просто.

Второй пример сложнее. ГИБДД использует свою систему наименования автомобилей, которую можно охарактеризовать как «бог на душу положит». Chevrolet Aveo может в зависимости от эстетических предпочтений сотрудников ГИБДД называться «ШЕВРОЛЕ КLАS» или «СНЕVRОLЕТ КL1Т». С Hyundai Solaris такая же ситуация: «ХЕНДЭ СОЛЯРИС», «ХЕНДАЙ Solaris, «ХУНДАЙ СОЛЯРИС». Где-то даже проскакивал ожидаемый «ХРЕНДАЙ». Такой список названий от ГИБДД пополняется постоянно. С напором креатива справляемся с помощью роботов.

Результат распознавания данных СТС из предыдущего скрина

В результате система научилась распознавать, проверять и при неблагоприятных обстоятельствах восполнять следующие данные:

  • VIN.
  • Марку и модель. Преимущественно определяем по VIN, но если по нему уверенности нет, то модель распознаёт название по данным из СОР и проводит их валидацию через каталоги Drom.ru.
  • Серию и номер СТС.
  • Государственный номер автомобиля.
  • Тип кузова. Случаются ситуации, когда по VIN невозможно получить эти данные, или есть только номер кузова.
  • Цвет. Тут тоже всё не тривиально. ГИБДД использует свои цвета. Нам пришлось составить специальный словарь для работы с ними.
  • Объем двигателя, мощность, тип привода и коробки передач.

Спустя пять месяцев разработки на Drom.ru появился мощный инструмент, который не только сам заполняет объявление, но и может распознать, когда в СТС содержатся серьёзные ошибки или намеренно искаженные данные. Посмотрим на примере, как это работает.

В мае 2014 года Drom.ru купил на тест-драйв новый Skoda Rapid. В пылу радости от новой машины мы даже не обратили внимания, что в документах нам написали Skoda Fabia. А это две разные модели. И на взгляд любого инспектора ДПС — у нас «левые» документы. Пришлось ехать в ГИБДД, писать заявление и переделывать СТС.

Такие случаи мы теперь можем обнаружить при анализе VIN и других данных из СТС. Если показать тот неправильный документ нашей системе, она увидит ошибку.

Проверка корректности названия автомобиля в СТС

Результаты спустя месяц эксплуатации сервиса в реальных условиях:

  • За первые дни работы сервиса мы получили несколько сот положительных отзывов о новой функциональности и ноль отрицательных.
  • Заполнение формы новым способом занимает четыре минуты вместо прежних десяти. Основное время теперь люди тратят на творческое описание машины. А полет фантазии, понятное дело, уже сложно оптимизировать.
  • Количество пользователей, которые выбирают «подачу в один клик», на старте было 7%, сейчас уже 20%.

Система пока не идеальна, мы продолжаем её совершенствовать. Например, на днях столкнулись с тем, что Tesla Model S почему-то определялась как Opel.

Протестировать «подачу в один клик» можно в приложении «ДромАвто» или через браузер.

Что в планах

Доработать распознаватель. Есть сложные случаи в СТС, которые мы прямо сейчас учимся решать. Затем, когда сервис «Подача в один клик» будет работать сам собой и требовать редкой поддержки, будем разрабатывать новые функции.

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

0
4 комментария

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Алексей Шустов

Не пойму, зачем делать всю эту ненужную работу по определению параметров, если все необходимые данные можно получить из VIN-номер? Объясните плз, если я что-то не понимаю.

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Сергей Катеринич

Не у всех авто есть vin-номер. Дром очень популярен на Дальнем Востоке и Сибири, где в у населения очень много праворульных авто, у которых вин в принципе отсутствует (есть только номер кузова).

Ответить
Развернуть ветку
Валентин Буров

а будет расширенная версия где можно фотать птс?

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Дарья Хохлова

Пришлось удалить

Ответить
Развернуть ветку

Комментарий удален модератором

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