Mesmo nesta era digital, em que cada vez mais empresas estão a migrar para a nuvem e a utilizar a aprendizagem automática (ML) ou a tecnologia para melhorar os processos empresariais, ainda vemos um grande número de empresas contactarem-se e perguntarem sobre o processamento de documentos, especialmente documentos manuscritos. Vemos formulários de emprego, cartões de ponto e aplicações financeiras com tabelas e formulários que contêm escrita à mão, além de informações impressas. Para complicar as coisas, cada documento pode estar em vários formatos, e cada instituição dentro de qualquer setor pode ter vários formatos diferentes. As organizações procuram uma solução simples que possa processar documentos complexos com formatos variados, incluindo tabelas, formulários e dados tabulares.
A extração de dados desses documentos, especialmente quando você tem uma combinação de texto impresso e manuscrito, é propensa a erros, demorada, cara e não escalável. O texto incorporado em tabelas e formulários aumenta a complexidade de extração e processamento. amazontext é um serviço de IA da AWS que extrai automaticamente texto impresso, manuscrito e outros dados de documentos digitalizados que vão além do simples reconhecimento óptico de caracteres (OCR) para identificar, compreender e extrair dados de formulários e tabelas.
Após a extração dos dados, a etapa de pós-processamento em um fluxo de trabalho de gerenciamento de documentos envolve a revisão das entradas e a realização de alterações conforme exigido pelos aplicativos de processamento downstream. IA aumentada da Amazon (Amazon A2I) facilita a configuração de uma revisão humana em seu fluxo de trabalho de ML. Isso permite que você execute automaticamente uma etapa humana para revisar seu pipeline de ML se os resultados ficarem abaixo de um limite de confiança especificado, configurar fluxos de trabalho de revisão e auditoria e modificar os resultados de previsão conforme necessário.
Nesta postagem, mostramos como você pode usar o recurso Amazon Textract Handwriting para extrair dados tabulares de documentos e ter um ciclo de revisão humana usando o Tipo de tarefa personalizada Amazon A2I para garantir que as previsões sejam altamente precisas. Armazenamos os resultados em Amazon DynamoDB, que é um banco de dados de valores-chave e documentos que oferece desempenho de milissegundos de um dígito em qualquer escala, disponibilizando os dados para processamento downstream.
Orientamos você nas etapas a seguir usando um Caderno Jupyter:
- Use o Amazon Textract para recuperar dados tabulares do documento e inspecionar a resposta.
- Configure um loop humano Amazon A2I para revisar e modificar a resposta do Amazon Textract.
- Avaliar a resposta do Amazon A2I e armazená-la no DynamoDB para processamento downstream.
Pré-requisitos
Antes de começar, vamos configurar o notebook Jupyter passo a passo usando um Formação da Nuvem AWS modelo e, em seguida, crie uma força de trabalho privada do Amazon A2I, que é necessária no notebook para configurar o fluxo de trabalho personalizado do Amazon A2I.
Configurando o notebook Jupyter
Implantamos um modelo CloudFormation que realiza grande parte do trabalho de configuração inicial para você, como criar um Gerenciamento de acesso e identidade da AWS (IAM) função para Amazon Sage Maker, criando uma instância de notebook SageMaker e clonando o repositório GitHub na instância de notebook.
- Escolha Pilha de Lançamento para configurar o notebook na região Leste dos EUA (Norte da Virgínia):
- Não faça alterações no nome ou nos parâmetros da pilha.
- No Empresa seção, selecione Reconheço que o AWS CloudFormation pode criar recursos do IAM.
- Escolha Criar pilha.
A captura de tela a seguir da página de detalhes da pilha mostra o status da pilha como CREATE_IN_PROGRESS
. Pode levar até 20 minutos para que o status mude para CREATE_COMPLETE
.
- No console SageMaker, escolha Instâncias de Notebook.
- Escolha Abra o Jupyter para o
TextractA2INotebook
caderno que você criou. - Abra
textract-hand-written-a2i-forms.ipynb
e acompanhe por lá.
Configurando uma força de trabalho privada Amazon A2I
Para esta postagem, você cria uma equipe de trabalho privada e adiciona apenas um usuário (você) a ela. Para obter instruções, veja Crie uma força de trabalho privada (Amazon SageMaker Console). Quando o usuário (você) aceita o convite, você deve se adicionar à força de trabalho. Para obter instruções, consulte o Adicionar um trabalhador a uma equipe de trabalho seção em Gerenciar uma força de trabalho (Amazon SageMaker Console).
Depois de criar uma força de trabalho de rotulagem, copie o ARN da força de trabalho e insira-o na célula do notebook para configurar uma força de trabalho de revisão privada:
Nas seções a seguir, orientamos você nas etapas para usar este notebook.
Recuperando dados tabulares do documento e inspecionando a resposta
Nesta seção, percorremos as seguintes etapas usando o caderno passo a passo:
- Revise os dados de amostra, que possuem conteúdo impresso e manuscrito.
- Configure as funções auxiliares para analisar a resposta do Amazon Textract.
- Inspecione e analise a resposta do Amazon Textract.
Revendo os dados de amostra
Revise os dados de amostra executando a seguinte célula do notebook:
Usamos o documento de exemplo a seguir, que possui conteúdo impresso e manuscrito em tabelas.
Use a biblioteca Amazon Textract Parser para processar a resposta
Vamos agora importar o Analisador de resposta do Amazon Textract biblioteca para analisar e extrair o que precisamos da resposta do Amazon Textract. Existem duas funções principais aqui. Primeiro, extrairemos os dados do formulário (pares de valores-chave) que fazem parte da seção de cabeçalho do documento. Segundo, analisaremos a tabela e as células para criar um arquivo csv contendo os dados tabulares. Neste notebook, usaremos a API Sync do Amazon Textract para extração de documentos, Analisar Documento. Aceita arquivos de imagem (png ou jpeg) como entrada.
Você pode usar a biblioteca Amazon Textract Response Parser para analisar facilmente o JSON retornado pelo Amazon Textract. A biblioteca analisa JSON e fornece construções específicas de linguagem de programação para trabalhar com diferentes partes do documento. Para mais detalhes, consulte o Biblioteca do analisador Amazon Textract
Agora que temos o conteúdo necessário da imagem do documento, vamos criar um arquivo csv para armazená-lo e também usá-lo para configurar o loop humano Amazon A2I para revisão e modificação conforme necessário.
Alternativamente, se você quiser modificar este caderno para usar um arquivo PDF ou para processamento em lote de documentos, use o API StartDocumentAnalysis. StartDocumentAnalysis
retorna um identificador de trabalho (JobId
) que você usa para obter os resultados da operação. Quando a análise de texto é concluída, o Amazon Textract publica um status de conclusão no tópico Amazon Simple Notification Service (Amazon SNS) especificado em NotificationChannel
. Para obter os resultados da operação de análise de texto, primeiro verifique se o valor do status publicado no tópico do Amazon SNS é BEM SUCEDIDO. Se sim, ligue GetDocumentAnalysis
e passe o identificador do trabalho (JobId
) desde a chamada inicial até StartDocumentAnalysis
.
Inspecionar e analisar a resposta do Amazon Textract
Agora carregamos os itens de linha do formulário em um DataFrame do Pandas e o limpamos para garantir que tenhamos as colunas e linhas relevantes que os aplicativos downstream precisam. Em seguida, enviamos para o Amazon A2I para revisão humana.
Execute a seguinte célula do notebook para inspecionar e analisar os dados de valor-chave da resposta do Amazon Textract:
A captura de tela a seguir mostra nossa saída.
Execute a seguinte célula do notebook para inspecionar e analisar os dados tabulares da resposta do Amazon Textract:
A captura de tela a seguir mostra nossa saída.
Podemos ver que o Amazon Textract detectou conteúdo impresso e manuscrito a partir dos dados tabulares.
Configurando um loop humano Amazon A2I
O Amazon A2I oferece suporte a dois tipos de tarefas integradas: Extração de pares de valores-chave do Amazon Textract e Moderação de imagens do Amazon Rekognitione um tipo de tarefa personalizada que você pode usar para integrar um ciclo de revisão humana em qualquer fluxo de trabalho de ML. Você pode usar um tipo de tarefa personalizado para integrar o Amazon A2I com outros serviços da AWS, como Amazon Comprehend, Amazon Transcribe e Amazon Tradutor, bem como seus próprios fluxos de trabalho de ML personalizados. Para saber mais, consulte Casos de uso e exemplos usando Amazon A2I.
Nesta seção, mostramos como usar o tipo de tarefa personalizada Amazon A2I para integração com tabelas e pares de valores-chave do Amazon Textract por meio do caderno passo a passo para pontuações de detecção de baixa confiança das respostas do Amazon Textract. Inclui as seguintes etapas:
- Crie uma interface do usuário de tarefa manual.
- Crie uma definição de fluxo de trabalho.
- Envie previsões para loops humanos do Amazon A2I.
- Faça login no portal do trabalhador e anote ou verifique os resultados do Amazon Textract.
Criando uma UI de Tarefa Humana
Você pode criar uma UI de tarefa para seus trabalhadores criando um modelo de tarefa do trabalhador. Um modelo de tarefa de trabalho é um arquivo HTML que você usa para exibir seus dados de entrada e instruções para ajudar os trabalhadores a concluir sua tarefa. Se estiver criando um fluxo de trabalho de revisão humana para um tipo de tarefa personalizada, você deverá criar um modelo de tarefa de trabalho personalizado usando código HTML. Para mais informações, veja Criar modelo de tarefa de trabalhador personalizado.
Para esta postagem, criamos um modelo HTML de UI personalizado para renderizar tabelas do Amazon Textract e pares de valores-chave no notebook. Você pode encontrar o modelo tabelas-keyvalue-sample.liquid.html em nosso repositório GitHub e personalize-o para seu caso de uso de documento específico.
Este modelo é usado sempre que um loop humano é necessário. Temos mais de 70 UIs pré-construídas disponíveis em GitHub. Opcionalmente, você pode criar esta definição de fluxo de trabalho na página Console do Amazon A2I. Para obter instruções, consulte Crie um fluxo de trabalho de revisão humana.
Depois de criar esse modelo personalizado usando HTML, você deve usar esse modelo para gerar um nome de recurso da Amazon (ARN) da UI de tarefa manual do Amazon A2I. Este ARN tem o seguinte formato: arn:aws:sagemaker
:<região aws>:número da conta aws>:human-task-u
eu/nome do modelo>. Esse ARN está associado a um recurso de modelo de tarefa de trabalho que pode ser usado em um ou mais fluxos de trabalho de revisão humana (definições de fluxo). Gere um ARN da UI de tarefa manual usando um modelo de tarefa de trabalho usando o CriarHumanTaskUi Operação da API executando a seguinte célula do notebook:
O código anterior fornece um ARN como saída, que usaremos na configuração das definições de fluxo na próxima etapa:
Criação da definição de fluxo de trabalho
Nesta seção, criamos uma definição de fluxo. As definições de fluxo nos permitem especificar o seguinte:
- A força de trabalho para a qual suas tarefas são enviadas
- As instruções que sua força de trabalho recebe (modelo de tarefa de trabalho)
- Onde seus dados de saída são armazenados
Para esta postagem, usamos a API no seguinte código:
Opcionalmente, você pode criar esta definição de fluxo de trabalho no Console do Amazon A2I. Para obter instruções, consulte Crie um fluxo de trabalho de revisão humana.
Envio de previsões para loops humanos do Amazon A2I
Criamos uma lista de itens do Pandas DataFrame onde salvamos a saída do Amazon Textract. Execute a seguinte célula do notebook para criar uma lista de itens a serem enviados para revisão:
Você obtém uma saída de todas as linhas e colunas recebidas do Amazon Textract:
Execute a seguinte célula do notebook para obter uma lista de pares de valores-chave:
Execute o código a seguir para criar uma resposta JSON para o loop Amazon A2I combinando o valor-chave e a lista de tabelas das células anteriores:
Inicie o loop humano executando a seguinte célula do notebook:
Verifique o status do loop humano com o seguinte código:
Você obtém a seguinte saída, que mostra o status do loop humano e o bucket S3 de destino de saída:
Anotando os resultados por meio do portal do trabalhador
Execute as etapas no notebook para verificar o status do loop humano. Você pode usar o acompanhamento Caderno SageMaker Jupyter para seguir as etapas nesta postagem.
- Execute a seguinte célula do notebook para obter um link de login para navegar até o portal privado de força de trabalho:
- Escolha o link de login para o portal do trabalhador privado.
- Selecione o trabalho de revisão humana.
- Escolha Comece a trabalhar.
Você é redirecionado para o console do Amazon A2I, onde encontra o documento original exibido, seu par de valores-chave, as respostas de texto detectadas no Amazon Textract e as respostas da sua tabela.
Role para baixo para encontrar o formulário de correção para pares de valores-chave e texto, onde você pode verificar os resultados e comparar a resposta do Amazon Textract com o documento original. Você também encontrará a IU para modificar o conteúdo tabular manuscrito e impresso.
Você pode modificar cada célula com base na resposta da imagem original, inserir novamente os valores corretos e enviar sua resposta. O fluxo de trabalho de rotulagem é concluído quando você envia suas respostas.
Avaliando os resultados
Quando o trabalho de rotulagem for concluído, seus resultados deverão estar disponíveis no caminho de saída do S3 especificado na definição do fluxo de trabalho de revisão humana. As respostas humanas são retornadas e salvas no arquivo JSON. Execute a célula do notebook para obter os resultados do Amazon S3:
O código a seguir mostra um snippet do arquivo JSON de saída da anotação Amazon A2I:
Armazenar os resultados anotados do Amazon A2I no DynamoDB
Agora armazenamos o formulário com o conteúdo atualizado em uma tabela do DynamoDB para que aplicativos downstream possam usá-lo. Para automatizar o processo, basta configurar um AWS Lambda acione com o DynamoDB para extrair e enviar automaticamente informações para seus endpoints ou aplicativos de API. Para mais informações, veja Fluxos do DynamoDB e gatilhos do AWS Lambda.
Para armazenar seus resultados, execute as seguintes etapas:
- Obtenha as respostas humanas para os valores-chave e o texto em um DataFrame, executando a seguinte célula do notebook:
- Obtenha as respostas revisadas por humanos para dados tabulares em um DataFrame executando a seguinte célula:
- Combine os DataFrames em um DataFrame para salvar na tabela DynamoDB:
Criando a tabela DynamoDB
Crie sua tabela DynamoDB com o seguinte código:
Você obtém a seguinte saída:
Fazendo upload do conteúdo do DataFrame para uma tabela do DynamoDB
Faça upload do conteúdo do seu DataFrame para a tabela do DynamoDB com o seguinte código:
Observação: Ao adicionar conteúdo de vários documentos em sua tabela do DynamoDB, certifique-se de adicionar um número de documento como um atributo para diferenciar os documentos. No exemplo abaixo usamos apenas o índice como line_nr porque estamos trabalhando com um único documento.
Para verificar se os itens foram atualizados, execute o código a seguir para recuperar o valor da tabela do DynamoDB:
Como alternativa, você pode verificar a tabela no console do DynamoDB, como na captura de tela a seguir.
Conclusão
Esta postagem demonstrou como é fácil usar serviços na camada de IA da pilha AWS AI/ML, como Amazon Textract e Amazon A2I, para ler e processar dados tabulares de formulários manuscritos e armazená-los em uma tabela DynamoDB para aplicativos downstream usar. Você também pode enviar os dados de formulário aumentados do Amazon A2I para um bucket S3 para serem consumidos por seus aplicativos analíticos da AWS.
Para apresentações em vídeo, experimente blocos de anotações Jupyter ou mais informações sobre casos de uso, como processamento de documentos, moderação de conteúdo, análise de sentimentos, tradução de texto e muito mais, consulte Recursos de IA aumentada da Amazon. Se esta postagem ajuda ou inspira você a resolver um problema, adoraríamos saber mais sobre isso! O código desta solução está disponível no site GitHub repo para você usar e estender. Contribuições são sempre bem vindas!
Sobre os autores
Prem Ranga é arquiteto de soluções corporativas baseado em Atlanta, GA. Ele faz parte da comunidade técnica de aprendizado de máquina e adora trabalhar com clientes em sua jornada de ML e IA. Prem é apaixonado por robótica, é pesquisador de veículos autônomos e também construiu o Beer Pours, controlado pelo Alexa, em Houston e outros locais.
Mona Mona é arquiteto de soluções especialista em AI / ML baseado em Arlington, VA. Ela trabalha com a equipe do Setor Público Mundial e ajuda os clientes a adotar o aprendizado de máquina em grande escala. Ela é apaixonada pelas áreas de explicabilidade da PNL e ML em AI / ML.
Sriharsha MS é arquiteto de soluções especializado em IA/ML na equipe de especialistas estratégicos da Amazon Web Services. Ele trabalha com clientes estratégicos da AWS que estão aproveitando IA/ML para resolver problemas de negócios complexos. Ele fornece orientação técnica e consultoria de design para implementar aplicações de IA/ML em escala. Sua experiência abrange arquitetura de aplicativos, big data, análises e aprendizado de máquina.