Skip to content
Learni
View all tutorials
Intelligence Artificielle

Comment construire des pipelines Document AI en 2026

14 minINTERMEDIATE

Introduction

Les pipelines Document AI permettent d'automatiser l'extraction d'informations à partir de documents non structurés comme les PDF, factures ou contrats. En 2026, ils combinent OCR moderne, modèles de langage et orchestration pour des résultats fiables. Ce tutoriel vous guide pas à pas dans la construction d'un pipeline complet, depuis l'ingestion jusqu'à l'export structuré. Vous apprendrez à gérer les erreurs, optimiser les performances et intégrer des composants IA réutilisables.

Prérequis

  • Python 3.11 ou supérieur
  • Connaissances intermédiaires en Python et Pydantic
  • Compte Google Cloud (optionnel pour Document AI)
  • Connaissance de base des formats PDF et JSON

Installation des dépendances

terminal
pip install pymupdf pytesseract pillow pydantic python-dotenv
pip install google-cloud-documentai

Ces packages fournissent la manipulation PDF, l'OCR et la validation de données. google-cloud-documentai est inclus pour une utilisation réelle avec l'API Google.

Modèle de données Pydantic

models.py
from pydantic import BaseModel, Field
from typing import List, Optional

class ExtractedField(BaseModel):
    key: str
    value: str
    confidence: float = Field(ge=0.0, le=1.0)

class DocumentResult(BaseModel):
    document_id: str
    extracted_fields: List[ExtractedField]
    raw_text: str

Ce modèle garantit que les sorties du pipeline sont toujours structurées et validées automatiquement.

Module d'ingestion PDF

ingestion.py
import fitz
from pathlib import Path

def extract_text_from_pdf(pdf_path: Path) -> str:
    doc = fitz.open(pdf_path)
    text = ""
    for page in doc:
        text += page.get_text()
    doc.close()
    return text.strip()

Utilise PyMuPDF pour extraire le texte brut rapidement. Gère les documents multi-pages sans charger tout en mémoire.

Composant OCR

ocr.py
import pytesseract
from PIL import Image
import fitz

def ocr_pdf_page(pdf_path: str, page_num: int = 0) -> str:
    doc = fitz.open(pdf_path)
    page = doc[page_num]
    pix = page.get_pixmap(dpi=300)
    img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
    text = pytesseract.image_to_string(img, lang='fra')
    doc.close()
    return text

Convertit la page en image haute résolution puis applique Tesseract en français. Idéal pour les documents scannés.

Pipeline principal

pipeline.py
from ingestion import extract_text_from_pdf
from ocr import ocr_pdf_page
from models import DocumentResult, ExtractedField

def run_document_pipeline(pdf_path: str, use_ocr: bool = False) -> DocumentResult:
    if use_ocr:
        raw = ocr_pdf_page(pdf_path)
    else:
        raw = extract_text_from_pdf(pdf_path)
    # Extraction simplifiée (à remplacer par LLM)
    fields = [ExtractedField(key="client", value="Exemple SA", confidence=0.92)]
    return DocumentResult(document_id=pdf_path, extracted_fields=fields, raw_text=raw)

Orchestre les étapes d'ingestion et d'extraction. Le flag use_ocr permet de basculer facilement entre texte natif et OCR.

Bonnes pratiques

  • Toujours valider les données avec Pydantic
  • Utiliser des flags pour activer/désactiver l'OCR
  • Logger chaque étape avec des métadonnées
  • Versionner les prompts et modèles utilisés
  • Tester avec des documents réels et bruités

Erreurs courantes à éviter

  • Oublier de gérer les exceptions lors de l'ouverture de PDF corrompus
  • Ne pas normaliser le texte avant l'extraction IA
  • Ignorer les scores de confiance des modèles
  • Exécuter l'OCR sur tous les documents sans vérifier si le texte natif existe

Pour aller plus loin

Découvrez nos formations avancées sur l'IA documentaire et l'orchestration de pipelines chez Learni.