Как ВКонтакте научили нейросеть определять документы

Как ВКонтакте научили нейросеть определять документы, image #1

Публикуем последний доклад с прошедшего в Казани митапа VK Tech Talks, на котором разработчик команды исследований «ВКонтакте» Алексей Самарин рассказал о задаче распознавания документов.

В общем случае задача распознавания документов, как и любая другая задача компьютерного зрения, имеет множество контекстов, вариантов постановок, формулировок и т. п.

Как ВКонтакте научили нейросеть определять документы, image #2

Под распознаванием документов можно понимать:

  • классификацию изображений (по виду документов, по типу, по представленной о них информации);
  • детектирование определённых частей документа (например, те, что содержат некоторую персональную информацию о пользователе);
  • распознавание текста в разных частях документа;
  • верификацию типа документа;
  • распознавание факта манипуляции изображения.
Как ВКонтакте научили нейросеть определять документы, image #3

Рассмотрим два конкретных кейса, с которыми столкнулась команда VK. В результате было реализовано два решения, которые сейчас «крутятся» в продакшене.

Как ВКонтакте научили нейросеть определять документы, image #4

Первый кейс

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

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

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

Как ВКонтакте научили нейросеть определять документы, image #5

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

Детектирование манипуляций является довольно сложной задачей. Проработана она была должным образом недавно — в 2018 году на CVPR была заявлена работа RGB-N. Она представляет собой довольно сложную сеть — это своего рода нейросетевой ансамбль из двух стримов, который с одной стороны рассматривает srm feature с помощью сверхточного feature extractors, а с другой стороны таким же образом с другим feature extractors в другом стриме рассматривает результаты получения шумов с помощью srm-фильтра.

Srm-фильтр — это совокупная модель получения распределения шумов по фотографиям.

Как ВКонтакте научили нейросеть определять документы, image #6

Если RGB-N вставить как один из модулей архитектуры, упомянутой выше, то будет сложно поддерживать такую нагрузку в продакшене.

Как ВКонтакте научили нейросеть определять документы, image #7

Примерно такой уровень эвристики получается с помощью фильтров:

Как ВКонтакте научили нейросеть определять документы, image #8

Feature extractors нужны для анализа цветового компонента, это, как правило, сети VGG, MobileNet, Inception, ResNet и тп. Их можно применять как feature extractors.

Как ВКонтакте научили нейросеть определять документы, image #9

Это ещё больше утяжеляет модель. И когда дело доходит до Text Detection и нужно сделать быстро, то можно использовать Tesseract, но этого делать не стоит — это тяжёлый инструмент, который подразумевает, что произведён процессинг данных.

Существуют отдельные архитектуры, которые детектируют текст на документе — CTPN и EAST. Помимо этого, есть эвристические методы.

Если говорить о комплексных архитектурах, то это в первую очередь CTPN, CNN, Prior info, но они медленные. Помимо уже имеющихся медленных компонентов появляется ещё один, что делается только для того, чтобы локализовать текст должным образом, выровнять его и подать на вход движку, который будет это распознавать.

Как ВКонтакте научили нейросеть определять документы, image #10

Дальше всё передаётся на сетку, которая занимается распознаванием текста, здесь опять можно использовать Tesseract (если его до этого не использовали), можно натренировать свои классификаторы.

Как ВКонтакте научили нейросеть определять документы, image #11
Как ВКонтакте научили нейросеть определять документы, image #12
Как ВКонтакте научили нейросеть определять документы, image #13
1 of 3

Даже если комплексно аналитически просчитать, максимум выжали на каждой стадии, имеется прекрасный анализатор шума, который статически даёт прекрасный Precision и Recall, но проблема в том, что «ВКонтакте» использует динамический Data set, и предсказать возможности генерализации очень трудно. Поэтому с одной стороны поддерживать модульную или мультимодальную архитектуру хорошо, потому что можно явно выявить часть проблем и устранить их, но с другой стороны нужно облегчить модель, т. к. нужна скорость работы, чтобы понижать нагрузку на агентов восстановления.

Как ВКонтакте научили нейросеть определять документы, image #14

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

Как ВКонтакте научили нейросеть определять документы, image #15

Извлечение контуров производится с помощью кодировщика: берётся сет исходных изображений, и к ним применяются стандартные препроцессинги, которые выделяют контурные feature. Суть заключается в том, что для каждого изображения с каким-нибудь фиксированным классификатором выделяется преобразование, на котором, если кластеризовать группы изображений, будут максимальные метрики изображений.

Как ВКонтакте научили нейросеть определять документы, image #16

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

Робастность — свойство статистического метода, характеризующее независимость влияния на результат исследования различного рода выбросов, устойчивости к помехам.
Как ВКонтакте научили нейросеть определять документы, image #17

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

Как ВКонтакте научили нейросеть определять документы, image #18

Второй кейс

Все документы, которые отправляют пользователи друг другу, не находятся в общем доступе, но некоторые их иногда туда закидывают. Из-за заботы о пользователях эти документы изымаются из общего доступа. Здесь можно отметить метрику Recall, потому что необходимо максимально покрыть все документы с персональными данными, которые были индексированы для поиска. Так как уже есть базовое решение, которое покрывает предыдущий кейс, то можно им воспользоваться.

Как ВКонтакте научили нейросеть определять документы, image #19

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

Как ВКонтакте научили нейросеть определять документы, image #20

Надо отметить, что не все персональные данные критичные. На примере красным отмечено то, что в принципе не несёт большого вреда, а вот зелёным нужно убирать:

Как ВКонтакте научили нейросеть определять документы, image #21

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

Как ВКонтакте научили нейросеть определять документы, image #22

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

Как ВКонтакте научили нейросеть определять документы, image #23

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

Как ВКонтакте научили нейросеть определять документы, image #24

Существует довольно интересные вещи такие, как гомография. Это широко известный метод сопоставления однозначного отображения участка плоскости в другой участок плоскости, при условии, что мы знаем реальные размеры. Получаем нужное преобразование, преобразуя документ таким образом, чтобы можно было выделить нужные feature.

Как ВКонтакте научили нейросеть определять документы, image #25

Вся эта процедура объединяется в ректификацию — априорную локализацию объекта в пространстве, локализацию областей, различную статистическую оценку положения областей в пространстве и т. п.

Как ВКонтакте научили нейросеть определять документы, image #26

Ну и остаётся — вытащить нужные части и их как-то классифицировать, и добавить этот стрим в предыдущую сетку. Всё это уменьшает количество документов.

Как ВКонтакте научили нейросеть определять документы, image #27

Вот и всё!

Посмотреть презентацию полностью можно в трансляции:

Как ВКонтакте научили нейросеть определять документы, image #28
The Brown Room — независимое интернет-издание
о социальных сетях и современных технологиях

Автор: Лена Гамель
Корректор: Арсений Метелёв

257 views·3 shares