Extraire automatiquement les données des PDF B2B : faut-il tout coder à la main ou laisser l'IA comprendre ? Un duel technique et économique.

CRÉER UN ENVIRONNEMENT PYTHON PROPRE

Avant de commencer, il faut isoler le projet du reste de l'ordinateur. On utilise un environnement virtuel Python : une boîte à Outils qui garde toutes les dépendances séparées des autres projets.

python –m venv b2bdocumentextractor

Puis on l'active pour entrer dedans :

b2bdocumentextractor\Scripts\activate

On vérifie que Python et pip (le gestionnaire de paquets) fonctionnent :

python --version
pip --version

INSTALLER TESSERACT POUR RECONNAÎTRE LE TEXTE DES PDF

Tesseract est un moteur de reconnaissance de caractères (OCR) : il lit le texte sur des images ou des PDF scannés. pytesseract est juste un pont Python pour communiquer avec Tesseract. Sans Tesseract installé, pytesseract ne peut pas fonctionner.

On télécharge la dernière version de Tesseract pour Windows depuis le dépôt GitHub officiel, puis on installe le fichier .exe.

Le chemin d'installation par défaut est :

C:\Program Files\Tesseract-OCR

On vérifie que tout fonctionne avec la commande :

"C:\Program Files\Tesseract-OCR\tesseract.exe" --version

CONFIGURER POPPLER POUR CONVERTIR LES PDF EN IMAGES

Poppler est une bibliothèque open source qui permet d'afficher et de convertir des fichiers PDF. On a besoin de Poppler pour transformer les PDF en images avant que Tesseract ne les lise.

On télécharge la dernière version de Poppler depuis son dépôt GitHub, on extrait le fichier ZIP et on déplace le dossier extrait sur le disque C:\. Par exemple :

C:\Users\schue\poppler-26.02.0\Library\bin

Il faut ensuite ajouter ce chemin à la variable d'environnement PATH de Windows pour que le système sache où trouver Poppler. Pour les débutants :

On appuie sur la touche Windows, on tape « Modifier les variables d'environnement », on clique sur « Modifier les variables d'environnement système », puis « Variables d'environnement ». Sous « Variables utilisateur », on sélectionne PATH, on clique sur « Modifier », puis « Nouveau » et on colle le chemin. On redémarre le terminal CMD pour appliquer les changements.

INSTALLER LES BIBLIOTHÈQUES PYTHON NÉCESSAIRES

On installe les bibliothèques Python qui vont nous servir à manipuler les PDF et les images. Il faut d'abord réactiver l'environnement virtuel Python si ce n'est pas déjà fait. Une fois les installations terminées, on installe Ollama et LLaMA 3.

Ollama permet d'exécuter des modèles de langage (LLM) localement sur son ordinateur, gratuitement et sans clé API. On télécharge l'installateur Windows depuis le site d'Ollama et on l'exécute.

Puis on télécharge le modèle LLaMA 3 avec la commande :

ollama pull llama3

Cette étape peut prendre du temps car environ 4,7 Go de données sont téléchargés. Une barre de progression s'affiche dans le terminal.

On vérifie que le modèle est bien installé avec :

ollama list

CRÉER DEUX PDF DE TEST AVEC DES LAYOUTS DIFFÉRENTS

Pour comparer les deux méthodes, on crée deux factures B2B fictives pour deux entreprises : Alpha GmbH et Beta AG. Les deux contiennent les mêmes informations (ID client, numéro de commande, date de livraison, articles commandés) mais avec des mises en page différentes.

On crée un dossier pour stocker tous les fichiers :

mkdir document_extractor
cd document_extractor

Puis on crée un fichier createtestpdfs.py avec le code suivant (disponible dans ce Gist GitHub).

On exécute le fichier pour générer les deux PDF :

python createtestpdfs.py

Dans le dossier, on voit maintenant deux nouveaux fichiers PDF.

PREMIÈRE MÉTHODE : EXTRACTION PAR RÈGLES (REGEX) ET OCR

Cette approche utilise uniquement des règles écrites à la main pour extraire les données. On crée un fichier approach1_traditional.py avec le code suivant (disponible dans ce Gist GitHub).

On exécute le script :

python approach1_traditional.py

Résultat pour le premier PDF (Layout A) : tout fonctionne parfaitement. Les champs sont correctement identifiés.

Résultat pour le second PDF (Layout B) : aucun champ n'est reconnu, toutes les valeurs retournent « None ».

Le problème ? Chaque nouveau client avec une mise en page différente nécessite une nouvelle règle regex. Avec 200 clients, cela signifie 200 motifs différents à écrire, tester et déployer.

DEUXIÈME MÉTHODE : EXTRACTION PAR IA (LLM) ET OCR

Cette fois, on garde l'OCR mais on remplace les règles rigides par un modèle de langage (LLM). Le LLM comprend le contexte sémantique : il reconnaît que « Référence commande » et « Numéro PO » veulent dire la même chose, même sans règle explicite.

On crée un fichier approach2_llm.py avec le code suivant (disponible dans ce Gist GitHub).

On exécute le script en s'assurant qu'Ollama est toujours en cours d'exécution en arrière-plan :

python approach2_llm.py

Résultat : les deux mises en page sont correctement reconnues. Les informations des champs aux noms différents sont extraites et assignées correctement, sans qu'aucune règle regex ne soit ajustée ni aucun nouveau modèle créé. Le LLM comprend les deux layouts car il lit le contexte. De plus, le format de date du Layout B est directement normalisé pour correspondre à celui du Layout A.

COMPARAISON TECHNIQUE : RÈGLES VS LLM

Les deux méthodes résolvent le même problème, mais avec des avantages et des inconvénients opposés.

Avec les pipelines basés sur des règles, la complexité se situe dans les règles et l'effort de maintenance. Avec les pipelines basés sur des LLM, la complexité se déplace vers l'infrastructure, le temps d'inférence et le comportement du modèle.

Pour les entreprises de taille moyenne qui traitent de nombreux layouts spécifiques à chaque client, ce compromis peut devenir plus important stratégiquement que la pure précision d'extraction.

QUAND ÉVITER D'UTILISER UN LLM ?

L'idée que tous les processus d'automatisation doivent être remplacés par de l'IA ou des LLM n'est pas toujours la meilleure solution. Surtout pour les entreprises de taille moyenne, la solution la plus adaptée n'est pas forcément la plus moderne, mais celle qui reste stable, maintenable et économiquement raisonnable sur le long terme.

Dans certains cas, l'approche traditionnelle basée sur des règles reste la plus adaptée :

• Environnements petits et stables avec peu de variations de documents.

• Besoin de performances ultra-rapides et prévisibles.

• Contraintes budgétaires fortes ou absence d'expertise en IA.

LE CHOIX STRATÉGIQUE : TECHNIQUE OU ÉCONOMIQUE ?

L'approche traditionnelle tente de décrire explicitement chaque document possible. L'approche basée sur les LLM essaie de comprendre le sens et le contexte. Pour des environnements réduits et stables, l'approche traditionnelle est souvent suffisante. Plus il y a de layouts et de cas particuliers, plus il devient difficile de maintenir les règles sur le long terme. C'est précisément là que les LLM commencent à devenir intéressants.

Utiliser un LLM peut aussi être un excellent cas d'entrée pour une entreprise souhaitant se lancer dans l'IA et acquérir une première expérience pratique.

POUR ALLER PLUS LOIN : COMPRENDRE LES LLM

Les LLM ne se contentent pas de suivre des règles : ils comprennent le langage humain. Cette capacité à saisir le sens plutôt que la forme est ce qui les rend si puissants pour traiter des documents variés.

Pour les entreprises, cela signifie moins de travail de maintenance et plus de flexibilité face aux changements de mise en page des clients.

Sources :
  • Towards Data Science

L'indépendance de CLODCO est votre garantie.

Pour que l'actualité de l'IA reste sans filtre et sans concession, votre soutien est indispensable. Votre contribution est le seul moteur de notre liberté éditoriale.

Soutenir CLODCO