Como extrair e estruturar Dados de PDFs utilizando IA— Parte 1
1. Introdução
A extração de informações de documentos PDF é uma tarefa crucial para a automação de processos e eficiência operacional de muitas empresas.
O Zeca, uma startup inovadora incubada pela Taqtile, enfrentava desafios nessa área, principalmente relacionados à acurácia, ao tempo e ao custo de extração desses dados. Diante desses obstáculos, tornou-se necessário revisar a metodologia e testar novas ferramentas de OCR (Reconhecimento Óptico de Caracteres).
A solução do Zeca extrai informações de cotações de arquivos PDF para fazer busca de produtos de maneira automática, evitando que os clientes tenham que fazer estas atividades manualmente.
Abaixo temos um exemplo fictício deste cenário — a ideia é, a partir de um PDF, detectar e extrair os dados das colunas EAN, Nome e Quantidade (nesta ordem), transformando-os em um formato JSON, conforme mostramos nas imagens a seguir:
Para este fim, inicialmente o Zeca utilizava o Google DocumentAI, uma ferramenta que combina machine learning e modelos de linguagem natural para extrair e organizar informações de PDFs juntamente com os LLMs da OpenAI para formatação dos resultados. Apesar de sua robustez, percebemos que a solução apresentava limitações em termos de acurácia e tempo de processamento, impactando diretamente nossa eficiência operacional. Esse cenário nos levou a explorar alternativas e a investigar de modo mais rigoroso como identificar a melhor solução de OCR para nossas necessidades. Os resultados preliminares mostram variações significativas entre as soluções, tanto em termos de acurácia quanto de eficiência.
Neste post, compartilharemos os primeiros passos dessa jornada, detalhando o processo de pesquisa, seleção e avaliação das bibliotecas de OCR que testamos. Utilizamos amostras reais de produção para medir a acurácia e o tempo total de extração e formatação dos dados.
2. Contexto
Ainda não tínhamos metrificado, de maneira sistemática, a solução que estávamos usando, o Google DocumentAI. Quando olhamos para os dados e analisamos o que estava sendo solicitado nas cotações, tínhamos bastante convicção de que a ferramenta do Google, em alguns momentos, não estava atendendo às demandas corretamente, mesmo utilizando um modelo de LLM na saída para ajudar a organizar as informações em um JSON válido. O tempo de extração de dados do PDF somando ao do LLM no output, ficava em média em 53 segundos. Como as cotações são feitas em tempo real, gostaríamos que fosse o mais rápido possível.
No diagrama abaixo, vemos como era o fluxo de dados da solução inicial:
Para atingir nossos objetivos de melhorias, fomos pesquisar bibliotecas de OCR e chegamos a alguns candidatos, considerando alguns fatores além da acurácia e do tempo de extração. Esses fatores incluíram:
- Facilidade de Integração: A simplicidade com que a biblioteca pode ser integrada ao nosso sistema existente, minimizando a necessidade de alterações na infraestrutura.
- Custo: A relação custo-benefício de cada solução, especialmente no contexto de um uso contínuo e em larga escala.
- Flexibilidade: A capacidade da biblioteca de lidar com diferentes tipos de documentos e formatos de dados, garantindo uma aplicação ampla e adaptável.
3. Bibliotecas candidatas
Testamos as seguintes soluções:
I. Google DocumentAI
II. EasyOCR
III. PaddleOCR
IV. Azure Document Intelligence
I. Google DocumentAI: é um serviço do Google Cloud que aplica tecnologias de machine learning para extrair dados estruturados de documentos. É projetado para automatizar a extração de informações a partir de diversos tipos de documentos, como PDFs e imagens digitalizadas.
II. EasyOCR: é uma biblioteca construída com base em frameworks de deep learning como PyTorch e pode reconhecer texto em vários idiomas (mais de 80), é projetado para ser fácil de usar com chamadas de API simples para extração de texto.
III. PaddleOCR: é parte da plataforma de deep learning PaddlePaddle desenvolvida pelo Baidu, cobrindo também mais de 80 idiomas.
IV. Azure Document Intelligence: é um serviço baseado em nuvem da Microsoft que aplica aprendizado de máquina para extrair texto, pares chave-valor e tabelas de documentos.
Ainda precisávamos considerar que, com exceção do Azure Document Intelligence e do Google DocumentAI, que são baseados em nuvem, se o EasyOCR ou PaddleOCR fosse o vencedor, teríamos que provisionar uma máquina virtual e construir uma API para poder fazer as extrações dos PDFs. Além disso, assim como o Google Document AI, eles também precisariam de um LLM para ajustar os dados na saída, que era algo que queríamos evitar, mas consideraríamos em caso de obtenção de boa performance.
4. Análises preliminares
Nesta primeira parte da nossa jornada, abordamos a importância da extração de informações de documentos PDF e os desafios enfrentados pela startup Zeca. Exploramos algumas ferramentas de OCR disponíveis e discutimos os critérios que usamos para selecionar as soluções candidatas.
Observando o gráfico abaixo, vemos que o Azure Document Intelligence tem a maior acurácia média, chegando próximo de 100%.
Isso indica que este método teve o melhor desempenho médio quando comparado a um padrão. Uma vantagem da solução da Azure é que ele não necessita de um LLM na saída para estruturar em JSON.
Em segundo lugar vem o Google DocumentAI, com aproximadamente 96.37%, seguido por EasyOCR com 88.64% e em último o PaddleOCR com 77.82%.
Em relação ao tempo, o gráfico 2 abaixo mostra que a solução inicialmente adotada pelo Zeca estava levando mais que o dobro do que as outras soluções testadas, conforme gráfico abaixo:
5. Próximos passos (Parte 2)
No próximo post, explicaremos com mais detalhes sobre metodologia e como medimos a acurácia dos modelos. Também mostraremos como criamos os padrões que utilizamos para comparar os dados retornados por cada ferramenta. Fique ligado!