Desmontagem do AWS Textract - Prós e contras revisados

Desmontagem do AWS Textract – prós e contras revisados

Reconhecimento de Texto em 2023

Em muitas empresas e organizações, muitos dados comerciais valiosos são armazenados em documentos. Esses dados estão no centro da transformação digital. Infelizmente, de acordo com as estatísticas, 80% de todos esses dados estão incorporados em formatos não estruturados, como faturas comerciais, e-mails, recibos, documentos PDF e muito mais. Portanto, para extrair e aproveitar ao máximo as informações desses documentos, as empresas começaram a contar aos poucos com serviços baseados em Inteligência Artificial (IA). Daqueles que fornecem serviços baseados em IA, a Amazon foi um dos players mais proeminentes por muito tempo. Teve suas asas abertas em diferentes soluções como processamento de documentos, reconhecimento de fala, análise de texto e muito mais.

Neste blog, veremos o AWS Textract da Amazon, um serviço de aprendizado de máquina totalmente gerenciado que extrai automaticamente texto impresso, caligrafia, tabelas e outros dados de documentos digitalizados. Vamos começar!

Em termos simples, o AWS Textract é um serviço baseado em aprendizado profundo que converte diferentes tipos de documentos em um formato editável. Considere que temos cópias impressas de faturas de diferentes empresas e armazenamos todas as informações vitais delas em excel / planilhas. Normalmente, contamos com operadores de entrada de dados para inseri-los manualmente, o que é agitado, demorado e sujeito a erros. Mas usando o Textract, tudo o que precisamos fazer é carregar nossas faturas para ele e, por sua vez, ele retorna todo o texto, formulários, pares de valores-chave e tabelas nos documentos de uma forma mais estruturada. Abaixo está uma captura de tela de como a AWS faz extração inteligente de informações:

AWS Textract Teardown - Prós e contras revisados ​​PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.
Extração de informações no AWS Textract

Não apenas texto digitado, o AWS Textract também identifica textos manuscritos nos documentos. Isso torna a extração de informações mais útil, pois em alguns casos extrair texto escrito à mão é mais complicado de extrair do que texto digitado. Agora vamos ver alguns dos casos de uso comuns para usar o Textract:

Captura de dados robusta e normalizada: O Amazon Textract permite a extração de texto e dados tabulares de uma ampla variedade de documentos, como documentos financeiros, relatórios de pesquisa e notas médicas. No entanto, não são APIs personalizadas, mas aprendem com uma grande quantidade de dados todos os dias e, com esse aprendizado contínuo, extração não estruturada e os dados estruturados do seu documento serão muito mais fáceis.

Extração de par de valores-chave: A extração de pares chave-valor tornou-se um problema comum para o processamento de documentos, mas com o Amazon Textract isso pode ser facilmente resolvido. Podemos construir pipelines para extração de pares chave-valor usando o Textract, que automatiza documento processamento desde a digitalização de documentos até o envio de dados para planilhas do Excel, etc.

Criação de um índice de pesquisa inteligente: O Amazon Textract permite que você crie bibliotecas de texto detectado em arquivos de imagem e PDF.

Usando extração de texto inteligente para Processamento de Linguagem Natural (PNL) - o Amazon Textract permite que você extraia texto em palavras e linhas. Ele também agrupa o texto por células da tabela se a análise da tabela de documentos do Amazon Textract estiver ativada. O Amazon Textract fornece controle sobre como o texto é agrupado como entrada para PNL.


Procurando uma solução inteligente de reconhecimento de texto? Vá para Nanoredes e usar a solução com precisão acima de 95%.


Nesta seção, discutiremos como o AWS Textract funciona. Sabemos que algoritmos de IA e ML fortes estão por trás deles; no entanto, não existem modelos de código aberto para mergulhar nas especificidades. Mas tentarei decodificar o funcionamento resumindo a documentação que pode ser encontrada aqui. Vamos começar!

Como funciona o Amazon (AWS) Textract?
Como funciona o Amazon (AWS) Textract? (Fonte: Dev.to)

Em primeiro lugar, sempre que um documento novo ou digitalizado é enviado para o Textract, ele cria uma lista de objetos de bloco para todo o texto detectado. Por exemplo, digamos que uma fatura consista em cem palavras hoje, a AWS cria cem objetos de bloco para todas as palavras. Esses blocos contêm informações sobre um item detectado, onde ele está localizado e a confiança que Amazon Textract tem na precisão do processamento.

Normalmente, a maioria dos documentos é composta pelos seguintes blocos:

  • Página
  • Linhas e palavras de texto
  • Dados de formulário (pares de valores-chave)
  • Tabelas e células
  • Elementos de seleção

Abaixo está um exemplo e a estrutura de dados do bloco do AWS Textract:

{ "Blocks":[ { "Geometry": { "BoundingBox": { "Width": 1.0, "Top": 0.0, "Left": 0.0, "Height": 1.0 }, "Polygon": [ { "Y": 0.0, "X": 0.0 }, { "Y": 0.0, "X": 1.0 }, { "Y": 1.0, "X": 1.0 }, { "Y": 1.0, "X": 0.0 } ] }, "Relationships": [ { "Type": "CHILD", "Ids": [ "2602b0a6-20e3-4e6e-9e46-3be57fd0844b", "82aedd57-187f-43dd-9eb1-4f312ca30042", "52be1777-53f7-42f6-a7cf-6d09bdc15a30", "7ca7caa6-00ef-4cda-b1aa-5571dfed1a7c" ] } ], "BlockType": "PAGE", "Id": "8136b2dc-37c1-4300-a9da-6ed8b276ea97" }..... ], "DocumentMetadata": { "Pages": 1 }
}

No entanto, o conteúdo dentro dos blocos muda com base na operação que chamamos. Para a operação de detecção de texto, os blocos retornam as páginas, linhas e palavras do texto detectado. Se estivermos usando as operações de análise de documento, os blocos retornarão as páginas detectadas, pares de valores-chave, tabelas, elementos de seleção e texto. No entanto, isso apenas explica o funcionamento de alto nível do Textract. Na próxima seção, vamos mergulhar no OCR por trás do Textract.

Não há especificações sobre o tipo de OCR que o Amazon Textract usa, pois é um produto comercial. No entanto, podemos compará-lo a um dos OCRs de código aberto mais populares, “Tesseract”, para entender sua precisão e capacidade de extrair vários tipos de documentos.

OCR AWS Textract
AWS Textract OCR (fonte: site da AWS)

O Tesseract OCR é baseado em LSTM, uma arquitetura de rede neural baseada em aprendizado profundo que tem um desempenho excepcionalmente bom em dados de texto. A seguir estão os formatos de documentos que o tesseract suporta: texto simples, hOCR (HTML), PDF, PDF somente texto invisível, TSV. Possui suporte a Unicode (UTF-8) e oferece suporte a mais de 100 idiomas prontos para uso. No entanto, como todo o código é de código aberto, ele pode ser treinado para reconhecer outras linguagens, mas isso requer um aprendizado profundo e especialização em visão computacional. Quando se trata da extração de tabela e par de valores-chave, o tesseract falha. Ainda assim, podemos construir pipelines personalizados para resolver esse problema.

Textract OCR também é uma arquitetura de rede neural baseada em aprendizado profundo, mas isso não pode ser completamente personalizável ou treinado em um conjunto de dados personalizado. Seu trabalho é analisar e extrair todos os dados que estão dentro de um documento. No entanto, Textract sintoniza automaticamente seus dados e atinge maior precisão em movimento se um humano verificar as informações extraídas (humano no loop). Para tarefas como extração de tabela e extração de par de valores-chave, Textract faz um bom trabalho, alcançando maior precisão do que Tesseract. Mas é limitado apenas a alguns idiomas e formatos de documento.

Abaixo estão alguns dos tipos de documentos que podem ser processados ​​usando AWS Textract:

  • Faturas / contas regulares
  • Documentos financeiros
  • Documentos Médicos
  • Documentos Manuscritos
  • Recibos de pagamento ou documentos de funcionários

Na próxima seção, vamos dar uma olhada na API Textract Python.


Procurando por um inteligente Solução de OCR para extrair informações de seus documentos? Vá para Nanoredes para extrair texto de documentos em qualquer formato em qualquer idioma.


A API Amazon Textract pode ser utilizada em várias linguagens de programação. Nesta seção, veremos um bloco de código de extração de valor-chave usando Textract com Python. Para obter mais informações sobre idioma e suporte de API, verifique os documentos aqui.

Este trecho de código é um exemplo de como podemos realizar a extração de pares de valores-chave em documentos que utilizam a API Python do Textract. Para fazer isso funcionar, também teremos que configurar a chave de API no painel da AWS. Agora vamos mergulhar no snippet de código,

Em primeiro lugar, importamos todos os pacotes necessários para enviar documentos para a AWS e processar o texto extraído.

import boto3
import sys
import re
import json

Em seguida, temos uma função chamada get_kv_map, aqui nós usamos boto3 para se comunicar com a API Amazon Textract, carregue o documento e busque a resposta do bloco. Agora obtemos todos os pares de valores-chave verificando o 'BlockType' e o retornamos nos dicionários.

def get_kv_map(file_name): with open(file_name, 'rb') as file: img_test = file.read() bytes_test = bytearray(img_test) print('Image loaded', file_name) # process using image bytes client = boto3.client('textract') response = client.analyze_document(Document={'Bytes': bytes_test}, FeatureTypes=['FORMS']) # Get the text blocks blocks=response['Blocks'] # get key and value maps key_map = {} value_map = {} block_map = {} for block in blocks: block_id = block['Id'] block_map[block_id] = block if block['BlockType'] == "KEY_VALUE_SET": if 'KEY' in block['EntityTypes']: key_map[block_id] = block else: value_map[block_id] = block return key_map, value_map, block_map

Depois disso, temos uma função que obtém a relação entre os pares de valores-chave extraídos usando os itens do bloco. Basicamente, usando os relacionamentos presentes nas informações do bloco (JSON) esta função associa as chaves e valores do documento.

def get_kv_relationship(key_map, value_map, block_map): kvs = {} for block_id, key_block in key_map.items(): value_block = find_value_block(key_block, value_map) key = get_text(key_block, block_map) val = get_text(value_block, block_map) kvs[key] = val return kvs def find_value_block(key_block, value_map): for relationship in key_block['Relationships']: if relationship['Type'] == 'VALUE': for value_id in relationship['Ids']: value_block = value_map[value_id] return value_block

Por último, retornamos o texto presente nos pares de valores-chave salvos.

def get_text(result, blocks_map): text = '' if 'Relationships' in result: for relationship in result['Relationships']: if relationship['Type'] == 'CHILD': for child_id in relationship['Ids']: word = blocks_map[child_id] if word['BlockType'] == 'WORD': text += word['Text'] + ' ' if word['BlockType'] == 'SELECTION_ELEMENT': if word['SelectionStatus'] == 'SELECTED': text += 'X' return text def print_kvs(kvs): for key, value in kvs.items(): print(key, ":", value) def search_value(kvs, search_key): for key, value in kvs.items(): if re.search(search_key, key, re.IGNORECASE): return value def main(file_name): key_map, value_map, block_map = get_kv_map(file_name) # Get Key Value relationship kvs = get_kv_relationship(key_map, value_map, block_map) print("nn== FOUND KEY : VALUE pairs ===n") print_kvs(kvs) # Start searching a key value while input('n Do you want to search a value for a key? (enter "n" for exit) ') != 'n': search_key = input('n Enter a search key:') print('The value is:', search_value(kvs, search_key)) if __name__ == "__main__": file_name = sys.argv[1] main(file_name)

Desta forma, podemos usar a API AWS Textract para realizar diferentes tarefas de extração de informações. As funções / abordagem são semelhantes à maioria das linguagens de programação. Também podemos personalizar a abordagem com base em nossos casos de uso, se quisermos utilizar as APIs.


Quer automatizar a entrada de dados de documentos? A solução de OCR baseada em IA da Nanonets pode ajudar a extrair informações importantes de documentos estruturados / não estruturados e colocar o processo em piloto automático!


Prós e contras de usar AWS Textract

Prós:

Configuração fácil com serviços AWS: Configurar o Textract com outro serviço AWS é uma tarefa fácil em comparação com outros fornecedores. Por exemplo, o armazenamento de informações de documentos extraídos com Amazon DynamoDB ou S3 pode ser feito configurando um add-on.

Seguro: O Amazon Textract está em conformidade com o modelo de responsabilidade compartilhada da AWS, que inclui regulamentos e diretrizes para proteção de dados. A AWS é responsável por proteger a infraestrutura global que executa todos os serviços da AWS; portanto, não precisamos nos preocupar com o vazamento de nossos dados ou uso por terceiros.

Contras:

Incapacidade de extrair campos personalizados: Pode haver vários campos de dados em uma determinada fatura, como ID da fatura, Data de vencimento, Data da transação, etc. Esses campos são comuns na maioria das faturas. Mas se quisermos extrair um campo personalizado de uma fatura, digamos, número GST ou informações bancárias, o Textract faz um trabalho ruim.

Integrações com provedores upstream e downstream: O Textract não permite que você se integre facilmente a diferentes provedores, digamos, por exemplo, teremos que construir um pipeline de RPA com um serviço de terceiros; seria difícil encontrar plug-ins apropriados para Textract.

Capacidade de definir cabeçalhos de tabela: Para tarefas de extração de tabela, o textract não permite definir cabeçalhos de tabela. Portanto, não seria fácil pesquisar ou localizar uma determinada coluna ou uma tabela em um determinado documento.

Sem verificações de fraude: Os OCRs modernos agora são capazes de descobrir se um determinado documento é original ou falso, validando datas e localizando regiões pixeladas. O AWS Textract não vem com isso, seu único trabalho é selecionar todo o texto de um documento carregado.

Sem extração de texto vertical: Em alguns dos documentos, os números das faturas ou endereços podem ser encontrados em um alinhamento vertical. No momento, a AWS oferece suporte apenas à extração de texto horizontal com uma leve rotação no plano.

Limite de idioma: O Amazon Textract oferece suporte para detecção de texto em inglês, espanhol, alemão, francês, italiano e português. O Amazon Textract não retornará o idioma detectado em sua saída.

Tudo é nuvem: Qualquer documento processado com Textract vai para a nuvem, suportando apenas algumas regiões. Mais Informações SUA PARTICIPAÇÃO FAZ A DIFERENÇA. No entanto, algumas empresas podem não estar interessadas em levar seus documentos para a nuvem por motivos como confidencialidade ou requisitos legais. Ainda assim, infelizmente, o AWS Textract não oferece suporte a nenhuma implantação local para processamento de documentos.

Retreinamento: Se nossa precisão for baixa nas tarefas de extração de informações para um conjunto de documentos, o Textract não nos permite treiná-los novamente. Para resolver isso, teremos que investir novamente em um fluxo de trabalho de revisão humana, em que um operador deve verificar manualmente e anotar os valores extraídos incorretamente, o que também é demorado.

Conclusão

Esperamos que esta revisão do AWS Textract tenha sido útil ao considerar diferentes soluções para extração de dados/reconhecimento de texto de seus documentos.

Temos avarias semelhantes se você estiver procurando por revisão ou alternativas para Kofax or Visão Google.

Continuaremos atualizando esta postagem periodicamente para cobrir as alterações mais recentes. Para mais detalhes sobre Software OCR aqui está um revisão detalhada das principais soluções de OCR disponíveis no mercado hoje.

Adicione suas idéias e perguntas sobre o uso da solução Textract da Amazon na seção de comentários.

Fonte: imagem Hero do site da AWS.

Carimbo de hora:

Mais de IA e aprendizado de máquina