5 points par GN⁺ 2024-08-10 | 1 commentaires | Partager sur WhatsApp
  • Conçu pour améliorer considérablement la qualité des sorties de reconnaissance optique de caractères (OCR)
  • Utilise les techniques les plus récentes de traitement du langage naturel et les grands modèles de langage (LLM) pour transformer du texte OCR brut en documents très précis, bien formatés et faciles à lire

Fonctionnalités

  • Conversion de PDF en images
  • OCR avec Tesseract
  • Correction avancée des erreurs à l’aide d’un LLM (local ou via API)
  • Découpage intelligent du texte pour un traitement efficace
  • Option de formatage Markdown
  • Suppression des en-têtes et des numéros de page (optionnel)
  • Évaluation de la qualité de la sortie finale
  • Prise en charge des LLM locaux et des fournisseurs d’API cloud (OpenAI, Anthropic)
  • Traitement asynchrone pour de meilleures performances
  • Journalisation détaillée pour le suivi du processus et le débogage
  • Accélération GPU pour l’inférence de LLM locaux

Prérequis

  • Python 3.12+
  • Moteur Tesseract OCR
  • Bibliothèque PDF2Image
  • PyTesseract
  • API OpenAI (optionnel)
  • API Anthropic (optionnel)
  • Prise en charge des LLM locaux (optionnel, nécessite des modèles GGUF compatibles)

Utilisation

  1. Placez le fichier PDF dans le répertoire du projet
  2. Mettez à jour la variable input_pdf_file_path de la fonction main() avec le nom du fichier PDF
  3. Exécutez le script :
    python llm_aided_ocr.py  
    
  4. Le script génère plusieurs fichiers de sortie, dont le texte final post-traité

Fonctionnement

Le projet LLM-Aided OCR utilise un processus en plusieurs étapes pour transformer une sortie OCR brute en texte de haute qualité, lisible :

  1. Conversion du PDF : conversion du PDF d’entrée en images avec pdf2image
  2. OCR : application de Tesseract OCR pour extraire le texte des images
  3. Découpage du texte : division de la sortie OCR brute en segments faciles à traiter
  4. Correction des erreurs : chaque segment est traité par un LLM afin de corriger les erreurs OCR et d’améliorer la lisibilité
  5. Formatage Markdown (optionnel) : reformatage du texte corrigé en un Markdown propre et cohérent
  6. Évaluation de la qualité : comparaison de la qualité de la sortie finale avec le texte OCR d’origine via une évaluation basée sur un LLM

Résumé de GN⁺

  • Le projet LLM-Aided OCR est un système qui améliore considérablement la qualité des sorties OCR en exploitant les techniques récentes de traitement du langage naturel et les grands modèles de langage
  • Il convertit les PDF en images, extrait le texte avec Tesseract, puis corrige les erreurs via un LLM et le réorganise au format Markdown
  • Il prend en charge à la fois les LLM locaux et ceux basés sur le cloud, et optimise les performances grâce au traitement asynchrone
  • Ce projet propose diverses fonctionnalités avancées pour améliorer la précision et la lisibilité des sorties OCR, et se révèle particulièrement utile pour le traitement de documents volumineux
  • Parmi les projets offrant des fonctionnalités similaires figurent ABBYY FineReader et Adobe Acrobat OCR

1 commentaires

 
GN⁺ 2024-08-10
Avis Hacker News
  • La sortie du nouveau modèle schnell pourrait permettre de constituer des jeux de données capables de produire des modèles de vision SOTA

    • Actuellement, la plupart des modèles de vision reposent sur d’anciennes légendes CLIP/BLIP
    • Des modèles comme LLAVA ou phi-llava restent eux aussi limités par des composants de vision préentraînés
    • Le pipeline Tessy + LLM est efficace et ouvre la possibilité à des modèles multilingues de lire et traduire des travaux numérisés
    • LLAVA-PHI3 peut transcrire l’hébreu de manière cohérente, mais présente des problèmes d’hallucination
    • On s’attend à une nette amélioration de la qualité avec l’arrivée de nouveaux modèles de vision SOTA
  • Pour les articles scientifiques, le modèle nougat de Meta est le plus adapté

    • Pour les factures et les archives, le modèle donut est meilleur
    • Les deux modèles peuvent échouer dans certains cas, et il faut alors utiliser un LLM pour résoudre le problème
    • Le processus OCR perd des détails, ce qui rend difficile le traitement précis des tableaux et graphiques
    • Google Gemini propose du fine-tuning sur image, mais cela n’a pas été testé
    • Quelques prompts few-shot aident à éviter les hallucinations du LLM et à le faire respecter le format demandé
  • D’après des essais passés, cela fonctionne bien dans 90 % des cas

    • Sur des documents comme des contrats de location, il y a des difficultés avec les chiffres et les noms (personnes, lieux, noms/adresses)
    • Un LLM ne peut pas connaître exactement le loyer ni le nom précis d’une personne
  • Convertir les pages PDF en PNG puis demander à gpt4 de transcrire l’image est très précis

    • Plus précis que Tesseract ou un OCR classique
  • Il y a 10 ans, une tentative avait été faite pour faire de l’OCR en chinois avec Tesseract

    • Après reconnaissance du texte anglais, le nettoyage est facile
    • En chinois, si un seul caractère est mal reconnu, il est difficile de détecter l’erreur
    • L’image était transformée avec des astuces de traitement, envoyée à Tesseract, puis un vote désignait le meilleur résultat selon la fréquence statistique des phrases reconnues
    • La précision s’était nettement améliorée
  • De meilleurs résultats ont été obtenus avec PaddlePaddle

    • Une implémentation Python a été écrite avec PPOCRv3 pour découper des livres au niveau des mots
    • PPOCRv4 n’a pas de limite de taille en pixels, donc « prêt à l’emploi »
    • Le modèle de détection PPOCRv3 fonctionnait mieux
  • Quelqu’un demande si d’autres packages OCR ont été essayés

    • Tesseract lisait « 77 » comme « 7 »
  • Il est important d’ajuster le prompt pour que le modèle comprenne plus clairement

    • Beaucoup de réflexion a été menée sur les LLM et les documents
    • L’OCR semble être un problème qui sera bientôt complètement résolu
    • Le défi est d’expliquer efficacement aux modèles d’IA les ambiguïtés et les détails des documents complexes
  • Quelqu’un travaille sur une tâche similaire consistant à parser des grilles d’évaluation et des copies d’étudiants

    • Intéressé par une intégration avec GPT-4V
    • Souhaite être contacté par e-mail
  • Question sur l’approche consistant à corriger les erreurs OCR avec un prompt du type « fix this text »

    • Il est suggéré d’utiliser un modèle de complétion plutôt qu’un modèle de chat, en injectant l’entrée token par token pour obtenir la probabilité du token suivant
    • Cette méthode pourrait réduire fortement les hallucinations