Aller au contenu
Cercle IA Tech · Documents Un site du réseau Cercle IA Tech

Guide

Tesseract et OCRmyPDF : l'OCR en français, en local

Installer Tesseract et le pack français, rendre un PDF scanné cherchable avec OCRmyPDF, redresser les pages, sortir le texte pour une IA.

Mis à jour le

Pour rendre lisibles des PDF scannés sans envoyer vos documents à un service en ligne, le duo le plus courant est Tesseract, moteur de reconnaissance optique de caractères (OCR) sous licence Apache 2.0, et OCRmyPDF, qui s'en sert pour ajouter une couche de texte à un PDF. En une commande, une fois les deux installés : ocrmypdf -l fra scan.pdf scan-ocr.pdf. Cette page donne l'installation, les réglages utiles pour une base documentaire et la façon de récupérer le texte pour l'indexation.

Installer Tesseract et le français

Système Commande documentée
Debian, Ubuntu sudo apt install tesseract-ocr, puis le pack de langue tesseract-ocr-fra
macOS (Homebrew) brew install tesseract
macOS (MacPorts) sudo port install tesseract-fra
Windows installateur de l'université de Mannheim (UB Mannheim), lié depuis la documentation

La documentation nomme les packs de langue tesseract-ocr-<code>, avec un code à trois lettres ; celui du français est fra d'après le tableau des fichiers de langue. Le moyen français (vers 1400-1600) a son propre code, frm, utile pour des archives anciennes.

Premiers essais en ligne de commande

tesseract page.png page -l fra          # écrit page.txt
tesseract page.png page -l fra pdf      # PDF avec image et couche de texte
tesseract page.png page -l eng+fra tsv  # mots et positions, en TSV

Deux réglages reviennent souvent :

  • --psm fixe la segmentation de la page. Le mode 3, par défaut, est entièrement automatique ; le mode 6 suppose « un seul bloc de texte uniforme », utile pour un ticket ou une étiquette.
  • --oem 1 choisit le moteur à réseau de neurones (LSTM), --oem 0 l'ancien moteur.

Tesseract lit des images (PNG, JPEG, TIFF…) et sort du texte, du hOCR, un PDF, du TSV, de l'ALTO ou du PAGE. Il ne lit pas un PDF directement : c'est le rôle d'OCRmyPDF.

OCRmyPDF : rendre un PDF scanné cherchable

OCRmyPDF (licence MPL-2.0) s'installe par apt install ocrmypdf sous Debian et Ubuntu, ou brew install ocrmypdf sous macOS. Il produit un PDF, ou un PDF/A d'archivage, dont le texte peut être cherché et copié.

ocrmypdf -l fra --deskew --rotate-pages scan.pdf scan-ocr.pdf
Option Effet, d'après la documentation
-l fra ou -l eng+fra langues ; les packs doivent être installés
--deskew redresse les pages scannées de travers
--rotate-pages détecte l'orientation et tourne la page si besoin
--clean nettoie les pages avec unpaper avant l'OCR, sans modifier le fichier final
--mode skip (ancien --skip-text) saute les pages qui ont déjà du texte
--redo-ocr remplace un ancien OCR sans rastériser ; le texte numérique d'origine est ignoré
--force-ocr rastérise toutes les pages, au risque de perdre en qualité
--output-type pdfa sortie au format d'archivage PDF/A
--sidecar texte.txt écrit à part le texte reconnu

Récupérer le texte pour l'IA

Deux voies :

  1. Le fichier --sidecar, qui contient le texte reconnu. Attention : la documentation précise que le texte des pages qui en avaient déjà n'y figure pas. Pour un PDF mixte, il ne donne donc qu'une partie du document.
  2. Le PDF produit, passé ensuite dans un convertisseur comme Docling ou MarkItDown, qui lira la couche de texte et rendra du Markdown. C'est la voie la plus sûre pour un PDF mixte.

Pour un dossier entier :

mkdir -p ocr
for f in scans/*.pdf; do
  ocrmypdf -l fra --deskew --rotate-pages --mode skip "$f" "ocr/$(basename "$f")"
done

Ce qui fait la qualité

Le dépôt de Tesseract le dit : il faut souvent améliorer la qualité de l'image d'entrée pour obtenir un bon résultat. Avant de régler quoi que ce soit, regardez le scan : pages droites, contraste net, pas de tampon sur le texte. La préparation de la numérisation elle-même (tri, réglages du scanner) est décrite sur la page consacrée à la numérisation des documents papier.

Contrôlez enfin le résultat sur des mots qui comptent pour votre métier : références d'articles, montants, noms propres. Une erreur sur un chiffre ne se voit pas à la lecture rapide, mais elle fausse une réponse.

Quand passer à un service en ligne

Tesseract renvoie du texte et la position des mots, pas un document organisé en titres et tableaux : cette structure reste à reconstruire. Si vos scans sont surtout des tableaux ou des formulaires, comparez avec un service qui renvoie du Markdown structuré, sur la page qui compare les services d'OCR en ligne.

Questions fréquentes

Quel est le code de langue du français dans Tesseract ?

fra. Pour un document bilingue, on combine les codes avec un plus : -l eng+fra.

OCRmyPDF refuse un PDF qui contient déjà du texte : que faire ?

Par défaut, OCRmyPDF s'arrête sur une erreur si on lui demande de modifier un fichier déjà passé à l'OCR. --mode skip (ancien --skip-text) saute les pages qui ont déjà du texte, --redo-ocr refait l'OCR sans rastériser, --force-ocr rastérise toutes les pages, au risque de perdre en qualité.

Sources

Pages consultées pour écrire cet article :

  1. https://github.com/tesseract-ocr/tesseract
  2. https://tesseract-ocr.github.io/tessdoc/Installation.html
  3. https://tesseract-ocr.github.io/tessdoc/Command-Line-Usage.html
  4. https://tesseract-ocr.github.io/tessdoc/Data-Files-in-different-versions.html
  5. https://github.com/ocrmypdf/OCRmyPDF
  6. https://ocrmypdf.readthedocs.io/en/latest/cookbook.html

À lire aussi