Pipeline OCR : Dictionnaire de Trévoux
Architecture
ocr_pipelineV2/
├── app.py # Serveur Flask principal — interface OCR + comparaison
├── app1.py # Interface CER / WER Calculator (port 5001)
├── requirements.txt
├── ocr/
│ └── engines.py # Wrappers des moteurs OCR
├── evaluation/
│ └── metrics.py # Calcul WER, CER, diff mot-à-mot
├── data/
│ ├── images/ # Pages scannées (.png, .jpg)
│ ├── gold/ # Gold standards (fichiers .txt)
│ └── results/ # Résultats JSON et CSV
└── templates/
└── index.html # Interface web principale
Moteurs OCR testés
Quatre moteurs ont été intégrés et testés sur le corpus.
Kraken + CATMuS-Print Large
Moteur recommandé pour ce corpus. Le modèle CATMuS-Print Large est entraîné spécifiquement sur des imprimés historiques français et latins (XVe–XIXe siècle).
Gestion native du long-s (ſ), des ligatures et de l’orthographe d’époque
WER : ~8 %, CER : ~1,8 % sur les pages testées
Modèle téléchargé via
kraken get 10.5281/zenodo.10592716Fichier :
catmus-print-fondue-large.mlmodel
kraken -i page.png output.txt segment -bl ocr -m catmus-print-fondue-large.mlmodel
Tesseract 5
Moteur généraliste open-source. Moins performant sur le vieux français sans modèle
spécialisé. Langues testées : fra, lat, fra+lat.
EasyOCR
Moteur basé sur un réseau de neurones profond. Simple à installer, mais pas optimisé pour les caractères historiques.
Surya
Moteur récent basé sur des transformers. Produit une sortie JSON structurée
(text_lines, confidence, coordonnées polygonales par caractère et par mot).
Performant sur le texte moderne, moins adapté au long-s et aux ligatures historiques.
Problème identifié : lecture en colonnes
La plupart des moteurs OCR lisent les lignes horizontalement en traversant les deux colonnes, ce qui produit un texte entrelacé incohérent.
Exemple de sortie Surya désalignée :
étoit fortifié par une triple muraille, & par trois forteresses; nord.
mais ni ses fortifications [...] SYRIE PROPRE. C'est la partie...
Le mot nord. appartient à la colonne de droite mais s’insère au milieu de la
phrase de gauche. Ce problème structural est distinct des erreurs OCR classiques et
impacte fortement les métriques (WER > 80 % malgré une reconnaissance correcte des
caractères).
Confusion long-s / f
Le long-s (ſ) est fréquemment confondu avec le f ou le s selon le moteur :
Gold standard |
Sortie OCR |
Erreur |
|---|---|---|
|
|
long-s lu comme f |
|
|
long-s lu comme f |
|
|
long-s lu comme f |
|
|
f initial lu comme long-s |
|
|
long-s lu comme f |
Correction LLM
Un module de correction post-OCR via LLM . L’API Groq est utilisée avec le modèle Llama 3.3 70B.
Stratégies de prompt disponibles
- Diplomatique complet
Prompt few-shot avec exemples de corrections typiques du Trévoux. Règles explicites : long-s, accents manquants, orthographe d’époque conservée (
étoit,avoit,&), pas de modernisation.- Diplomatique court
Version allégée pour les modèles à faible limite de tokens.
- Zero-shot simple
Prompt minimal, sans exemples.
Modèles testés via Groq
Modèle |
Taille |
Statut |
|---|---|---|
|
70B |
Actif |
|
8B |
Actif (tokens limités) |
|
70B |
Actif |
|
8x7B |
– |
|
9B |
– |
Évaluation : CER et WER
Deux métriques sont calculées par alignement de séquences (distance de Levenshtein).
- CER
Taux d’erreur au niveau du caractère.
CER = (substitutions + insertions + suppressions) / nombre de caractères de référence- WER
Taux d’erreur au niveau du mot.
WER = (substitutions + insertions + suppressions) / nombre de mots de référence
Résultats sur la page de test (p1905)
Moteur |
CER |
WER |
|---|---|---|
Kraken + CATMuS-Print Large ★ |
~1,8 % |
~8 % |
Surya (sans correction layout) |
élevé |
> 60 % |
Tesseract 5 (fra+lat) |
élevé |
élevé |
Note
Le WER élevé de Surya est principalement causé par le problème de lecture en colonnes (texte entrelacé), et non par des erreurs de reconnaissance de caractères.
Prochaines étapes
Intégrer une détection automatique de colonnes (segmentation layout) avant l’OCR
Tester d’autres modèles Kraken spécialisés (CATMuS-Medieval, etc.)
Construire un gold standard annoté sur un plus grand nombre de pages
Comparer les stratégies de prompt LLM sur un jeu d’évaluation contrôlé
Explorer l’API Mistral comme alternative à Groq