Любая заявка на получение кредита или страховки проходит процесс андеррайтинга, в ходе которого андеррайтер тщательно изучает представленные документы, кредитную историю и другие записи заявителя на получение кредита/страхования. Эта проверка проводится по очень важной причине, а именно для выяснения профиля риска заявителя: насколько вероятно, что он не выполнит свои обязательства по выплате кредита? Или, если страховка, они представляют собой высокую стоимость с точки зрения вызова страховых выплат? Этот профиль риска представляет собой решающий фактор при принятии решения о премии/процентной ставке заявителя.

Как вы понимаете, процесс андеррайтинга — очень сложная и дорогостоящая деятельность. Рассмотрим крупного кредитора в Индии. Обычно у них были бы тысячи офисов (филиалов + агентов); имея где-то около 4000 не удивительно. Они увидят (в зависимости от времени года) от нескольких сотен до 10 000 заявок на кредит в определенный день (в среднем, а иногда и выше в пик потребительского сезона). Чтобы лучше понять, вот краткий обзор типичного процесса андеррайтинга:

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

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

Проницательные читатели догадаются или заподозрят, что области, выделенные синим цветом, предназначены для извлечения релевантной текстовой информации (с учетом контекста) из загруженных документов. И это правильно. Когда мы говорим об извлечении текста из документов, источник на самом деле бывает двух типов: а) фактический текст в документах и ​​б) текст, доступный в виде изображений в этих документах. Тип a решается разумно — у нас есть экстракторы текста для документов разных форматов. Тип б, нет. Он относится к сфере OCR (оптическое распознавание символов).

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

Рассмотрим следующие примеры реальных документов клиента для карт PAN — удостоверение личности налогоплательщика в Индии (детали отредактированы для защиты личности налогоплательщика).

Нас интересует следующее: а) номер ИНН б) имя налогоплательщика в) имя отца/мужа налогоплательщика г) дата рождения д) дата выдачи карты.

Вот примеры пары карточек Aadhaar, из которых мы хотим извлечь а) Номер Aadhaar b) Имя c) Имя отца/мужа d) Дата рождения e) Дата выдачи f) Регистрационный номер g) Номер мобильного телефона.

Обратите внимание на текст, а также даты. На одном из изображений я также сохранил последние 3 буквы числа, чтобы дать представление о найденных проблемах. Вы также можете видеть, что некоторый текст (дата выпуска) выровнен по вертикали, что является проблемой для всех инструментов/сервисов OCR, которые я пробовал до настоящего времени. Например, если вы попробуете такой инструмент, как tesseract (проект, поддерживаемый Google) непосредственно на этих изображениях, вы не получите удовольствия от результатов.

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

Итак, возвращаясь к процессу андеррайтинга, нам нужно иметь возможность точно извлекать текст из таких документов, а затем передавать его в соответствующие целевые системы с помощью интеграции REST (или DB, API). Следующие результаты были получены на наборе данных, подобном приведенному выше (много других примеров таких документов клиентов, которые демонстрировали различные и разнообразные деградации):

  • Для карт PAN: 78,5% хитрейта
  • Для карт Aadhaar: 93,2% хитрейта

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

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

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

  • Большое разнообразие условий освещения и устройств-источников (сканеры, различные модели мобильных телефонов и т. д.) изображений.
  • Перекошенные, повернутые или растянутые изображения. Некоторые имеют вертикальный текст в портретной ориентации, а другие - вертикальный в альбомной ориентации (это происходит в основном для карточек Aadhaar).
  • Большая вариабельность яркости и контрастности на изображениях, иногда даже на одном изображении.
  • Некоторые изображения имеют подпись, проходящую через интересующую область, или даже штамп. У одних есть фото владельца, у других нет
  • Некоторые изображения явно ухудшены с очень плохим качеством фотографий в целом.
  • В случае карт PAN область интереса (RoI) отличается тем, где она находится на карте, в зависимости от того, когда карта была выпущена и какая государственная организация ее выпустила. Иногда область интереса может быть недоступна
  • В случае с картами Aadhaar, RoI различается не только по местоположению, но и по количеству в зависимости от того, когда карта была выпущена и какая версия карты была доступна. Это означает, что некоторые карты имеют только 4–5 областей интереса, в то время как другие могут иметь более 8 областей интереса.
  • В карточках PAN на некоторых карточках есть фоновое изображение Махатмы Ганди, а области интересов накладываются поверх них.
  • Для обоих типов карт якорный текст (например, «Имя», «Имя отца», «Дата рождения» и т. д.) не всегда может быть доступен на карте.

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

Общедоступная литература (и код) по методам OCR, по-видимому, сосредоточена на:

  • Ограниченные типы ухудшения качества исходного изображения. Многие из них просто не соответствуют моему набору данных.
  • Искусственно ввести контролируемую деградацию, а затем использовать некоторые методы для ее исправления, а затем разрешить извлечения.
  • Лучше работать с цветными изображениями (мой набор данных исключительно в оттенках серого)

Я хотел бы поделиться своими знаниями и выводами, которые помогли прийти к таким результатам. Однако я не смогу поделиться какими-либо подробностями или кодом из-за ограничений конфиденциальности.

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

Вот обзор моего метода, а за ним следуют советы.

  • Предварительная обработка изображений обязательна. Вы должны понимать методы обработки изображений и то, что они могут дать с точки зрения получения хорошего извлечения текста.
  • Один метод предварительной обработки или одна последовательность различных методов предварительной обработки могут не работать, если у вас есть набор данных с высокой изменчивостью, такой как мой.
  • Для извлечения текста рассмотрите как обнаружение текстовых областей (RoI) на изображении, так и само извлечение текста как отдельные этапы. Это позволяет сосредоточить извлечение только на области интереса и избежать посторонних данных.
  • Используйте несколько итераций и разумное сочетание (предварительная обработка изображения + обнаружение текста + извлечение текста), чтобы получить результаты извлечения. Варьируйте методы предварительной обработки изображений и обнаружения-извлечения текста, а также их последовательность в каждой итерации микса. В итоге вы получите несколько результатов из одного файла изображения.
  • Завершение результатов является ключевым действием после извлечения. Хотя у вас есть несколько результатов после извлечения, обратите внимание, что не все результаты могут быть пригодны для использования. Иногда вам может потребоваться сопоставить извлечения частей между результатами, чтобы получить полный и точный результат. Для получения окончательного результата может потребоваться использование подхода дерева решений, взвешенного с учетом определенных факторов.
  • Автоматическая проверка детали, а также завершенных результатов необходима для обеспечения точности. Валидация иногда также помогает исправить или просто дополнить результаты.

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

  • Примечание о методах обработки изображений: морфологическая обработка, настраиваемые срединные фильтры, повышение DPI при сохранении соотношения сторон, изменение яркости, изменение динамического диапазона между полностью черным и белым, фильтрация фона с использованием фильтров, специфичных для изображения и оптимальных размеров, сглаживающий фильтр. Также обрабатывайте изображение разных размеров, а не только исходный размер.
  • Примечание по методам обнаружения и извлечения текста: используйте EAST и SWT для обнаружения текстовых областей. EAST использует FCN (полностью сверточная сеть), в то время как SWT использует концепцию ширины штриха. Используйте tesseract (использует нейронную сеть на основе LSTM, а также устаревшее распознавание образов символов) и ocrad для извлечения текста. Возможно, вам придется работать с несколькими конфигурациями tesseract и ocrad, чтобы получить полезные результаты.
  • Примечание о методах обработки результатов. Для текста, представляющего имена, используйте методы NLProc (обработка естественного языка), такие как распознавание именованных сущностей и частей речи, а также традиционные методы, такие как поиск по словарю. Для адресов используйте распознаватели адресов в тандеме с методами NLProc. Для таких чисел, как даты и номера PAN или Aadhaar, вы можете использовать соответствующие регулярные выражения для проверки. В случае частичных результатов вам необходимо сопоставить их между файлами результатов во время обработки, чтобы получить полный и точный результат. Если все сделано правильно, это может (в некоторых случаях) помочь завершить извлечение частей даже PAN, номеров Aadhaar и дат.

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