Divida pacotes de documentos multiformes de maneira inteligente com Amazon Textract e Amazon Comprehend

Nó Fonte: 1372716

Muitas organizações de diferentes tamanhos e setores verticais ainda dependem de grandes volumes de documentos para executar suas operações diárias. Para resolver esse desafio comercial, os clientes estão usando serviços inteligentes de processamento de documentos da AWS, como amazontext e Amazon Comprehend para ajudar extração e automação de processos. Antes de extrair texto, pares de valores-chave, tabelas e entidades, você precisa ser capaz de dividir documentos PDF de várias páginas que geralmente contêm tipos de formulário heterogêneos. Por exemplo, no processamento de hipotecas, um corretor ou indivíduo que processa empréstimos pode precisar dividir um pacote de empréstimo em PDF consolidado, contendo o pedido de hipoteca (formulário 1003 da Fannie Mae), W2s, verificação de renda, formulários fiscais 1040 e muito mais.

Para resolver esse problema, as organizações usam o processamento baseado em regras: identificando tipos de documentos por meio de títulos de formulários, números de páginas, comprimentos de formulários e assim por diante. Essas abordagens são propensas a erros e difíceis de escalar, especialmente quando os tipos de formulário podem ter diversas variações. Conseqüentemente, essas soluções alternativas falham rapidamente na prática e aumentam a necessidade de intervenção humana.

Neste post, mostramos como você pode criar sua própria solução de divisão de documentos com pouco código para qualquer conjunto de formulários, sem criar regras personalizadas ou processar fluxos de trabalho.

Visão geral da solução

Para esta postagem, usamos um conjunto de formulários comuns de solicitação de hipoteca para demonstrar como você pode usar o Amazon Textract e o Amazon Comprehend para criar um divisor de documentos inteligente que é mais robusto do que as abordagens anteriores. Ao processar documentos para pedidos de hipoteca, o mutuário envia um PDF de várias páginas composto por tipos de documentos heterogêneos com comprimentos de página variados; para extrair informações, o usuário (por exemplo, um banco) deve desmembrar este PDF.

Embora mostremos um exemplo específico para formulários de hipoteca, geralmente você pode dimensionar e aplicar essa abordagem a praticamente qualquer conjunto de documentos PDF de várias páginas.

Usamos o Amazon Textract para extrair dados do documento e construir um conjunto de dados compatível com o Amazon Comprehend para treinar um modelo de classificação de documentos. A seguir, treinamos o modelo de classificação e criamos um endpoint de classificação que pode realizar análises de documentos em tempo real. Lembre-se de que os endpoints de classificação do Amazon Textract e do Amazon Comprehend incorrem em cobranças, portanto, consulte Preços do Amazon Textract e Preços do Amazon Comprehend Para maiores informações. Por fim, mostramos como podemos classificar documentos com este endpoint e dividir documentos com base nos resultados da classificação.

Esta solução usa os seguintes serviços AWS:

Pré-requisitos

Você precisa atender aos seguintes pré-requisitos para criar e implantar esta solução:

  1. Instale Python 3.8.x.
  2. Instale jq.
  3. Instale a CLI do AWS SAM.
  4. Instale Estivador.
  5. Certifique-se de que você tem pip instalado.
  6. Instale e configure que o Interface de linha de comando da AWS (AWSCL).
  7. configurar suas credenciais da AWS.

A solução foi projetada para funcionar de maneira ideal no us-east-1 e us-west-2 Regiões para aproveitar cotas padrão mais altas para Amazon Textract. Para cargas de trabalho regionais específicas, consulte Endpoints e cotas do Amazon Textract. Certifique-se de usar uma única região para toda a solução.

Clone o repo

Para começar, clone o repositório executando o seguinte comando; então mudamos para o diretório de trabalho:

git clone https://github.com/aws-samples/aws-document-classifier-and-splitter.git
cd aws-document-classifier-and-splitter

Fluxos de trabalho de solução

A solução consiste em três fluxos de trabalho:

  • fluxo de trabalho1_endpointbuilder – Pega os documentos de treinamento e cria um endpoint de classificação personalizado no Amazon Comprehend.
  • fluxo de trabalho2_docsplitter – Atua como serviço de divisão de documentos, onde os documentos são divididos por classe. Ele usa o endpoint de classificação criado em workflow1.
  • fluxo de trabalho3_local – Destina-se a clientes que atuam em setores altamente regulamentados e não conseguem persistir dados no Amazon S3. Este fluxo de trabalho contém versões locais do workflow1 e workflow2.

Vamos nos aprofundar em cada fluxo de trabalho e como eles funcionam.

Fluxo de trabalho 1: crie um classificador do Amazon Comprehend a partir de documentos PDF, JPG ou PNG

O primeiro fluxo de trabalho pega documentos armazenados no Amazon S3 e os envia por uma série de etapas para extrair os dados dos documentos por meio do Amazon Textract. Em seguida, os dados extraídos são usados ​​para criar um endpoint de classificação personalizado do Amazon Comprehend. Isso é demonstrado no diagrama de arquitetura a seguir.

Lançar workflow1, você precisará do URI do Amazon S3 da pasta que contém os arquivos do conjunto de dados de treinamento (podem ser imagens, PDFs de página única ou PDFs de várias páginas). A estrutura da pasta deve ser a seguinte:

root dataset directory
---- class directory
-------- files

Alternativamente, a estrutura pode ter subdiretórios aninhados adicionais:

root dataset directory
---- class directory
-------- nested subdirectories
------------ files

Os nomes dos subdiretórios de classe (o segundo nível de diretório) tornam-se os nomes das classes usadas no modelo de classificação personalizado do Amazon Comprehend. Por exemplo, na estrutura de arquivo a seguir, a classe para form123.pdf is tax_forms:

training_dataset
---- tax_forms
-------- page_1
------------ form123.pdf

Para iniciar o fluxo de trabalho, conclua as etapas a seguir:

  1. Faça upload do conjunto de dados para um bucket S3 de sua propriedade.

A recomendação é ter mais de 50 amostras para cada turma que deseja classificar. A captura de tela a seguir mostra um exemplo dessa estrutura de classes de documento.

  1. Construa o sam-app executando os seguintes comandos (modifique os comandos fornecidos conforme necessário):
cd workflow1_endpointbuilder/sam-app
sam build
sam deploy --guided
Stack Name [sam-app]: endpointbuilder
AWS Region []: us-east-1
#Shows you resources changes to be deployed and require a 'Y' to initiate deploy
Confirm changes before deploy [y/N]: n
#SAM needs permission to be able to create roles to connect to the resources in your template
Allow SAM CLI IAM role creation [Y/n]: y
Save arguments to configuration file [Y/n]: n Looking for resources needed for deployment:
Creating the required resources...
Successfully created!
Managed S3 bucket: {your_bucket}
#Managed repositories will be deleted when their functions are removed from the template and deployed
Create managed ECR repositories for all functions? [Y/n]: y

A saída da compilação é um ARN para uma máquina de estado do Step Functions.

  1. Quando a compilação estiver concluída, navegue até o Máquinas de estado página no console do Step Functions.
  2. Escolha a máquina de estado que você criou.
  3. Escolha Comece a execução.
  4. Insira os seguintes parâmetros de entrada obrigatórios:
{
“folder_uri”: “s3://{your dataset}”
}

  1. Escolha Comece a execução.

A máquina de estado inicia o fluxo de trabalho. Isso pode levar várias horas, dependendo do tamanho do conjunto de dados. A captura de tela a seguir mostra nossa máquina de estado em andamento.

Quando a máquina de estados estiver concluída, cada etapa do gráfico ficará verde, conforme mostrado na captura de tela a seguir.

Você pode navegar até o console do Amazon Comprehend para ver o endpoint implantado.

Agora você construiu seu classificador personalizado usando seus documentos. Isto marca o fim de workflow1.

Fluxo de trabalho 2: criar um endpoint

O segundo fluxo de trabalho usa o endpoint que você criou em workflow1 e divide os documentos com base nas classes com as quais o modelo foi treinado. Isso é demonstrado no diagrama de arquitetura a seguir.

Lançar workflow2, construímos o sam-app. Modifique os comandos fornecidos conforme necessário:

cd workflow2_docsplitter/sam-app
sam-app % sam build
Build Succeeded sam-app % sam deploy --guided
Configuring SAM deploy
=========================================
Stack Name [sam-app]: docsplitter
AWS Region []: us-east-1
#Shows you resources changes to be deployed and require a 'Y' to initiate deploy
Confirm changes before deploy [y/N]: n
#SAM needs permission to be able to create roles to connect to the resources in your template
Allow SAM CLI IAM role creation [Y/n]: y
Save arguments to configuration file [Y/n]: n Looking for resources needed for deployment:
Managed S3 bucket: {bucket_name}
#Managed repositories will be deleted when their functions are removed from the template and deployed
Create managed ECR repositories for all functions? [Y/n]: y

Depois que a pilha for criada, você receberá um DNS do Load Balancer no Saídas guia da pilha do CloudFormation. Você pode começar a fazer solicitações para esse endpoint.

Um exemplo de solicitação está disponível no workflow2_docsplitter/sample_request_folder/sample_s3_request.py arquivo. A API usa três parâmetros: o nome do bucket S3, o URI do Amazon S3 do documento e o ARN do endpoint de classificação do Amazon Comprehend. Workflow2 suporta apenas entrada de PDF.

Para nosso teste, usamos um documento hipotecário de 11 páginas com cinco tipos de documentos diferentes.

A resposta da API é um URI do Amazon S3 para um arquivo .zip com todos os documentos divididos. Você também pode encontrar esse arquivo no bucket fornecido em sua chamada de API.

Baixe o objeto e revise os documentos divididos com base na classe.

Isso marca o fim da workflow2. Agora mostramos como podemos usar um endpoint de classificação personalizado do Amazon Comprehend para classificar e dividir documentos.

Fluxo de trabalho 3: divisão local de documentos

Nosso terceiro fluxo de trabalho segue um propósito semelhante ao workflow1 e workflow2 para gerar um endpoint do Amazon Comprehend; no entanto, todo o processamento é feito usando sua máquina local para gerar um arquivo CSV compatível com o Amazon Comprehend. Este fluxo de trabalho foi criado para clientes em setores altamente regulamentados onde a persistência de documentos PDF no Amazon S3 pode não ser possível. O diagrama de arquitetura a seguir é uma representação visual do fluxo de trabalho do construtor de endpoint local.

O diagrama a seguir ilustra a arquitetura do divisor de documentos local.

Todo o código da solução está disponível no workflow3_local/local_endpointbuilder.py arquivo para criar o endpoint de classificação do Amazon Comprehend e workflow3_local/local_docsplitter.py para enviar documentos para divisão.

Conclusão

A divisão de documentos é a chave para construir um fluxo de trabalho de processamento de documentos inteligente e bem-sucedido. Ainda é um problema muito relevante para as empresas, especialmente para as organizações que agregam vários tipos de documentos para as suas operações diárias. Alguns exemplos incluem o processamento de documentos de reclamações de seguros, solicitações de apólices de seguro, documentos da SEC, formulários fiscais e formulários de verificação de renda.

Nesta postagem, pegamos um conjunto de documentos comuns usados ​​para processamento de empréstimos, extraímos os dados usando o Amazon Textract e construímos um endpoint de classificação personalizado do Amazon Comprehend. Com esse endpoint, classificamos os documentos recebidos e os dividimos com base em suas respectivas classes. Você pode aplicar esse processo a praticamente qualquer conjunto de documentos com aplicações em diversos setores, como saúde e serviços financeiros. Para saber mais sobre o Amazon Textract, visite a página da web.


Sobre os autores

Aditi Rajnish é um estudante de engenharia de software do primeiro ano na Universidade de Waterloo. Seus interesses incluem visão computacional, processamento de linguagem natural e computação de borda. Ela também é apaixonada por divulgação e defesa de STEM com base na comunidade. Em seu tempo livre, ela pode ser encontrada escalando, tocando piano ou aprendendo a assar o bolinho perfeito.

Raj Pathak é arquiteto de soluções e consultor técnico para clientes da Fortune 50 e FSI de médio porte (bancos, seguros, mercados de capitais) no Canadá e nos Estados Unidos. Raj é especialista em Machine Learning com aplicações em Extração de Documentos, Transformação de Contact Center e Visão Computacional.

Fonte: https://aws.amazon.com/blogs/machine-learning/intelligently-split-multi-form-document-packages-with-amazon-texttract-and-amazon-comprehend/

Carimbo de hora:

Mais de Blog do AWS Machine Learning