5 pontos por GN⁺ 2024-08-10 | 1 comentários | Compartilhar no WhatsApp
  • Projetado para melhorar significativamente a qualidade da saída de reconhecimento óptico de caracteres (OCR)
  • Usa técnicas modernas de processamento de linguagem natural e grandes modelos de linguagem (LLM) para transformar texto bruto de OCR em documentos muito precisos, bem formatados e fáceis de ler

Recursos

  • Conversão de PDF em imagens
  • OCR com Tesseract
  • Correção avançada de erros com LLM (local ou baseado em API)
  • Fragmentação inteligente de texto para processamento eficiente
  • Opção de formatação em Markdown
  • Supressão de cabeçalhos e números de página (opcional)
  • Avaliação da qualidade da saída final
  • Suporte a LLMs locais e provedores de API em nuvem (OpenAI, Anthropic)
  • Processamento assíncrono para melhorar o desempenho
  • Logging detalhado para rastreamento do processo e depuração
  • Aceleração por GPU para inferência de LLM local

Requisitos

  • Python 3.12+
  • Motor Tesseract OCR
  • Biblioteca PDF2Image
  • PyTesseract
  • API da OpenAI (opcional)
  • API da Anthropic (opcional)
  • Suporte a LLM local (opcional, requer modelo GGUF compatível)

Como usar

  1. Coloque o arquivo PDF no diretório do projeto
  2. Atualize a variável input_pdf_file_path da função main() com o nome do arquivo PDF
  3. Execute o script:
    python llm_aided_ocr.py  
    
  4. O script gera vários arquivos de saída, incluindo o texto final pós-processado

Como funciona

O projeto LLM-Aided OCR usa um processo em várias etapas para transformar a saída bruta do OCR em texto legível e de alta qualidade:

  1. Conversão de PDF: usa pdf2image para converter o PDF de entrada em imagens
  2. OCR: aplica o Tesseract OCR para extrair texto das imagens
  3. Fragmentação de texto: divide a saída bruta do OCR em blocos gerenciáveis
  4. Correção de erros: cada bloco passa por processamento baseado em LLM para corrigir erros de OCR e melhorar a legibilidade
  5. Formatação em Markdown (opcional): reformata o texto corrigido em um Markdown limpo e consistente
  6. Avaliação de qualidade: compara a qualidade da saída final com o texto OCR original por meio de avaliação baseada em LLM

Resumo do GN⁺

  • O projeto LLM-Aided OCR é um sistema que melhora significativamente a qualidade da saída de OCR usando técnicas modernas de processamento de linguagem natural e grandes modelos de linguagem
  • Ele converte PDFs em imagens, extrai o texto com Tesseract, corrige erros com LLM e reorganiza o resultado em formato Markdown
  • Suporta tanto LLMs locais quanto baseados em nuvem e otimiza o desempenho com processamento assíncrono
  • O projeto oferece vários recursos avançados para aumentar a precisão e a legibilidade da saída de OCR, sendo especialmente útil para processar documentos grandes
  • Projetos com funcionalidades semelhantes incluem ABBYY FineReader e Adobe Acrobat OCR

1 comentários

 
GN⁺ 2024-08-10
Comentários do Hacker News
  • com o lançamento do novo modelo schnell, pode ser possível obter um conjunto de dados para produzir modelos de visão SOTA

    • atualmente, a maioria dos modelos de visão se baseia em legendas antigas do CLIP/BLIP
    • modelos como LLAVA ou phi-llava ainda são limitados por componentes de visão pré-treinados
    • o pipeline com Tessy e LLM é eficaz e abre a possibilidade de modelos multilíngues lerem e traduzirem trabalhos digitalizados
    • o LLAVA-PHI3 consegue transcrever hebraico de forma consistente, mas tem problemas de alucinação
    • espera-se que a qualidade melhore bastante quando surgir um novo modelo de visão SOTA
  • em artigos científicos, o modelo nougat da Meta é o mais adequado

    • para faturas e registros, o modelo donut é melhor
    • ambos os modelos podem falhar em alguns casos, e é preciso usar um LLM para resolver o problema
    • detalhes se perdem no processo de OCR, então é difícil lidar com tabelas e gráficos com precisão
    • o Google Gemini oferece ajuste fino para imagens, mas isso não foi testado
    • prompts few-shot ajudam a evitar alucinações do LLM e a adequar a saída ao formato solicitado
  • em tentativas anteriores, funcionou bem em 90% dos casos

    • em documentos como contratos de aluguel, há dificuldades com números e nomes (de pessoas ou lugares/endereço)
    • o LLM não tem como saber exatamente o valor do aluguel nem o nome de uma pessoa específica
  • se você converter uma página de PDF em PNG e pedir ao gpt4 para transcrever a imagem, ele é muito preciso

    • mais preciso que o Tesseract ou OCR clássico
  • há 10 anos, tentaram usar o Tesseract para fazer OCR de chinês

    • depois de reconhecer texto em inglês, era fácil fazer a limpeza
    • no chinês, quando um caractere é reconhecido incorretamente, é difícil detectar o erro
    • deformavam a imagem com truques de ImageMagick e a enviavam ao Tesseract, depois faziam uma votação do melhor resultado com base na frequência estatística das frases reconhecidas
    • a precisão melhorou bastante
  • tiveram resultados melhores com PaddlePaddle

    • escreveram uma implementação em Python usando PPOCRv3 para recortar livros no nível das palavras
    • o PPOCRv4 não tem limitação de tamanho em pixels, então pode ser "usado direto"
    • o modelo de detecção do PPOCRv3 funcionou melhor
  • perguntaram se outras ferramentas de OCR já foram testadas

    • tiveram um problema em que o Tesseract lia "77" como "7"
  • é importante ajustar o prompt para que o modelo entenda com mais clareza

    • pensam bastante sobre LLMs e documentos
    • acham que OCR será um problema totalmente resolvido em breve
    • o desafio é explicar de forma eficaz a ambiguidade e os detalhes de documentos complexos para modelos de IA
  • estão fazendo um trabalho parecido de parsing de rubricas e envios de alunos

    • têm interesse em integração com GPT-4V
    • gostariam de contato por e-mail
  • perguntaram sobre a abordagem de corrigir erros de OCR com o prompt "fix this text"

    • sugeriram usar um modelo de completion em vez de um modelo de chat, inserindo token por token para obter a probabilidade do próximo token
    • acham que esse método pode reduzir bastante as alucinações