Convertir un PDF en texte avec pdftotext sur macOS

Introduction

pdftotext est un utilitaire en ligne de commande qui extrait le contenu textuel d'un fichier PDF et le convertit en fichier texte brut. Il fait partie de la suite poppler, un ensemble d'outils de manipulation de PDF installable via Homebrew. Rapide et scriptable, pdftotext est la solution idéale pour rendre un PDF exploitable par d'autres outils texte (grep, awk, sed…).

(Limitation : pdftotext ne peut extraire que le texte vectoriel intégré au PDF. Pour les PDF issus de scans (images), il faut recourir à un outil d'OCR comme Tesseract.)


Installation

pdftotext est inclus dans le paquet poppler :

brew install poppler

En plus de pdftotext, cette installation fournit toute une suite d'utilitaires : pdfinfo, pdfimages, pdffonts, pdftohtml, pdftoppm, pdftocairo, pdfattach, pdfdetach, pdfseparate, pdfunite et pdfsig.


Conversion simple

# Produit document.txt automatiquement
pdftotext document.pdf

# Spécifier le nom du fichier de sortie
pdftotext document.pdf sortie.txt

# Envoyer le texte sur stdout (affichage terminal)
pdftotext document.pdf -

Si le fichier de sortie n'est pas spécifié, pdftotext crée automatiquement un fichier portant le même nom avec l'extension .txt. Si le fichier de sortie est - (tiret), le texte est envoyé sur la sortie standard.


Sélection de pages

Les options -f (first) et -l (last) permettent de ne convertir qu'une plage de pages :

# Convertir uniquement les pages 2 à 5
pdftotext -f 2 -l 5 document.pdf extrait.txt

# Convertir uniquement la première page
pdftotext -f 1 -l 1 document.pdf premiere_page.txt

Mise en page

Par défaut, pdftotext réorganise le texte dans l'ordre de lecture en supprimant la mise en page physique (colonnes, césures…). L'option -layout permet de conserver le positionnement spatial d'origine :

pdftotext -layout document.pdf sortie.txt

Pour les documents tabulaires, l'option -fixed force un pas de caractère fixe (en points) et active automatiquement le mode layout :

pdftotext -fixed 6 document.pdf sortie.txt

Options utiles


Conversion en masse

Pour convertir tous les fichiers PDF du répertoire courant en fichiers texte :

for f in *.pdf; do pdftotext "$f" "${f%.pdf}.txt"; done

La substitution ${f%.pdf}.txt retire l'extension .pdf du nom de fichier et la remplace par .txt. Ainsi, rapport.pdf devient rapport.txt, facture.pdf devient facture.txt, etc.

Variante avec mise en page conservée et sans sauts de page :

for f in *.pdf; do
 pdftotext -layout -nopgbrk "$f" "${f%.pdf}.txt"
done

Variante récursive (sous-dossiers inclus) :

find . -name "*.pdf" -exec sh -c \
 'pdftotext "$1" "${1%.pdf}.txt"' _ {} \;

Exemples pratiques

# Chercher un mot dans un PDF
pdftotext document.pdf - | grep -i "facture"

# Compter le nombre de mots d'un PDF
pdftotext document.pdf - | wc -w

# Copier le texte d'un PDF dans le presse-papier macOS
pdftotext document.pdf - | pbcopy

# Chercher un mot dans tous les PDF d'un dossier
for f in *.pdf; do
 if pdftotext "$f" - | grep -qi "confidentiel"; then
 echo "Trouvé dans : $f"
 fi
done

Ressources



↑ Haut de page