Processe documentos de hipoteca com processamento inteligente de documentos usando Amazon Textract e Amazon Comprehend PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Processe documentos de hipoteca com processamento inteligente de documentos usando Amazon Textract e Amazon Comprehend

Organizações do setor de empréstimos e hipotecas processam milhares de documentos diariamente. De um novo pedido de hipoteca ao refinanciamento de hipoteca, esses processos de negócios envolvem centenas de documentos por pedido. Há automação limitada disponível hoje para processar e extrair informações de todos os documentos, especialmente devido aos formatos e layouts variados. Devido ao alto volume de aplicativos, capturar insights estratégicos e obter informações importantes do conteúdo é um processo demorado, altamente manual, sujeito a erros e caro. As ferramentas legadas de reconhecimento óptico de caracteres (OCR) têm custo proibitivo, são propensas a erros, envolvem muita configuração e são difíceis de dimensionar. O processamento inteligente de documentos (IDP) com os serviços de inteligência artificial (AI) da AWS ajuda a automatizar e acelerar o processamento de aplicativos de hipoteca com objetivos de decisões mais rápidas e de qualidade, reduzindo os custos gerais.

Nesta postagem, demonstramos como você pode utilizar os recursos de aprendizado de máquina (ML) com amazontext e Amazon Comprehend para processar documentos em um novo pedido de hipoteca, sem a necessidade de habilidades de ML. Exploramos as várias fases do IDP, conforme mostrado na figura a seguir, e como elas se conectam às etapas envolvidas em um processo de solicitação de hipoteca, como envio de solicitação, subscrição, verificação e fechamento.

Embora cada solicitação de hipoteca possa ser única, levamos em consideração alguns dos documentos mais comuns incluídos em uma solicitação de hipoteca, como o formulário de solicitação de empréstimo residencial unificado (URLA-1003), formulários 1099 e nota de hipoteca.

Visão geral da solução

O Amazon Textract é um serviço de ML que extrai automaticamente texto, manuscrito e dados de documentos digitalizados usando modelos de ML pré-treinados. O Amazon Comprehend é um serviço de processamento de linguagem natural (NLP) que usa ML para descobrir informações e conexões valiosas em texto e pode realizar classificação de documentos, reconhecimento de entidade de nome (NER), modelagem de tópicos e muito mais.

A figura a seguir mostra as fases do IDP no que se refere às fases de um processo de solicitação de hipoteca.

A imagem mostra uma arquitetura de solução de alto nível para as fases de processamento inteligente de documentos (IDP) relacionadas às etapas de um pedido de hipoteca.

No início do processo, os documentos são carregados em um Serviço de armazenamento simples da Amazon (Amazon S3). Isso inicia um processo de classificação de documentos para categorizar os documentos em categorias conhecidas. Depois que os documentos são categorizados, o próximo passo é extrair deles as principais informações. Em seguida, realizamos o enriquecimento para documentos selecionados, que podem ser coisas como redação de informações de identificação pessoal (PII), marcação de documentos, atualizações de metadados e muito mais. A próxima etapa envolve a validação dos dados extraídos nas fases anteriores para garantir a integridade de um pedido de hipoteca. A validação pode ser feita por meio de regras de validação de negócios e regras de validação cruzada de documentos. As pontuações de confiança das informações extraídas também podem ser comparadas a um limite definido e roteadas automaticamente para um revisor humano por meio de IA aumentada da Amazon (Amazon A2I) se o limite não for atendido. Na fase final do processo, os dados extraídos e validados são enviados para sistemas downstream para armazenamento adicional, processamento ou análise de dados.

Nas seções a seguir, discutimos detalhadamente as fases do IDP no que se refere às fases de um pedido de hipoteca. Percorremos as fases do IDP e discutimos os tipos de documentos; como armazenamos, classificamos e extraímos informações e como enriquecemos os documentos usando aprendizado de máquina.

Armazenamento de documentos

O Amazon S3 é um serviço de armazenamento de objetos que oferece escalabilidade, disponibilidade de dados, segurança e desempenho líderes do setor. Usamos o Amazon S3 para armazenar com segurança os documentos da hipoteca durante e após o processo de solicitação de hipoteca. UMA pacote de pedido de hipoteca pode conter vários tipos de formulários e documentos, como URLA-1003, 1099-INT/DIV/RR/MISC, W2, holerites, extratos bancários, extratos de cartão de crédito e muito mais. Estes documentos são apresentados pelo requerente na fase de pedido de hipoteca. Sem examiná-los manualmente, pode não ser imediatamente claro quais documentos estão incluídos no pacote. Este processo manual pode ser demorado e caro. Na próxima fase, automatizamos esse processo usando o Amazon Comprehend para classificar os documentos em suas respectivas categorias com alta precisão.

Classificação de documentos

A classificação de documentos é um método por meio do qual um grande número de documentos não identificados pode ser categorizado e rotulado. Realizamos esta classificação de documentos usando um Amazon Comprehend classificador personalizado. Um classificador personalizado é um modelo de ML que pode ser treinado com um conjunto de documentos rotulados para reconhecer as classes de seu interesse. Depois que o modelo é treinado e implantado atrás de um endpoint hospedado, podemos utilizar o classificador para determinar a categoria (ou classe) à qual um determinado documento pertence. Nesse caso, treinamos um classificador personalizado em modo multi-classe, que pode ser feito com um arquivo CSV ou um arquivo de manifesto aumentado. Para fins desta demonstração, usamos um arquivo CSV para treinar o classificador. Consulte nosso Repositório GitHub para o exemplo de código completo. A seguir, uma visão geral de alto nível das etapas envolvidas:

  1. Extraia texto simples codificado em UTF-8 de arquivos de imagem ou PDF usando o Amazon Textract DetectarDocumentoTexto API.
  2. Prepare dados de treinamento para treinar um classificador personalizado no formato CSV.
  3. Treine um classificador personalizado usando o arquivo CSV.
  4. Implante o modelo treinado com um endpoint para classificação de documentos em tempo real ou use o modo multiclasse, que oferece suporte a operações em tempo real e assíncronas.

O diagrama a seguir ilustra esse processo.

A imagem mostra o processo de treinamento do classificador personalizado do Amazon Comprehend e a classificação de documentos usando o modelo de classificador treinado e implantado (em tempo real ou em lote).

Você pode automatizar a classificação de documentos usando o endpoint implantado para identificar e categorizar documentos. Essa automação é útil para verificar se todos os documentos necessários estão presentes em um pacote de hipoteca. Um documento ausente pode ser identificado rapidamente, sem intervenção manual, e notificado ao solicitante muito mais cedo no processo.

Extração de documentos

Nesta fase, extraímos dados do documento usando o Amazon Textract e o Amazon Comprehend. Para documentos estruturados e semiestruturados contendo formulários e tabelas, usamos o Amazon Textract Analisar Documento API. Para documentos especializados, como documentos de identificação, o Amazon Textract fornece o Analisar ID API. Alguns documentos também podem conter texto denso e pode ser necessário extrair deles termos-chave específicos de negócios, também conhecidos como entidades. Nós usamos o reconhecimento de entidade personalizada capacidade do Amazon Comprehend de treinar um reconhecedor de entidade personalizado, que pode identificar essas entidades a partir do texto denso.

Nas seções a seguir, percorremos os documentos de amostra que estão presentes em um pacote de solicitação de hipoteca e discutimos os métodos usados ​​para extrair informações deles. Para cada um desses exemplos, um snippet de código e uma pequena saída de amostra são incluídos.

Extrair dados do Aplicativo de Empréstimo Residencial Unificado URLA-1003

Um Pedido de Empréstimo Residencial Unificado (URLA-1003) é um formulário de pedido de empréstimo hipotecário padrão do setor. É um documento bastante complexo que contém informações sobre o requerente da hipoteca, tipo de imóvel que está sendo adquirido, valor a ser financiado e outros detalhes sobre a natureza da compra do imóvel. O seguinte é um exemplo de URLA-1003, e nossa intenção é extrair informações deste documento estruturado. Por se tratar de um formulário, usamos a API AnalyzeDocument com um tipo de recurso de FORMATO.

A imagem mostra uma amostra de um formulário de solicitação de empréstimo residencial unificado URLA-1003

O tipo de recurso FORM extrai informações de formulário do documento, que são retornadas no formato de par chave-valor. O trecho de código a seguir usa o amazon-textract-textractor Biblioteca Python para extrair informações de formulários com apenas algumas linhas de código. O método de conveniência call_textract() chama o AnalyzeDocument API internamente, e os parâmetros passados ​​para o método abstraem algumas das configurações que a API precisa para executar a tarefa de extração. Document é um método de conveniência usado para ajudar a analisar a resposta JSON da API. Ele fornece uma abstração de alto nível e torna a saída da API iterável e fácil de obter informações. Para obter mais informações, consulte Analisador de resposta de texto e Texturizador.

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))

Observe que a saída contém valores para caixas de seleção ou botões de opção que existem no formulário. Por exemplo, no documento de amostra URLA-1003, o Comprar opção foi selecionada. A saída correspondente para o botão de rádio é extraída como “Purchase” (chave) e “SELECTED” (valor), indicando que o botão de opção foi selecionado.

[
    { "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" },
    ...
]

Extraia dados de 1099 formulários

Um pacote de solicitação de hipoteca também pode conter vários documentos do IRS, como 1099-DIV, 1099-INT, 1099-MISC e 1099-R. Esses documentos mostram os ganhos do solicitante por meio de juros, dividendos e outros componentes de renda diversos que são úteis durante a subscrição para tomar decisões. A imagem a seguir mostra uma coleção desses documentos, que são semelhantes em estrutura. No entanto, em alguns casos, os documentos contêm informações de formulário (marcadas usando as caixas delimitadoras vermelhas e verdes), bem como informações tabulares (marcadas pelas caixas delimitadoras amarelas).

A imagem mostra amostras de 1099 formulários INT, DIV, MISC e R.

Para extrair informações do formulário, usamos um código semelhante ao explicado anteriormente com o AnalyzeDocument API. Passamos um recurso adicional de TABELA à API para indicar que precisamos de dados de formulário e tabela extraídos do documento. O trecho de código a seguir usa o AnalyzeDocument API com recursos FORMS e TABLES no documento 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')

Como o documento contém uma única tabela, a saída do código é a seguinte:

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

As informações da tabela contêm a posição da célula (linha 0, coluna 0 e assim por diante) e o texto correspondente em cada célula. Usamos um método de conveniência que pode transformar esses dados da tabela em uma visualização de grade fácil de ler:

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]))

Obtemos a seguinte saída:

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

Para obter a saída em um formato CSV fácil de consumir, o tipo de formato de Pretty_Print_Table_Format.csv pode ser passado para o table_format parâmetro. Outros formatos como TSV (valores separados por tabulação), HTML e Latex também são suportados. Para obter mais informações, consulte Textract-PrettyPrinter.

Extrair dados de uma nota de hipoteca

Um pacote de solicitação de hipoteca pode conter documentos não estruturados com texto denso. Alguns exemplos de documentos de texto densos são contratos e acordos. Uma nota de hipoteca é um acordo entre um requerente de hipoteca e o credor ou empresa de hipoteca e contém informações em parágrafos de texto densos. Nesses casos, a falta de estrutura dificulta a localização de informações comerciais importantes que são importantes no processo de solicitação de hipoteca. Existem duas abordagens para resolver este problema:

No exemplo de nota de hipoteca a seguir, estamos especificamente interessados ​​em descobrir o valor do pagamento mensal e o valor principal.

A imagem mostra uma amostra de um documento de nota de hipoteca.

Para a primeira abordagem, usamos a Query e QueriesConfig métodos de conveniência para configurar um conjunto de perguntas que é passado para o Amazon Textract AnalyzeDocument chamada de API. Caso o documento seja de várias páginas (PDF ou TIFF), também podemos especificar os números das páginas em que o Amazon Textract deve procurar respostas para a pergunta. O snippet de código a seguir demonstra como criar a configuração de consulta, fazer uma chamada de API e, posteriormente, analisar a resposta para obter as respostas da resposta:

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)

Obtemos a seguinte saída:

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

Para a segunda abordagem, usamos o Amazon Comprehend Detectar entidades API com a nota de hipoteca, que retorna as entidades que detecta no texto de um conjunto predefinido de entidades. Essas são entidades com as quais o reconhecedor de entidade do Amazon Comprehend é pré-treinado. No entanto, como nosso requisito é detectar entidades específicas, um reconhecedor de entidade personalizada do Amazon Comprehend é treinado com um conjunto de documentos de nota de hipoteca de amostra e uma lista de entidades. Definimos os nomes das entidades como PRINCIPAL_AMOUNT e MONTHLY_AMOUNT. Os dados de treinamento são preparados seguindo o treinamento do Amazon Comprehend diretrizes de preparação de dados para reconhecimento de entidade personalizada. O reconhecedor de entidade pode ser treinado com anotações do documento ou com listas de entidades. Para os propósitos deste exemplo, usamos listas de entidades para treinar o modelo. Depois de treinarmos o modelo, podemos implantá-lo com um ponto final em tempo real ou em modo de lote para detectar as duas entidades do conteúdo do documento. A seguir estão as etapas envolvidas para treinar um reconhecedor de entidade personalizado e implantá-lo. Para obter um passo a passo completo do código, consulte nosso repositório do GitHub.

  1. Prepare os dados de treinamento (a lista de entidades e os documentos com formato de texto simples (codificado em UTF-8).
  2. Inicie o treinamento do reconhecedor de entidade usando o CreateEntityRecognizer API usando os dados de treinamento.
  3. Implante o modelo treinado com um endpoint em tempo real usando o Criar ponto final API.

Extrair dados de um passaporte dos EUA

O texto da Amazônia analisar documentos de identidade capacidade pode detectar e extrair informações de documentos de identificação baseados nos EUA, como carteira de motorista e passaporte. o AnalyzeID A API é capaz de detectar e interpretar campos implícitos em documentos de identificação, o que facilita a extração de informações específicas do documento. Os documentos de identidade quase sempre fazem parte de um pacote de solicitação de hipoteca, porque são usados ​​para verificar a identidade do mutuário durante o processo de subscrição e para validar a exatidão dos dados biográficos do mutuário.

A imagem mostra uma amostra de um passaporte dos EUA

Usamos um método de conveniência chamado call_textract_analyzeid, que chama o AnalyzeID API internamente. Em seguida, iteramos a resposta para obter os pares de valores-chave detectados do documento de ID. Veja o seguinte código:

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 retorna informações em uma estrutura chamada IdentityDocumentFields, que contém as chaves normalizadas e seu valor correspondente. Por exemplo, na saída a seguir, FIRST_NAME é uma chave normalizada e o valor é ALEJANDRO. Na imagem do passaporte de exemplo, o campo para o primeiro nome é rotulado como “Nomes dados / Prénoms / Nombre”, no entanto AnalyzeID foi capaz de normalizar isso no nome da chave FIRST_NAME. Para obter uma lista de campos normalizados suportados, consulte Objetos de resposta da documentação de identidade.

{
    '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.'
}

Um pacote de hipoteca pode conter vários outros documentos, como contracheque, formulário W2, extrato bancário, extrato de cartão de crédito e carta de verificação de emprego. Temos amostras para cada um desses documentos junto com o código necessário para extrair os dados deles. Para a base de código completa, confira os notebooks em nosso Repositório GitHub.

Enriquecimento de documentos

Uma das formas mais comuns de enriquecimento de documentos é a redação de informações confidenciais ou confidenciais em documentos, o que pode ser obrigatório devido a leis ou regulamentos de privacidade. Por exemplo, o contracheque de um solicitante de hipoteca pode conter dados de PII confidenciais, como nome, endereço e SSN, que podem precisar de redação para armazenamento estendido.

No documento de exemplo de comprovante de pagamento anterior, realizamos a redação de dados de PII, como SSN, nome, número da conta bancária e datas. Para identificar dados de PII em um documento, usamos o Amazon Comprehend Detecção de PII capacidade através do Detectar PIIEntities API. Essa API inspeciona o conteúdo do documento para identificar a presença de informações de PII. Como essa API requer entrada no formato de texto simples codificado em UTF-8, primeiro extraímos o texto do documento usando o Amazon Textract DetectarDocumentoTexto API, que retorna o texto do documento e também retorna informações de geometria, como dimensões e coordenadas da caixa delimitadora. Uma combinação de ambas as saídas é então usada para desenhar redações no documento como parte do processo de enriquecimento.

Revise, valide e integre dados

Os dados extraídos da fase de extração de documentos podem precisar de validação em relação a regras de negócios específicas. Informações específicas também podem ser validadas em vários documentos, também conhecidos como validação de documentos cruzados. Um exemplo de validação de documentos cruzados pode ser comparar o nome do requerente no documento de identidade com o nome no documento de solicitação de hipoteca. Você também pode fazer outras validações, como estimativas de valor de propriedade e decisões de subscrição condicional nesta fase.

Um terceiro tipo de validação está relacionado à pontuação de confiança dos dados extraídos na fase de extração do documento. O Amazon Textract e o Amazon Comprehend retornam uma pontuação de confiança para formulários, tabelas, dados de texto e entidades detectadas. Você pode configurar um limite de pontuação de confiança para garantir que apenas os valores corretos sejam enviados downstream. Isso é feito por meio do Amazon A2I, que compara as pontuações de confiança dos dados detectados com um limite de confiança predefinido. Se o limite não for atendido, o documento e a saída extraída serão roteados para um humano para revisão por meio de uma interface do usuário intuitiva. O revisor toma uma ação corretiva nos dados e os salva para processamento posterior. Para obter mais informações, consulte Conceitos principais da Amazon A2I.

Conclusão

Neste post, discutimos as fases do processamento inteligente de documentos no que se refere às fases de um pedido de hipoteca. Analisamos alguns exemplos comuns de documentos que podem ser encontrados em um pacote de solicitação de hipoteca. Também discutimos formas de extrair e processar conteúdo estruturado, semiestruturado e não estruturado desses documentos. O IDP fornece uma maneira de automatizar o processamento de documentos de hipoteca de ponta a ponta que pode ser dimensionado para milhões de documentos, aprimorando a qualidade das decisões de aplicativos, reduzindo custos e atendendo os clientes mais rapidamente.

Como próximo passo, você pode experimentar os exemplos de código e notebooks em nosso Repositório GitHub. Para saber mais sobre como o IDP pode ajudar suas cargas de trabalho de processamento de documentos, visite Automatize o processamento de dados de documentos.


Sobre os autores

Processe documentos de hipoteca com processamento inteligente de documentos usando Amazon Textract e Amazon Comprehend PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Anjan Biswas é um arquiteto sênior de soluções de serviços de IA com foco em IA/ML e análise de dados. Anjan faz parte da equipe mundial de serviços de IA e trabalha com os clientes para ajudá-los a entender e desenvolver soluções para problemas de negócios com IA e ML. Anjan tem mais de 14 anos de experiência trabalhando com organizações globais de cadeia de suprimentos, manufatura e varejo e está ajudando ativamente os clientes a começar e escalar os serviços de IA da AWS.

Processe documentos de hipoteca com processamento inteligente de documentos usando Amazon Textract e Amazon Comprehend PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Dwiti Pathak é um gerente técnico sênior de contas baseado em San Diego. Ela está focada em ajudar a indústria de semicondutores a se envolver na AWS. Nas horas vagas, gosta de ler sobre novas tecnologias e jogar jogos de tabuleiro.

Processe documentos de hipoteca com processamento inteligente de documentos usando Amazon Textract e Amazon Comprehend PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.Balaji Puli é um Arquiteto de Soluções baseado em Bay Area, CA. Atualmente ajudando clientes selecionados de ciências da vida na área de saúde do noroeste dos EUA a acelerar a adoção da nuvem AWS. Balaji gosta de viajar e adora explorar diferentes cozinhas.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS