Как мы научили нейросети читать паспорта: история борьбы с бликами, водяными знаками и кривыми фото

в 16:03, , рубрики: ocr, OCR-технологии, документы удостоверяющие личность, паспорт, паспорта, распознавание изображений, распознавание образов, распознавание текста
Как мы научили нейросети читать паспорта: история борьбы с бликами, водяными знаками и кривыми фото - 1

Привет! 

Если вы когда-либо сталкивались с автоматическим распознаванием документов, то знаете, насколько сложно работать с документами удостоверяющими личность (ID-документами). Хотя, казалось бы, что может быть проще, чем распознать фото паспорта, но на практике это может вызывать сложности у OCR-алгоритмов. Ведь паспорта, водительские удостоверения и другие ID-формы часто содержат сложные фоны, голограммы, блики от ламинации и т.п.

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

Под катом расскажем, как нам удалось повысить точность распознавания ID-документов на 40%, какие технологии за этим стоят и почему старые методы перестали справляться с современными вызовами. 

Проблемы старого подхода к распознаванию паспортов

Изначально у нас было две основные технологии распознавания ID-документов: «нейропаспорт» и общий механизм для любых документов. «Нейропаспорт» —  нейросетевой механизм, заточенный исключительно под паспорта. Он работал быстро (2–3 секунды на документ), но стоило ему встретить паспорт с незнакомым шрифтом (например, старый советский образец) или нестандартным оформлением (например, зарубежный паспорт) — качество распознавания сразу падало. 

В рамках общего механизма обработки документов мы не использовали нейросети для поиска текста — строки собирались из отдельных растровых компонентов, найденных после бинаризации. Для распознавания текста применялась либо LSTM-нейросеть, либо классические (не нейросетевые) методы. На стандартных офисных документах эта технология работала прекрасно. Однако на ID-документах с бликами, водяными знаками и сложным фоном нередко могли возникать ошибки.

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

Как мы научили нейросети читать паспорта: история борьбы с бликами, водяными знаками и кривыми фото - 2
Как мы научили нейросети читать паспорта: история борьбы с бликами, водяными знаками и кривыми фото - 3
Как мы научили нейросети читать паспорта: история борьбы с бликами, водяными знаками и кривыми фото - 4
Как мы научили нейросети читать паспорта: история борьбы с бликами, водяными знаками и кривыми фото - 5

Мы хотели приблизить качество распознавания ID-документов к 100%, поэтому начали тестировать новый алгоритм.

Новая схема работы алгоритма обработки паспортов и других ID-форм
Новая схема работы алгоритма обработки паспортов и других ID-форм

Новый подход: умная классификация, трансформеры и исправление перспективы

Мы полностью пересмотрели процесс обработки документов. Ключевые изменения описаны далее.

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

Для баланса между скоростью и качеством работы нового классификатора мы использовали нейросетевую модель на основе MobileNet. 

Исправление перспективы. Разработали специальный «паспортный кроп». С его помощью мы научили систему самостоятельно находить границы страницы (даже если они частично закрыты), довернуть верхнюю часть, как будто страница лежит ровно и автоматически определять ориентацию (горизонтальную/вертикальную). В итоге получаем ровный, читаемый документ, даже если изначально он был снят под углом 45 градусов.

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

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

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

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

Старые алгоритмы распознавали серые сканы паспортов с большим количеством ошибок, теряя значения некоторых полей

Старые алгоритмы распознавали серые сканы паспортов с большим количеством ошибок, теряя значения некоторых полей

Распознавание текста: трансформеры вместо LSTM. Старую LSTM-архитектуру мы заменили на трансформерную. Обучили две специализированные модели: общую для кириллицы и для MRZ (машинно-читаемой зоны на паспорте).

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

Для распознавания печатного текста использовали трансформерную модель, которую дообучили работать с кириллицей и шумами. А для MRZ создали отдельную модель, учитывающую ее строгую структуру. Алгоритм проверяет, чтобы определенные символы в MRZ соответствовали расчетным значениям. Если нет — значит, где-то ошибка распознавания, и такие данные лучше не использовать.

Извлечение данных с приоритетом MRZ. Если MRZ распознан корректно (совпадают контрольные суммы), система автоматически берет данные из него — это снижает ошибки при извлечении ключевых полей (ФИО, серия, номер). Если MRZ нельзя распознать с высокой степенью точности, то для извлечения данных используется «гибкое описание» (поиск полей по шаблонам). 

Результаты

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

Прежние технологии смогли идеально распознать всего 184 документа — это наш отправной уровень. «Нейропаспорт», несмотря на свою скорость, показал результат в 310 безупречно обработанных документов. А новая модель продемонстрировала значительный рывок — 428 документов с абсолютно точным распознаванием (метрика PassThrough Rate). Разница между новым решением и «нейропаспортом» составила почти 40% — именно настолько увеличилось количество идеально обработанных документов.

Почему мы выбрали метрику PassThrough Rate?

В реальной работе нам и заказчикам критически важно минимизировать участие верификаторов. PassThrough Rate — это именно та метрика, которая показывает, насколько система действительно автоматизирована. Чем выше PassThrough Rate, тем больше документов проходят сквозь систему мгновенно, сокращая нагрузку на сотрудников.

Как мы научили нейросети читать паспорта: история борьбы с бликами, водяными знаками и кривыми фото - 9

Вывод

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

Что дальше? 

Планируем доработать классификатор для смешанных пакетов, добавить поддержку СНИЛС и водительских удостоверений, а также ускорить обработку фотографий (сейчас они требуют больше времени, чем сканы). 

Поделитесь в комментариях, как решаете проблемы сложных фонов на ID-документах? 

Автор: ContentAI_Team

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js