Chercher dans des PDF multiples sous GNU/Linux

Posté le jeu. 12 avril 2012 dans Outils et astuces

Vous avez une floppée de PDF, peut-être des centaines, et vous cherchez à savoir quels sont ceux qui utilisent un mot ou une expression donnée. Ou bien, vous essayez de retrouver une citation bien précise — qui se trouve dans l’un de ces documents — mais vous ne savez pas ou chercher. Comment résoudre ce problème sous GNU/Linux ?

Quelques solutions insatisfaisantes à mon avis…

… mais qui vous combleront peut-être.

Il existe des outils très généralistes, qui permettent de chercher un mot ou une expression dans de multiples formats de documents, comme Beagle, Recoll, ou tous les logiciels basés sur Zeitgeist Gnome Activity Journal. Le problème est qu’ils se fondent sur un système d’indexation beaucoup plus profond que celui du célèbre locate, et sont même accusés par certains d’être de véritables Big Brothers.

À l’opposé, il est possible de s’en tirer en combinant deux bonnes vieilles commandes. Pendant assez longtemps j’ai utilisé :

less *.pdf | grep mot_cherché

Cette solution est cependant très loin d’être optimale. Le temps d’exécution est plutôt long, la lisibilité de la sortie est mauvaise.

On peut aussi utiliser les outils intégrés à Adobe Reader 9. Non seulement le logiciel n’est pas libre, mais en plus il n’est pas possible de sauvegarder le résultat de la recherche ou d’utiliser des expressions rationnelles.

pdfgrep, le meilleur compromis entre légèreté, non-intrusion et possibilités

pdfgrep est pour moi la meilleure façon de réaliser des recherches, y compris complexes (c’est-à-dire à l’aide d’expressions rationnelles) dans de nombreux fichiers PDF sous GNU/Linux. La sortie précise de quel fichier le résultat est issu, et surligne l’expression recherchée. Que demander de plus ? Ah oui, comme le résultat est affiché sur la sortie standard (stdout), il est très facile d’enregistrer le résultat dans un fichier.

L’usage de base est très simple :

pdfgrep [option] pattern file

Par exemple :

pdfgrep -n hacker Coleman*

L’option -n permet d’afficher le numéro de la page où se trouve la ligne renvoyée. Ici, pdfgrep renverra toutes les lignes où apparaît la chaîne « hacker » dans tous les fichiers du dossier courant dont le nom commence par « Coleman ».

pdfgrep est dans les dépôts par défaut de toutes les bonnes distributions.