Extraia automaticamente conteúdo de arquivos PDF usando o Amazon Textract - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Extraia automaticamente conteúdo de arquivos PDF usando o Amazon Textract

Criado por Tianxia Jia (AWS)

Ambiente: produção

Tecnologias: machine learning e IA; análise; big data

Serviços da AWS: Amazon S3; Amazon Textract; Amazon SageMaker

Resumo

Muitas organizações precisam extrair informações de arquivos PDF que são enviados para seus aplicativos de negócios. Por exemplo, uma organização pode precisar extrair com precisão as informações de arquivos PDF fiscais ou médicos para análise tributária ou processamento de reclamações médicas.

Na nuvem da Amazon Web Services (AWS), o Amazon Textract extrai automaticamente informações (por exemplo, texto impresso, formulários e tabelas) de arquivos PDF e produz um arquivo formatado em JSON que contém informações do arquivo PDF original. Você pode usar o Amazon Textract no Console de Gerenciamento da AWS ou implementando chamadas de API. Recomendamos que você use chamadas de API programáticas para escalar e processar automaticamente grandes quantidades de arquivos PDF.

Quando o Amazon Textract processa um arquivo, ele cria a seguinte lista de objetos Block: páginas, linhas e palavras de texto, formulários (pares de valores-chave), tabelas e células e elementos de seleção. Outras informações do objeto também estão incluídas, por exemplo, caixas delimitadoras, intervalos de confiança, IDs e relacionamentos. O Amazon Textract extrai as informações do conteúdo como sequências de caracteres. Valores de dados identificados e transformados corretamente são necessários porque podem ser usados com mais facilidade por seus aplicativos downstream. 

Esse padrão descreve um step-by-step fluxo de trabalho para usar o Amazon Textract para extrair automaticamente conteúdo de arquivos PDF e processá-lo em uma saída limpa. O padrão usa uma técnica de correspondência de modelos para identificar corretamente o campo obrigatório, o nome da chave e as tabelas e, em seguida, aplica correções de pós-processamento a cada tipo de dados. Você pode usar esse padrão para processar diferentes tipos de arquivos PDF e, em seguida, escalar e automatizar esse fluxo de trabalho para processar arquivos PDF que tenham um formato idêntico.   

Pré-requisitos e limitações

Pré-requisitos

  • Uma conta AWS ativa

  • Um bucket existente do Amazon Simple Storage Service (Amazon S3) para armazenar os arquivos PDF após serem convertidos para o formato JPEG para processamento pelo Amazon Textract. Para obter mais informações sobre buckets do S3, consulte Visão geral dos buckets na documentação do Amazon S3.

  • O caderno Jupyter Textract_PostProcessing.ipynb (anexado), instalado e configurado. Para obter mais informações sobre os cadernos Jupyter, consulte Criar um caderno Jupyter na documentação da Amazon. SageMaker

  • Arquivos PDF existentes que têm um formato idêntico.

  • Uma compreensão do Python.

Limitações

Arquitetura

O fluxo de trabalho desse padrão primeiro executa o Amazon Textract em um arquivo PDF de amostra (primeira execução) e depois o executa em arquivos PDF que têm um formato idêntico ao primeiro PDF (execução repetida). O diagrama a seguir mostra o fluxo de trabalho combinado de primeira execução e execução repetida que extrai automaticamente e repetidamente conteúdo de arquivos PDF com formatos idênticos.

Usando o Amazon Textract para extrair conteúdo de arquivos PDF

O diagrama a seguir mostra o fluxo de trabalho desse padrão:

  1. Converta um arquivo PDF em formato JPEG e armazene-o em um bucket do S3. 

  2. Chame a API Amazon Textract e analise o arquivo JSON de resposta do Amazon Textract. 

  3. Edite o arquivo JSON adicionando o par KeyName:DataType correto para cada campo obrigatório. Crie um arquivo TemplateJSON para o estágio de execução repetida.

  4. Defina as funções de correção de pós-processamento para cada tipo de dados (por exemplo, flutuante, inteiro e data).

  5. Prepare os arquivos PDF que tenham um formato idêntico ao seu primeiro arquivo PDF.

  6. Chame a API Amazon Textract e analise o JSON de resposta do Amazon Textract.

  7. Combine o arquivo JSON analisado com o arquivo TemplateJSON.

  8. Implemente correções de pós-processamento.

O arquivo de saída JSON final tem o campo correto KeyName e Value para cada campo obrigatório.

Pilha de tecnologias de destino

  • Amazon SageMaker 

  • Amazon S3 

  • Amazon Textract

Automação e escala

Você pode automatizar o fluxo de trabalho de repetição de execução usando uma função do Lambda da AWS que inicia o Amazon Textract quando um novo arquivo PDF é adicionado ao Amazon S3. Em seguida, o Amazon Textract executa os scripts de processamento e a saída final pode ser salva em um local de armazenamento. Para obter mais informações sobre isso, consulte Usar um acionador do Amazon S3 para invocar uma função do Lambda na documentação do Lambda.

Ferramentas

  • SageMakerA Amazon é um serviço de ML totalmente gerenciado que ajuda você a criar e treinar modelos de ML de forma rápida e fácil e, em seguida, implantá-los diretamente em um ambiente hospedado pronto para produção.

  • O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

  • O Amazon Textract facilita a adição de detecção e análise de texto de documentos aos seus aplicativos.

Épicos

TarefaDescriçãoHabilidades necessárias

Converta o arquivo PDF.

Prepare o arquivo PDF para sua primeira execução dividindo-o em uma única página e convertendo-o em formato JPEG para a operação síncrona do Amazon Textract (Syn API).

Observação: você também pode usar a operação assíncrona Amazon Textract (Asyn API) para arquivos PDF de várias páginas.

Cientista de dados, desenvolvedor

Analise a resposta JSON do Amazon Textract.

Abra o caderno Jupyter Textract_PostProcessing.ipynb (anexado) e chame a API Amazon Textract usando o seguinte código:

response = textract.analyze_document( Document={ 'S3Object': { 'Bucket': BUCKET, 'Name': '{}'.format(filename) } }, FeatureTypes=["TABLES", "FORMS"])

Analise a resposta JSON em um formulário e uma tabela usando o código a seguir:

parseformKV=form_kv_from_JSON(response) parseformTables=get_tables_fromJSON(response)
Cientista de dados, desenvolvedor

Edite o arquivo TemplateJSON.

Edite o JSON analisado para cada KeyName e DataType correspondentes (por exemplo, string, ponto flutuante, número inteiro ou data) e cabeçalhos de tabela (por exemplo, ColumnNames e RowNames).

Esse modelo é usado para cada tipo de arquivo PDF individual, o que significa que o modelo pode ser reutilizado para arquivos PDF com formato idêntico.

Cientista de dados, desenvolvedor

Defina as funções de correção de pós-processamento.

Os valores na resposta do Amazon Textract para o arquivo TemplateJSON são sequências de caracteres. Não há diferenciação para data, valor flutuante, número inteiro ou moeda. Esses valores devem ser convertidos no tipo de dados correto para seu caso de uso posterior. 

Corrija cada tipo de dados de acordo com o arquivo TemplateJSON usando o código a seguir:

finalJSON=postprocessingCorrection(parsedJSON,templateJSON)
Cientista de dados, desenvolvedor
TarefaDescriçãoHabilidades necessárias

Prepare os arquivos PDF.

Prepare os arquivos PDF dividindo-os em uma única página e convertendo-os em formato JPEG para a operação síncrona do Amazon Textract (Syn API).

Observação: você também pode usar a operação assíncrona Amazon Textract (Asyn API) para arquivos PDF de várias páginas.

Cientista de dados, desenvolvedor

Chame a API do Amazon Textract.

Chame a API Amazon Textract usando o seguinte código:

response = textract.analyze_document( Document={ 'S3Object': { 'Bucket': BUCKET, 'Name': '{}'.format(filename) } }, FeatureTypes=["TABLES", "FORMS"])
Cientista de dados, desenvolvedor

Analise a resposta JSON do Amazon Textract.

Analise a resposta JSON em um formulário e uma tabela usando o código a seguir:

parseformKV=form_kv_from_JSON(response) parseformTables=get_tables_fromJSON(response)
Cientista de dados, desenvolvedor

Carregue o arquivo TemplateJSON e combine-o com o JSON analisado.

Use o arquivo TemplateJSON para extrair os pares de valores-chave e a tabela corretos usando os seguintes comandos:

form_kv_corrected=form_kv_correction(parseformKV,templateJSON) form_table_corrected=form_Table_correction(parseformTables, templateJSON) form_kv_table_corrected_final={**form_kv_corrected , **form_table_corrected}
Cientista de dados, desenvolvedor

Correções de pós-processamento.

Use DataType nos perfis de arquivo TemplateJSON e pós-processamento para corrigir dados usando o seguinte código: 

finalJSON=postprocessingCorrection(form_kv_table_corrected_final,templateJSON)
Cientista de dados, desenvolvedor

Recursos relacionados

Anexos

Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: attachment.zip