Обрабатывайте ипотечные документы с помощью интеллектуальной обработки документов с помощью Amazon Textract и Amazon Comprehend PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Обрабатывайте ипотечные документы с помощью интеллектуальной обработки документов с помощью Amazon Textract и Amazon Comprehend

Организации в сфере кредитования и ипотеки ежедневно обрабатывают тысячи документов. От новой заявки на ипотеку до рефинансирования ипотеки — эти бизнес-процессы включают сотни документов на заявку. На сегодняшний день существует ограниченная автоматизация для обработки и извлечения информации из всех документов, особенно из-за различных форматов и макетов. Из-за большого объема приложений сбор стратегических идей и получение ключевой информации из содержимого является трудоемким, часто выполняемым вручную, подверженным ошибкам и дорогостоящим процессом. Устаревшие инструменты оптического распознавания символов (OCR) слишком дороги, подвержены ошибкам, требуют много настроек и трудно масштабируются. Интеллектуальная обработка документов (IDP) с сервисами искусственного интеллекта (ИИ) AWS помогает автоматизировать и ускорить обработку заявок на ипотеку с целью принятия более быстрых и качественных решений при одновременном снижении общих затрат.

В этом посте мы покажем, как вы можете использовать возможности машинного обучения (ML) с Амазонка Тексткачества Amazon Comprehend для обработки документов в новой ипотечной заявке, без необходимости навыков ML. Мы рассмотрим различные этапы IDP, как показано на следующем рисунке, и то, как они связаны с этапами процесса подачи заявки на ипотеку, такими как подача заявки, андеррайтинг, проверка и закрытие.

Хотя каждая заявка на ипотеку может быть уникальной, мы приняли во внимание некоторые из наиболее распространенных документов, которые включаются в заявку на ипотеку, такие как форма Единой заявки на жилищный кредит (URLA-1003), формы 1099 и ипотечная нота.

Обзор решения

Amazon Textract — это сервис машинного обучения, который автоматически извлекает текст, почерк и данные из отсканированных документов с использованием предварительно обученных моделей машинного обучения. Amazon Comprehend — это сервис обработки естественного языка (NLP), который использует машинное обучение для выявления ценных сведений и связей в тексте, а также может выполнять классификацию документов, распознавание объектов имен (NER), тематическое моделирование и многое другое.

На следующем рисунке показаны этапы IDP по отношению к этапам процесса подачи заявки на ипотеку.

На изображении показана высокоуровневая архитектура решения для этапов интеллектуальной обработки документов (IDP) применительно к этапам подачи заявки на ипотеку.

В начале процесса документы загружаются в Простой сервис хранения Amazon (Amazon S3) ведро. Это инициирует процесс классификации документов для распределения документов по известным категориям. После того, как документы классифицированы, следующим шагом будет извлечение из них ключевой информации. Затем мы выполняем обогащение для выбранных документов, что может быть связано с такими вещами, как редактирование личной информации (PII), маркировка документов, обновление метаданных и многое другое. Следующий шаг включает в себя проверку данных, извлеченных на предыдущих этапах, чтобы обеспечить полноту заявки на ипотеку. Проверка может быть выполнена с помощью правил бизнес-проверки и правил перекрестной проверки документов. Показатели достоверности извлеченной информации также можно сравнить с установленным порогом и автоматически направить рецензенту через Amazon увеличил AI (Amazon A2I), если пороговое значение не достигнуто. На заключительном этапе процесса извлеченные и проверенные данные отправляются в нижестоящие системы для дальнейшего хранения, обработки или анализа данных.

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

Хранение документов

Amazon S3 — это сервис хранения объектов, предлагающий лучшую в отрасли масштабируемость, доступность данных, безопасность и производительность. Мы используем Amazon S3 для безопасного хранения ипотечных документов во время и после подачи заявки на ипотеку. А пакет документов на ипотеку может содержать несколько типов форм и документов, таких как URLA-1003, 1099-INT/DIV/RR/MISC, W2, платежные квитанции, банковские выписки, выписки по кредитным картам и многое другое. Эти документы предоставляются заявителем на этапе подачи заявки на ипотеку. Без просмотра их вручную может быть не сразу ясно, какие документы включены в пакет. Этот ручной процесс может быть трудоемким и дорогостоящим. На следующем этапе мы автоматизируем этот процесс с помощью Amazon Comprehend, чтобы с высокой точностью классифицировать документы по соответствующим категориям.

Классификация документов

Классификация документов — это метод, с помощью которого можно классифицировать и маркировать большое количество неидентифицированных документов. Мы выполняем эту классификацию документов с помощью Amazon Comprehend. специальный классификатор. Пользовательский классификатор — это модель машинного обучения, которую можно обучить с помощью набора помеченных документов для распознавания интересующих вас классов. После того, как модель обучена и развернута за размещенной конечной точкой, мы можем использовать классификатор для определения категории (или класса), к которой принадлежит конкретный документ. В этом случае мы обучаем пользовательский классификатор в мультиклассовый режим, что можно сделать с помощью CSV-файла или расширенного файла манифеста. В целях этой демонстрации мы используем файл CSV для обучения классификатора. Обратитесь к нашему Репозиторий GitHub для полного примера кода. Ниже приводится общий обзор необходимых шагов:

  1. Извлечение простого текста в кодировке UTF-8 из файлов изображений или PDF с помощью Amazon Textract ДетектДокументТекст API.
  2. Подготовьте обучающие данные для обучения пользовательского классификатора в формате CSV.
  3. Обучите пользовательский классификатор с помощью CSV-файла.
  4. Разверните обученную модель с конечной точкой для классификации документов в реальном времени или используйте режим нескольких классов, который поддерживает как операции в реальном времени, так и асинхронные операции.

Следующая диаграмма иллюстрирует этот процесс.

На изображении показан процесс обучения пользовательского классификатора Amazon Comprehend и классификация документов с использованием обученной и развернутой модели классификатора (в режиме реального времени или в пакетном режиме).

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

Извлечение документа

На этом этапе мы извлекаем данные из документа с помощью Amazon Textract и Amazon Comprehend. Для структурированных и полуструктурированных документов, содержащих формы и таблицы, мы используем Amazon Textract. АнализДокумент API. Для специализированных документов, таких как документы, удостоверяющие личность, Amazon Textract предоставляет АнализИД API. Некоторые документы могут также содержать плотный текст, и вам может потребоваться извлечь из них ключевые термины, характерные для бизнеса, также известные как лиц, Мы используем пользовательское распознавание объектов способность Amazon Comprehend обучать пользовательский распознаватель сущностей, который может идентифицировать такие сущности из плотного текста.

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

Извлечение данных из единого заявления на жилищный кредит URLA-1003

Единая заявка на жилищный кредит (URLA-1003) — это стандартная форма заявки на получение ипотечного кредита в отрасли. Это довольно сложный документ, который содержит информацию о заявителе на получение ипотечного кредита, типе приобретаемой недвижимости, сумме финансирования и другие сведения о характере покупки недвижимости. Ниже приведен образец URLA-1003, и мы намерены извлечь информацию из этого структурированного документа. Поскольку это форма, мы используем API AnalyzeDocument с типом функции ФОРМА.

На изображении показан образец формы единого заявления на жилищный кредит URLA-1003.

Тип функции FORM извлекает информацию формы из документа, которая затем возвращается в формате пары ключ-значение. В следующем фрагменте кода используется amazon-textract-textractor Библиотека Python для извлечения информации из формы всего несколькими строками кода. Метод удобства call_textract() называет AnalyzeDocument внутри API, и параметры, передаваемые в метод, абстрагируют некоторые конфигурации, необходимые API для выполнения задачи извлечения. Document — это удобный метод, используемый для анализа ответа JSON от API. Он обеспечивает абстракцию высокого уровня и делает вывод API итерируемым, из которого легко извлекать информацию. Для получения дополнительной информации см. Парсер текстовых ответов и Текстрактор.

from textractcaller.t_call import call_textract, Textract_Features
from trp import Document

response_urla_1003 = call_textract(input_document='s3://<your-bucket>/URLA-1003.pdf', 
                                   features=[Textract_Features.FORMS])
doc_urla_1003 = Document(response_urla_1003)
for page in doc_urla_1003.pages:
    forms=[]
    for field in page.form.fields:
        obj={}
        obj[f'{field.key}']=f'{field.value}'
        forms.append(obj)
print(json.dumps(forms, indent=4))

Обратите внимание, что выходные данные содержат значения для флажков или переключателей, которые существуют в форме. Например, в образце документа URLA-1003 Купите был выбран вариант. Соответствующий вывод для переключателя извлекается как «Purchase(ключ) и «SELECTED” (значение), указывающее, что переключатель был выбран.

[
    { "No. of Units": "1" },
    { "Amount": "$ 450,000.00" },
    { "Year Built": "2010" },
    { "Purchase": "SELECTED" },
    { "Title will be held in what Name(s)": "Alejandro Rosalez" },
    { "Fixed Rate": "SELECTED" },
    ...
]

Извлечение данных из 1099 форм

Пакет заявки на ипотеку может также содержать ряд документов IRS, таких как 1099-DIV, 1099-INT, 1099-MISC и 1099-R. Эти документы показывают доходы заявителя в виде процентов, дивидендов и других компонентов различных доходов, которые полезны во время андеррайтинга для принятия решений. На следующем изображении показана коллекция этих документов, которые похожи по структуре. Однако в некоторых случаях документы содержат информацию формы (отмеченную красной и зеленой ограничивающими рамками), а также табличную информацию (отмеченную желтыми ограничивающими рамками).

На изображении показаны образцы 1099 форм INT, DIV, MISC и R.

Для извлечения информации из формы мы используем аналогичный код, который объяснялся ранее с помощью AnalyzeDocument API. Мы передаем дополнительную функцию ТАБЛИЦА в API, чтобы указать, что нам нужны как данные формы, так и данные таблицы, извлеченные из документа. В следующем фрагменте кода используется AnalyzeDocument API с функциями FORMS и TABLES в документе 1099-INT:

from textractcaller.t_call import call_textract, Textract_Features
from trp import Document
response_1099_int = call_textract(input_document='s3://<your-bucket>/1099-INT-2018.pdf',
                                  features=[Textract_Features.TABLES, 
                                            Textract_Features.FORMS])
doc_1099_int = Document(response_1099_int)
num_tables=1
for page in doc_1099_int.pages:     
    for table in page.tables:
        num_tables=num_tables+1
        for r, row in enumerate(table.rows):
            for c, cell in enumerate(row.cells):
                print(f"Cell[{r}][{c}] = {cell.text}")
        print('n')

Поскольку документ содержит одну таблицу, вывод кода выглядит следующим образом:

Table 1
-------------------
Cell[0][0] = 15 State 
Cell[0][1] = 16 State identification no. 
Cell[0][2] = 17 State tax withheld 
Cell[1][0] = 
Cell[1][1] = 34564 
Cell[1][2] = $ 2000 
Cell[2][0] = 
Cell[2][1] = 23543 
Cell[2][2] = $ 1000

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

from textractprettyprinter.t_pretty_print import Textract_Pretty_Print, get_string, Pretty_Print_Table_Format
print(get_string(textract_json=response_1099_int, 
                 table_format=Pretty_Print_Table_Format.grid, 
                 output_type=[Textract_Pretty_Print.TABLES]))

Получаем такой вывод:

+----------+-----------------------------+-----------------------+
| 15 State | 16 State identification no. | 17 State tax withheld |
+----------+-----------------------------+-----------------------+
|          | 34564                       | $ 2000                |
+----------+-----------------------------+-----------------------+
|          | 23543                       | $ 1000                |
+----------+-----------------------------+-----------------------+

Чтобы получить выходные данные в удобном для использования формате CSV, тип формата Pretty_Print_Table_Format.csv можно передать в table_format параметр. Также поддерживаются другие форматы, такие как TSV (значения, разделенные табуляцией), HTML и Latex. Для получения дополнительной информации см. Text-PrettyPrinter.

Извлечение данных из ипотечной записки

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

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

На изображении показан образец документа об ипотечной ноте.

Для первого подхода используем Query и QueriesConfig удобные методы для настройки набора вопросов, которые передаются в Amazon Textract AnalyzeDocument вызов API. Если документ многостраничный (PDF или TIFF), мы также можем указать номера страниц, на которых Amazon Textract должен искать ответы на вопрос. В следующем фрагменте кода показано, как создать конфигурацию запроса, выполнить вызов API и впоследствии проанализировать ответ, чтобы получить ответы из ответа:

from textractcaller import QueriesConfig, Query
import trp.trp2 as t2

#Setup the queries
query2 = Query(text="What is the principal amount borrower has to pay?", alias="PRINCIPAL_AMOUNT", pages=["1"])
query4 = Query(text="What is the monthly payment amount?", alias="MONTHLY_AMOUNT", pages=["1"])

#Setup the query config with the above queries
queries_config = QueriesConfig(queries=[query1, query2, query3, query4])
#Call AnalyzeDocument with the queries_config
response_mortgage_note = call_textract(input_document='s3://<your-bucket>/Mortgage-Note.pdf',
                                       features=[Textract_Features.QUERIES],
                                       queries_config=queries_config)
doc_mortgage_note: t2.TDocumentSchema = t2.TDocumentSchema().load(response_mortgage_note) 

entities = {}
for page in doc_mortgage_note.pages:
    query_answers = doc_mortgage_note.get_query_answers(page=page)
    if query_answers:
        for answer in query_answers:
            entities[answer[1]] = answer[2]
print(entities)

Получаем такой вывод:

{
    'PRINCIPAL_AMOUNT': '$ 555,000.00',
    'MONTHLY_AMOUNT': '$2,721.23',
}

Для второго подхода мы используем Amazon Comprehend. Обнаружение объектов API с ипотечной запиской, который возвращает объекты, которые он обнаруживает в тексте, из предопределенный набор сущностей. Это сущности, с которыми предварительно обучен распознаватель сущностей Amazon Comprehend. Однако, поскольку нашим требованием является обнаружение определенных сущностей, пользовательский распознаватель сущностей Amazon Comprehend обучается с помощью набора образцов документов по закладным и списка сущностей. Мы определяем имена объектов как PRINCIPAL_AMOUNT и MONTHLY_AMOUNT. Данные для обучения готовятся после обучения Amazon Comprehend. руководство по подготовке данных для пользовательского распознавания объектов. Распознаватель сущностей можно обучить с помощью аннотации к документам или с списки объектов. Для целей этого примера мы используем списки сущностей для обучения модели. После того, как мы обучим модель, мы можем развернуть ее с помощью конечная точка в реальном времени или в пакетный режим для обнаружения двух объектов из содержимого документа. Ниже приведены шаги, необходимые для обучения пользовательского распознавателя сущностей и его развертывания. Полное пошаговое руководство по коду см. в нашем репозитории GitHub.

  1. Подготовьте обучающие данные (список сущностей и документы в текстовом формате (в кодировке UTF-8)).
  2. Запустите обучение распознаванию сущностей, используя СоздатьEntityRecouncer API с использованием обучающих данных.
  3. Разверните обученную модель с конечной точкой в ​​реальном времени, используя Создать конечную точку API.

Извлечь данные из паспорта США

Текст Амазонки анализ документов, удостоверяющих личность может обнаруживать и извлекать информацию из документов, удостоверяющих личность, находящихся в США, таких как водительские права и паспорт. AnalyzeID API способен обнаруживать и интерпретировать подразумеваемые поля в документах, удостоверяющих личность, что упрощает извлечение конкретной информации из документа. Документы, удостоверяющие личность, почти всегда являются частью пакета заявки на ипотеку, поскольку они используются для проверки личности заемщика в процессе андеррайтинга и для проверки правильности биографических данных заемщика.

На изображении показан образец паспорта США.

Мы используем удобный метод с именем call_textract_analyzeid, который вызывает AnalyzeID API внутри. Затем мы перебираем ответ, чтобы получить обнаруженные пары ключ-значение из документа ID. См. следующий код:

from textractcaller import call_textract_analyzeid
import trp.trp2_analyzeid as t2id

response_passport = call_textract_analyzeid(document_pages=['s3://<your-bucket>/Passport.pdf'])
doc_passport: t2id.TAnalyzeIdDocument = t2id.TAnalyzeIdDocumentSchema().load(response_passport)

for id_docs in response_passport['IdentityDocuments']:
    id_doc_kvs={}
    for field in id_docs['IdentityDocumentFields']:
        if field['ValueDetection']['Text']:
            id_doc_kvs[field['Type']['Text']] = field['ValueDetection']['Text']
print(id_doc_kvs)

AnalyzeID возвращает информацию в структуре, называемой IdentityDocumentFields, который содержит нормализованные ключи и соответствующие им значения. Например, в следующем выводе FIRST_NAME является нормализованным ключом, а значение равно ALEJANDRO. На изображении паспорта в качестве примера поле для имени помечено как «Имена/Prénoms/Nombre», однако AnalyzeID смог нормализовать это в ключевое имя FIRST_NAME. Список поддерживаемых нормализованных полей см. Объекты ответа Identity Documentation.

{
    'FIRST_NAME': 'ALEJANDRO',
    'LAST_NAME': 'ROSALEZ',
    'DOCUMENT_NUMBER': '918268822',
    'EXPIRATION_DATE': '31 JAN 2029',
    'DATE_OF_BIRTH': '15 APR 1990',
    'DATE_OF_ISSUE': '29 JAN 2009',
    'ID_TYPE': 'PASSPORT',
    'ENDORSEMENTS': 'SEE PAGE 27',
    'PLACE_OF_BIRTH': 'TEXAS U.S.A.'
}

Ипотечный пакет может содержать несколько других документов, таких как платежная квитанция, форма W2, выписка из банка, выписка по кредитной карте и письмо с подтверждением занятости. У нас есть образцы для каждого из этих документов вместе с кодом, необходимым для извлечения из них данных. Для получения полной базы кода ознакомьтесь с блокнотами в нашем Репозиторий GitHub.

Обогащение документа

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

В предыдущем образце платежной квитанции мы выполняем редактирование данных PII, таких как SSN, имя, номер банковского счета и даты. Чтобы идентифицировать данные PII в документе, мы используем Amazon Comprehend. Обнаружение персональных данных возможности через Обнаружение PIIentities API. Этот API проверяет содержимое документа, чтобы определить наличие информации PII. Поскольку этот API требует ввода в формате обычного текста в кодировке UTF-8, мы сначала извлекаем текст из документа с помощью Amazon Textract. ДетектДокументТекст API, который возвращает текст из документа, а также возвращает информацию о геометрии, такую ​​как размеры ограничивающей рамки и координаты. Комбинация обоих выходных данных затем используется для редактирования документа в рамках процесса обогащения.

Просмотр, проверка и интеграция данных

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

Третий тип проверки связан с оценкой достоверности извлеченных данных на этапе извлечения документа. Amazon Textract и Amazon Comprehend возвращают оценку достоверности для форм, таблиц, текстовых данных и обнаруженных сущностей. Вы можете настроить пороговое значение оценки достоверности, чтобы убедиться, что в нисходящий поток передаются только правильные значения. Это достигается с помощью Amazon A2I, который сравнивает показатели достоверности обнаруженных данных с предварительно заданным порогом достоверности. Если пороговое значение не достигнуто, документ и извлеченные выходные данные направляются человеку для просмотра через интуитивно понятный пользовательский интерфейс. Рецензент корректирует данные и сохраняет их для дальнейшей обработки. Для получения дополнительной информации см. Основные концепции Amazon A2I.

Заключение

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

В качестве следующего шага вы можете опробовать примеры кода и записные книжки в нашем Репозиторий GitHub. Чтобы узнать больше о том, как IDP может помочь вам с рабочими нагрузками по обработке документов, посетите Автоматизируйте обработку данных из документов.


Об авторах

Обрабатывайте ипотечные документы с помощью интеллектуальной обработки документов с помощью Amazon Textract и Amazon Comprehend PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Анжан Бисвас является старшим архитектором решений AI Services, специализирующимся на AI/ML и аналитике данных. Анджан является частью всемирной группы по обслуживанию ИИ и работает с клиентами, помогая им понять и разработать решения бизнес-проблем с помощью ИИ и машинного обучения. Анджан имеет более чем 14-летний опыт работы с глобальными цепочками поставок, производственными и розничными организациями и активно помогает клиентам начать работу и масштабировать сервисы AWS AI.

Обрабатывайте ипотечные документы с помощью интеллектуальной обработки документов с помощью Amazon Textract и Amazon Comprehend PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Двити Патхак является старшим техническим менеджером по работе с клиентами из Сан-Диего. Она сосредоточена на том, чтобы помочь полупроводниковой промышленности вовлечься в AWS. В свободное время она любит читать о новых технологиях и играть в настольные игры.

Обрабатывайте ипотечные документы с помощью интеллектуальной обработки документов с помощью Amazon Textract и Amazon Comprehend PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Баладжи Пули является архитектором решений из Бэй Эриа, Калифорния. В настоящее время помогает избранным клиентам медико-биологической сферы здравоохранения на северо-западе США ускорить внедрение облака AWS. Баладжи любит путешествовать и любит исследовать разные кухни.

Отметка времени:

Больше от Машинное обучение AWS