Extração de dados de documentos com OCR: Estudo Teórico

Mirela Domiciano
June 4, 2025

Extração de dados de documentos com OCR

OCR, ou Reconhecimento Óptico de Caracteres (do inglês Optical Character Recognition), é uma tecnologia que permite a conversão de diferentes tipos de documentos, como PDFs, imagens digitalizadas e fotos, em texto editável e pesquisável.

Diante disso, este artigo consiste em um estudo teórico sobre extração de dados de documentos com OCR, comparando diferentes soluções de OCR e modelos de Vision AI. Ele surgiu da necessidade de aprimorar os sistemas de extração de dados de documentos, com o objetivo de reduzir a latência e aumentar a precisão no processamento. Para isso, a análise avaliou alternativas que equilibrassem velocidade e qualidade na extração de informações.

Em um cenário onde eficiência e precisão na extração automatizada de dados são cruciais, compreender as capacidades e limitações dessas tecnologias torna-se essencial. Por essa razão, esse benchmark também não se limitou a comparar o desempenho técnico das soluções, mas também buscou identificar abordagens que garantissem resultados mais consistentes e confiáveis no processamento de documentos diversos.

Etapas do OCR

Os OCRs modernos, no geral, seguem algumas etapas de funcionamento, são elas: 

  • Pré-processamento da imagem: A imagem é pré-processada visando melhorar a qualidade da imagem e facilitar no reconhecimento. Esta etapa pode envolver o redimensionamento, aplicação de filtros, binarização, ajuste de contraste e brilho, redução de ruído, entre outros.
  • Detecção de texto: No geral, utiliza-se modelos de aprendizado de máquina para o reconhecimento das áreas que possuem texto na imagem.
  • Análise de layout: Depois de detectar as regiões de texto, determina-se a estrutura e ordem dos textos, essa parte organiza a saída para facilitar a leitura, porém não é usada por todas as técnicas de OCR. 
  • Pós-processamento: Por fim, a saída e pós processada para remover o ruído, corrigir os erros de ortografia e precisão geral. Os modelos de linguagem, atuando como processadores de texto, refinam a saída prevendo a probabilidade de uma sequência de palavras com base na imagem de entrada. Modelos estatísticos e métodos avançados, incluindo aprendizado profundo, podem ser empregados para esse fim.
 Fluxo de etapas do OCR mostrando etapas como pré-processamento, detecção de texto, análise de layout e reconhecimento de texto.
Fluxo OCR: Da imagem de recibo ao texto digitalizado, passando por pré-processamento e reconhecimento. Fonte: blog.roboflow.com

Técnicas de OCR

O processo de identificação de caracteres varia conforme o tipo do material analisado, já que formatos padronizados e layouts variados apresentam desafios diferentes. Para lidar com essas demandas, destacam-se duas principais técnicas de OCR para extração de dados de documentos:

Reconhecimento de padrões (Pattern Recognition)

Essa metodologia compara caracteres capturados com exemplos pré-definidos. Cada caractere identificado é confrontado com um banco de dados de padrões conhecidos, permitindo que o sistema determine com precisão o caractere mais semelhante. Essa estratégia é ideal para materiais com fontes padronizadas, pois garante maior eficiência.

Análise de características (Feature Analysis)

A Análise de Características foca nas particularidades de cada caractere, como linhas, curvas e traços. Isso é especialmente eficaz para lidar com estilos variados de escrita, incluindo manuscritos, oferecendo flexibilidade e alta precisão em contextos mais complexos.

Abordagens de OCR

Tesseract

O tesseract é uma das abordagens mais conhecidas de OCR. Desenvolvido pela HP em 1980, ele é atualmente uma solução open-source disponibilizada pelo Google. Inicialmente, o tesseract não utilizava modelos de deep learning, somente utilizava princípios tradicionais de processamento de imagem, que envolvem lógicas manuais e heurísticas. 

No entanto, a partir da versão 4.0, ele incorporou um modelo LSTM (Long Short-Term Memory), que é um tipo de rede neural recorrente. Essa mudança aumentou significativamente a precisão no reconhecimento de textos, já que as LSTMs são altamente eficazes na aprendizagem de sequências e no entendimento do contexto dos caracteres dentro de uma linguagem.

Funcionamento

Esquema mostrando funcionamento da abordagem de OCR Tesseract
Funcionamento do OCR Tesseract: Etapas desde a limiarização até a saída da palavra. Fonte: researchgate.net

Vantagens

  • Open-Source
  • Versatilidade de idiomas
  • Acurácia consideravelmente boa

Limitações

  • Propenso a erros se a separação do primeiro plano e do plano de fundo da imagem;
  • Exige recursos e tempo significativos para personalização e desenvolvimento, principalmente para um volume maior de documentos;
  • Não trabalha bem com layout complexos, como tabelas e formatos irregulares;
  • Não possui reconhecimento de caligrafia . Tem limitações na leitura de escrita manual; 
  • Requer imagens de alta qualidade (geralmente acima de 300 DPI) para resultados precisos;
  • Dificuldade para entender o contexto;
  • Não possui interface gráfica, necessitando integração manual ou desenvolvimento de uma GUI.

Licença:

  • Apache-2.0

DocTR

Baseado em TensorFlow 2 e PyTorch, essa solução é muito útil para extrair dados de documentos e imagens. Além de contar com modelos pré-treinados para detecção e reconhecimento, ela também permite a criação de modelos customizados, ajustados às necessidades específicas de cada aplicação ou conjunto de dados. Para isso, oferece diferentes arquiteturas voltadas tanto para a detecção quanto para o reconhecimento de texto.

Se quiser testar rapidamente essa tecnologia, acesse: Doctr no Hugging Face.

Text Detection

O Text Detection identifica elementos textuais em imagens, reconhecendo caracteres em sequência contínua, ou seja, palavras. Esses elementos podem ser localizados de diferentes formas, como caixas delimitadoras, polígonos ou segmentação binária, que define se um pixel pertence ou não ao texto. A tecnologia também é capaz de lidar com documentos rotacionados e distorcidos.

Para essa tarefa, o docTR oferece diversas arquiteturas de detecção, incluindo:

  • LinkNet: linknet_resnet18, linknet_resnet34, linknet_resnet50
  • DBNet: db_resnet50, db_mobilenet_v3_large
  • FAST: fast_tiny, fast_small, fast_base

Sendo que cada arquitetura se baseia em um modelo específico para otimizar a detecção de texto:

Para uma comparação detalhada dessas arquiteturas no PyTorch e TensorFlow, acesse a tabela de comparação.

Text Recognition

O Text Recognition tem como objetivo transcrever a sequência de caracteres presentes em uma imagem, convertendo-os em texto editável. Para isso, o docTR oferece diferentes arquiteturas de reconhecimento, cada uma com características específicas.

As arquiteturas disponíveis incluem:

  • CRNN: crnn_vgg16_bn, crnn_mobilenet_v3_small, crnn_mobilenet_v3_large
  • SAR: sar_resnet31
  • MASTER: master
  • ViTSTR: vitstr_small, vitstr_base
  • PARSeq: parseq

Cada uma dessas arquiteturas se baseia em um modelo específico para otimizar o reconhecimento de texto:

Para uma comparação detalhada dessas arquiteturas no PyTorch e TensorFlow, acesse a tabela de comparação.

Parâmetros Importantes

O docTR oferece diversos parâmetros configuráveis para aprimorar o reconhecimento de texto. Entre os principais estão:

  • straighten_pages: Ajusta a orientação da página antes do processamento, permitindo a extração de texto em documentos na horizontal e na vertical.
  • assume_straight_pages: Se ativado, ajusta as caixas delimitadoras para documentos que já estão retos.
  • preserve_aspect_ratio: Mantém a proporção dos documentos ao redimensioná-los antes do processamento.
  • symmetric_pad: Garante que o preenchimento seja aplicado de forma simétrica, em vez de apenas no canto inferior direito.
  • export_as_straight_boxes: Permite exportar caixas delimitadoras retas mesmo em documentos inclinados ou girados.
  • resolve_lines: Agrupa palavras automaticamente em linhas (padrão: True).
  • resolve_blocks: Agrupa automaticamente as linhas em blocos de texto (padrão: False).
  • paragraph_break: Define o espaço mínimo entre parágrafos (padrão: 0,035).
  • disable_page_orientation e disable_crop_orientation: Desativam a orientação automática da página e do recorte, respectivamente.

Licença

O docTR está disponível sob a licença Apache-2.0, permitindo seu uso e modificação em diversos projetos.

EasyOCR

EasyOCR é uma biblioteca de OCR em Python baseada em PyTorch, projetada para ser simples e flexível. Suporta cerca de 80 idiomas, incluindo o português, e permite o uso e treinamento de modelos personalizados para detecção e reconhecimento de texto.

Funcionamento

Diagrama do EasyOCR, ilustrando as etapas de pré-processamento, detecção e reconhecimento de texto
Framework EasyOCR: Fluxo com pré-processamento, CRAFT, ResNet+LSTM+CTC e pós-processamento. Fonte: medium.com/@adityamahajan.work

O EasyOCR segue um fluxo estruturado para converter imagens em texto, utilizando PyTorch como base para seus modelos de aprendizado profundo.

  1. Detecção de Texto
    • Utiliza CRAFT (Character Region Awareness for Text detection) para identificar áreas de texto na imagem.
    • O CRAFT é uma implementação em PyTorch com licença MIT. Veja o Repositório e Paper
  2. Reconhecimento de Texto
    • O modelo utilizado é o CRNN (Convolutional Recurrent Neural Network), que combina redes convolucionais e recorrentes para extrair e interpretar texto.
    • O processo ocorre em três etapas:
      • Extração de Características: Modelos como ResNet  e VGG identificam os padrões visuais do texto.
      • Rotulagem de Sequência: Usa LSTM, um tipo de rede neural recorrente, para processar sequências de características, manter informações contextuais e gerar uma sequência de probabilidades para cada possível caractere.
      • Decodificação: A função de decodificação CTC é utilizada para converter as sequências em texto previsível. Ela transforma a sequência de probabilidades em uma sequência de texto, lidando com alinhamento temporal e repetição de caracteres. 
  3. Pós-processamento e Saída
    • Após o reconhecimento, o EasyOCR pode refinar o texto extraído para melhor legibilidade e precisão.

Vantagens 

  • Simples implementação;
  • Suporte para múltiplos idiomas, incluindo português
  • Código Open-Source;
  • Possibilita integração com outros modelos de detecção e reconhecimento.

Limitações 

  • Possui dificuldade com layouts complexos, com reconhecimento de caligrafia e fontes especializadas.

Licença

EasyOCR está disponível sob a licença Apache-2.0, permitindo uso e modificação livremente.

Keras-OCR

O Keras-OCR é uma biblioteca de OCR baseada em deep learning criada com base no Keras e no Tensor Flow. Esta é uma versão ligeiramente polida e empacotada da implementação do Keras CRNN e do modelo de detecção de texto CRAFT publicado. Além disso, ele fornece uma API de alto nível para treinar um pipeline de detecção de texto e OCR.

Vantagens 

  • Open-Source
  • Funciona bem para layouts complexos 
  • Deep Learning customizável
  • Transfer Learning: é uma técnica onde um modelo treinado em uma tarefa é reutilizado como ponto de partida para outro modelo em uma tarefa similar. No Keras pode-se utilizar modelos pré-treinados disponíveis na biblioteca, como VGG e ResNet, e ajustar para a sua tarefa específica. Isso é feito congelando algumas camadas do modelo pré-treinado e treinando apenas as novas camadas adicionais, ou ajustando todo o modelo com um conjunto menor de dados.  

Limitações

  • Implementação e customização mais complexa
  • Suporta linguagens limitadas

Paddle OCR

O PaddleOCR é baseado no PaddlePaddle, uma plataforma de aprendizado profundo. Ele é projetado para ser altamente eficiente e flexível, suportando desde a detecção de texto em imagens até o reconhecimento e recuperação de informações textuais.

Informações sobre Paddle OCR, seu funcionamento e aplicações
PaddleOCR: Funcionalidades, modelos industriais, algoritmos e sistema PP-Structure. Fonte: paddlepaddle.github.io

Vantagens

  • Tem a habilidade de detectar a área de tabelas na imagem;
  • Fácil de utilizar
  • Acurácia Alta

Limitações

  • Limita integração com terceiros
  • Linguagem limitadas

Licença

  • Apache-2.0

Vision Language Models 

Vision Language Models são modelos capazes de aprender simultaneamente a partir de imagens e textos, permitindo que realizem diversas tarefas, como responder perguntas visuais e gerar legendas para imagens. Eles combinam técnicas de visão computacional e processamento de linguagem natural para entender e gerar conteúdo que envolve ambos os tipos de dados.

Experimentação

Primeira fase: Teste de modelos de visão

Para garantir um padrão nos testes, os arquivos .pdf foram convertidos para .png, permitindo que os modelos trabalhassem exclusivamente com imagens. A experimentação começou pelos modelos de visão, considerando possíveis mudanças futuras na API.

Para facilitar a execução dos testes, foi desenvolvida uma classe base que permite chamadas via LiteLLM e formata automaticamente o prompt de imagem. Além disso, uma estrutura foi criada para processar todos os documentos e salvar os resultados em uma tabela, garantindo maior organização e comparabilidade dos dados extraídos.

Os testes foram realizados com os modelos GPT-4o, GPT-4o-Mini, Gemini-1.5-Flash-001 e Gemini-1.5-Flash-002. Para cada um, foram fornecidos os campos do schema do documento, acompanhados de suas descrições, servindo como guia para o modelo – sem solicitar retorno em JSON. Essa abordagem facilita a avaliação posterior, já que a base de dados utilizada contém documentos com informações extraídas manualmente.

Na etapa de validação, foram analisados automaticamente os campos ausentes na extração. Para verificar a coerência dos valores, um modelo avaliador foi utilizado para identificar inconsistências e fornecer justificativas quando necessário. Embora essa metodologia tenha se mostrado eficiente na maioria dos casos, foi necessária uma revisão manual das respostas. Em algumas situações, o modelo de avaliação identificava incoerências em dados que estavam corretos, mas apresentavam pequenas variações.

Resultados

Tabelas de Dados Extraídos

Foram 19 dados de comprovantes de pagamento.

Tabela de Métricas

Tabela de dados extraídos contendo informações sobre comprovantes de pagamento‍
Métricas de extração de dados de pagamentos por modelos de visão (GPTs, Gemini).

Gráficos de Resultantes

  • Quantidade de incoerências para cada tipo de campo
Gráfico representando a quantidade de tipos de campos incorretos de comprovantes de pagamento em diferentes modelos de processamento.
Quantidade de campos incorretos por tipo (data, cpf, etc.) nos modelos de visão.
  • Quantidade de campos faltantes e incoerências
Comparativo de campos faltantes e incorretos entre modelos de visão (GPTs, Gemini).

Segunda fase: teste dos modelos de visão computacional e soluções de OCR

A segunda fase envolveu a análise de aproximadamente 40 imagens de comprovantes de pagamento, com o objetivo de avaliar o desempenho tanto dos modelos de visão computacional quanto das soluções de OCR. Para isso, foi implementada uma pipeline em duas etapas: primeiro, a extração do texto das imagens e, em seguida, a estruturação dos dados em formato JSON.

Essa abordagem permitiu uma avaliação mais precisa do desempenho na organização das informações, utilizando um modelo específico para estruturar os dados. Isso facilitou a comparação com as extrações manuais e ajudou a identificar padrões e possíveis melhorias no processo.

Modelos de Visão Testados

  • Gemini 1.5 Flash-001
  • Gemini 1.5 Flash-002
  • GPT-4o
  • GPT-4o Mini
  • Llama 3.2 Vision 11B
  • Pixtral 12B

Soluções de OCR Testadas

  • Pytesseract
  • Surya
  • EasyOCR
  • docTR, testado com as seguintes combinações de modelos:
    • fast_tiny + crnn_mobilenet_v3_small
    • fast_base + crnn_mobilenet_v3_small
    • fast_tiny + crnn_mobilenet_v3_large

Essas combinações foram selecionadas por apresentarem melhor desempenho em experimentos cruzados entre os modelos avaliados.

Resultados com Modelos de Vision

Tabela de Métricas e Campos

Tabela com resultados de modelos de visão, mostrando métricas como tempo médio, tokens médios, total de matches e taxa de acerto para diferentes modelos.
Tabela com resultados de modelos de visão, mostrando métricas como tempo médio, tokens médios, total de matches e taxa de acerto para diferentes modelos.

Gráficos de Resultados

  • Tempo Médio e Percentual de Acerto
Gráfico mostrando o tempo médio e a porcentagem de acerto de diferentes modelos de visão, incluindo gemini, gpt e mist, demonstrando eficiência em desempenho.‍
Tempo médio e taxa de acerto dos modelos de visão (Gemini, GPT, Llama, Pixtral).

  • Eficiência (Porcentagem(%)/Tempo(s))
Gráfico demonstrando a eficiência dos modelos de visão com taxa de acerto e tempo médio
Eficiência (acerto/tempo) dos modelos de visão (Gemini, GPT, Llama, Pixtral).

Resultados com Soluções de OCR

Tabela de Métricas e Campos

Tabela com resultados de Soluções de OCR
Tabela com resultados de Soluções de OCR, mostrando métricas como tempo médio, acurácia, eficiência, total de matches e total de campos para diferentes modelos.

Gráficos de Resultados

  • Tempo Médio e Percentual de Acerto
Gráfico mostrando o tempo médio e a porcentagem de acurácia de diferentes modelos de visão.
Tempo médio e acurácia das soluções de OCR (Surya, DocTR, Pytesseract, EasyOCR).

  • Eficiência (Porcentagem(%)/Tempo(s))
Eficiência (acurácia/tempo) das soluções de OCR (Surya, DocTR, Pytesseract, EasyOCR).
Eficiência (acurácia/tempo) das soluções de OCR (Surya, DocTR, Pytesseract, EasyOCR).

Conclusões

A análise comparativa entre soluções de OCR e modelos de visão computacional revelou insights importantes sobre o desempenho e as limitações de cada abordagem.

O Pytesseract destacou-se pela eficiência computacional, apresentando o menor tempo médio de processamento entre todas as soluções testadas. Já entre os modelos de visão, o Gemini-1.5-Flash-002 demonstrou o melhor desempenho geral, seguido de perto pelo GPT-4 Mini. No entanto, o GPT-4-Vision apresentou limitações na extração de determinadas imagens, possivelmente devido a filtros de conteúdo, que podem ser ajustados via prompt ou configuração dos filtros.

Um desafio comum a todas as soluções foi a extração precisa de códigos de barras, com erros recorrentes como troca de números, contagem incorreta de zeros e omissão de dígitos. Neste aspecto, o Gemini teve um desempenho superior ao GPT-4-Vision.

Além disso, a análise evidenciou que a extração direta de campos pode não ser a abordagem mais eficaz. Alguns problemas estavam mais relacionados à estruturação dos dados do que à extração em si. Isso reforça a necessidade de refinamento dos schemas para reduzir ambiguidades e melhorar a organização das informações extraídas.

Entre as versões do Gemini, o modelo 002 demonstrou maior consistência e precisão, superando o modelo 001 tanto na extração da maioria dos campos quanto na coerência geral dos resultados.

Sobre a Tech4Humans

Somos uma startup inovadora com duas áreas de negócios: SaaS e AIaaS. No SaaS, oferecemos soluções avançadas para a hyperautomação de atendimento, facilitando a gestão, automação e acompanhamento de solicitações. No AIaaS, nossa plataforma Tech4.ai capacita empresas a construir e implementar soluções de inteligência artificial com tecnologias open source, garantindo agilidade, governança e alto desempenho.

Links Relevantes:

Leia também por aqui:
Mirela Domiciano
Desenvolvedora de IA na Tech4Humans e graduanda em Engenharia de Computação na UNIFEI. Atuando com foco em pesquisa, desenvolvimento e implementação de soluções com Inteligência Artificial Generativa, abrangendo tanto a criação de produtos quanto a exploração de novas tecnologias. Possui experiência nas áreas de Visão Computacional e Processamento de Imagem e conhecimento em desenvolvimento full-stack.