Aller au contenu

Automatiser la gestion documentaire avec OCR et LLM

·3 mins·
DataScience OCR LLM
Sommaire

Je suis récemment tombé sur un projet client qui m’a amené à remettre le nez dans un combo que je croise de plus en plus souvent : l’OCR (reconnaissance optique de caractères) et les LLM (Large Language Models).

Dans cet article, je vous partage un petit état des lieux sur les outils OCR, comment on les marie aux LLM, et quelques astuces concrètes en Python. Le tout sans prétendre tout couvrir, mais avec l’idée d’avoir une base propre pour les projets à venir.

1. Le problème de départ
#

Dans mon cas, il s’agissait de documents PDF semi-structurés : des factures scannées et des comptes rendus en image. Je devais extraire le contenu, le structurer, parfois même le résumer ou l’enrichir.

On est ici à la croisée de plusieurs besoins :

  • lire une image ou un PDF (OCR),
  • structurer ou interprĂ©ter l’info (LLM),
  • et le faire Ă  une Ă©chelle raisonnable (donc penser performance, coĂ»ts, qualité…).

2. OCR : les options en 2025
#

En Python, on a encore quelques classiques qui font bien le job :

2.1. Tesseract (via pytesseract)
#

Toujours fidèle au poste, libre, plutôt fiable sur du texte bien contrasté.

import pytesseract
from PIL import Image

image = Image.open("facture_01.png")
texte = pytesseract.image_to_string(image, lang="fra")
print(texte)
AvantagesLimites
simple à mettre en placegalère sur les mises en page complexes
multi-languespas très rapide
totalement gratuitgestion des tableaux limitée

2.2 EasyOCR
#

Un peu plus récent, basé sur PyTorch, meilleur sur certaines polices ou scans.

import easyocr

reader = easyocr.Reader(['fr'])
resultats = reader.readtext("scan_fiche_salaire.jpg", detail=0)
print(resultats)

Je le trouve plus performant sur les documents en français manuscrits ou scannés à la va-vite.

2.3 OCR cloud (Azure, AWS, Google Vision…)
#

Si on a besoin de scalabilité, de reconnaissance de mise en page ou d’éléments comme les tableaux ou les colonnes, les services cloud sont très puissants. J’ai eu de bons résultats avec Amazon Textract et Azure Computer Vision.

Mais attention au coût si on veut parser 10 000 documents …

3. Les LLM
#

Une fois le texte extrait, on se retrouve souvent avec un gros bloc sans structure. C’est lĂ  que les LLM entrent en scène. Leur force, c’est leur capacitĂ© Ă  comprendre du contexte, mĂŞme si la donnĂ©e est un peu “sale”.

Quelques cas d’usage que j’ai rencontrés :

  • RĂ©sumer un contenu OCR brut
  • Structurer en JSON (ex : extraire les montants, dates, destinataires…)
  • Classer automatiquement des documents par type

Et tout ça devient plus simple depuis l’arrivée de modèles comme GPT-4, Claude, ou même Mistral en open source.

Voici un exemple basique avec l’API OpenAI :

import openai

openai.api_key = "sk-..."

response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "Tu es un assistant qui structure des textes OCR"},
        {"role": "user", "content": "Voici un texte OCR brut : ... Que peux-tu en extraire ?"}
    ]
)

print(response["choices"][0]["message"]["content"])
Astuce :
pour les traitements batch, mieux vaut prĂ©-nettoyer un peu l’OCR, tronçonner par section, et faire attention au prompt engineering pour garder un coĂ»t contenu.

On peut structurer en JSON avec un prompt fait pour cela :

prompt = """
Voici un texte OCR issu d'une facture. Peux-tu me retourner les champs suivants en JSON :
- nom du fournisseur
- date
- montant total
- numéro de facture

Texte :
{}
""".format(texte_ocr)

Quand c’est bien fait, on peut même réutiliser les mêmes prompts pour plusieurs types de documents, à condition de bien connaître leurs variantes.

Et maintenant
#

Je ne suis pas encore entré dans le traitement final de mon cas client (j’y reviendrai sûrement dans un autre article), mais cette phase de repérage m’a permis de poser les bases. L’idée c’est de pouvoir construire une chaîne OCR + LLM robuste, modulaire et pas trop coûteuse.

Thibault Clément - Intechnia
Auteur
Thibault Clément - Intechnia
Data scientist