Skip to content

OCR et Tesseract sur un PDF en ligne de commande

Auteur : Philippe Le Van - @plv@framapiaf.org

Date : 28 septembre 2021

Introduction

Ce tutoriel indique les étapes nécessaires pour reconnaitre les caractères d'un PDF en ligne de commande sous linux.

L'opération se fait en 2 étapes :

  • convertir le PDF en format TIFF (format image). C'est nécessaire parce que Tesseract ne fonctionne qu'avec un des formats image.
  • utiliser un outil d'OCR (optical character recognition) pour "lire" le fichier tiff

Pour que ce tutoriel fonctionne, il faut installer tesseract-ocr et imagemagick

Convertir le PDF en TIFF

Il faut une conversion d'une bonne qualité pour que Tesseact fonctionne bien. Pour ça, j'utilise imagemagick avec les options suivantes :

1
convert -density 300 -background white -layers merge input.pdf output.tiff

Reconnaitre les textes bruts

Là on peut utiliser tesseract en ligne de commande pour récupérer les infos

1
2
tesseract output.tiff outputbase -l fra
# note : le -l fra, c'est pour indiquer qu'on est en français.

Il ressort de cette commande un fichier outputbase.txt contenant le texte du fichier PDF.

Reconnaitre les textes avec les métadonnées (coordonnées des textes)

1
tesseract output.tiff outputbase -l fra alto

Là l'option "alto" à la fin indique le format de fichier output. Ici on récupère un fichier outputbase.xml qui contient pour chaque chaîne de caractères reconnue des infos dont les coordonnées sur la page.

Pour aller plus loin

La manpage de tesseract est bien faite.

Tesseract peut s'utiliser comme librairie plus bas niveau (il y a notamment plein d'exemples en python, je n'ai pas creusé).

Il y a des tutos partout sur imagemagick et tesseract et les docs officielles.