Automatisation de l'Extraction de Données Structurées avec DocQuery et les LLM

DocQuery est un utilitaire open-source basé sur les grands modèles de langage (LLM) conçu pour l'extraction d'informations structurées à partir de documents non structurés tels que les PDF et les images numérisées. Cet outil permet d'automatiser l'analyse de documents complexes sans nécessiter de développement lourd.

Installation et Configuration de l'Environnement

L'initialisation de l'environnement nécessite l'installation du package principal ainsi que des dépendances OCR pour le traitement d'images.

# Création et activation d'un environnement virtuel
python -m venv env_docquery
source env_docquery/bin/activate

# Installation de la bibliothèque
pip install docquery

# Installation des dépendances OCR (Tesseract)
# Pour Debian/Ubuntu
sudo apt-get install tesseract-ocr tesseract-ocr-fra
# Pour macOS
brew install tesseract

Cas d'Usage : Extraction via Ligne de Commande et API Python

Voici plusieurs scénarios d'application démontrant la flexibilité de l'outil pour l'extraction de métadonnées spécifiques.

1. Extraction de Numéros de Facture et Dates de Contrat

Pour traiter un répertoire contenant des factures et identifier les identifiants uniques :

docquery scan "Quel est le numéro de facture ?" ./data/factures/ --output results.csv

Pour l'analyse juridique et l'extraction des dates d'entrée en vigueur :

docquery scan "Quelle est la date de prise d'effet du contrat ?" ./data/contrats/

2. Traitement Programmatique avec l'API Python

Pour des besoins d'intégration plus poussés, l'API Python permet de charger des documennts et d'exécuter des pipelines de question-réponse.

from docquery import document, pipeline

# Initialisation du pipeline de question-réponse sur document
qa_pipeline = pipeline('document-question-answering')

# Chargement d'un relevé bancaire au format PDF
bank_doc = document.load_document("./archives/releve_bancaire.pdf")

# Extraction des montants de transaction
query = "Quel est le montant total des transactions ?"
response = qa_pipeline(question=query, **bank_doc.context)
print(f"Montant extrait : {response['answer']}")

3. Analyse de Formulaires et Données Clients

Extraction d'adresses e-mail à partir de formulaires d'inscription numérisés :

docquery scan "Quelle est l'adresse e-mail du client ?" ./data/formulaires/

4. Reconnaissance de Données Médicales et Logistiques

Identification des indicateurs de santé dans les rapports médicaux ou des numéros de suivi sur les étiquettes d'expédition :

# Rapports médicaux
docquery scan "Quelle est la valeur de la tension artérielle ?" ./data/medical/

# Étiquettes logistiques
docquery scan "Quel est le numéro de suivi du colis ?" ./data/logistique/

Configuration Avancée et Modèles Spécialisés

Pour améliorer la précision sur des documents complexes, il est possible d'utiliser des modèles spécialisés comme Donut.

# Installation avec le support Donut
pip install docquery[donut]

# Utilisation du modèle Donut pour l'analyse de contrats
docquery scan "Quelle est la date de signature ?" ./data/contrats/ \
  --checkpoint 'naver-clova-ix/donut-base-finetuned-docvqa'

La classifictaion auotmatique de documents peut également être déclenchée directement :

docquery scan --classify ./data/documents_mixtes/

Optimisation des Performances et Dépannage

  • Traitement par lots : Fournir un chemin de répertoire plutôt que des fichiers individuels pour minimiser le temps de chargement du modèle en mémoire.
  • Accélération Matérielle : L'inférence peut être déportée sur GPU pour réduire considérablement la latence.
  • Résolution des erreurs OCR : En cas d'échec de reconnaissance, vérifier la résolution de l'image source (minimum 300 DPI) et s'assurer que les paquets de langue Tesseract sont installés.
  • Gestion de la mémoire : Pour les documents volumineux, diviser le traitement par pages ou ajuster la précision du modèle pour éviter les dépassements de mémoire (OOM).

Architecture et Modules Principaux

Le flux de traitement repose sur plusieurs composants clés situés dans le code source :

  • Pipeline de transformation : Gère le chargement, l'OCR, l'analyse de mise en page et l'inférence du modèle de question-réponse.
  • Adaptateurs de format : Des classes dédiées (PDFDocument, ImageDocument, WebDocument) normalisent l'entrée quel que soit le format source.

Bonnes Pratiques d'Implémentation

  1. Prétraitement d'image : Appliquer des filtres de réduction de bruit et de correction de contraste avant de soumettre des documents numérisés à l'OCR.
  2. Formulation des requêtes : Rédiger des questions précises et sans ambiguïté. Éviter les formulations vagues pour maximiser le score de confiance du modèle.
  3. Validation des résultats : Mettre en place un seuil de confiance minimal et prévoir un mécanisme de vérification humaine pour les extractions critiques.

Étiquettes: docquery LLM OCR Python tesseract

Publié le 7 juin à 01h45