Comment rechercher un fichier PDF à partir de la ligne de commande?

25

Je vérifie les références d'un article et souhaite trouver les positions dans le corps où un document (dans la liste des références) est référencé. Existe-t-il un éditeur PDF qui prend en charge la recherche via bash et extrait le contexte d'une position? J'ai essayé de convertir PDF en texte, mais je n'ai pas eu de bons résultats.

    
posée David 06.09.2012 - 07:09
la source

4 réponses

20

Juste pour ajouter à la réponse ci-dessus, vous pouvez en particulier utiliser un outil de ligne de commande de xpdf-utils appelé pdftotext, puis rechercher dans le document texte créé par cet outil avec grep.

Cela pourrait ressembler à ceci:

pdftotext document.pdf - | grep -C5 -n -i "search term"

Il y a plus d'informations dans le manuel. Le seul inconvénient de pdftotext est que nous ne pouvons pas nous déplacer pour transformer plusieurs fichiers en même temps. Ce problème peut être résolu avec un petit script bash:

for f in pdf_directory; do echo $f; pdftotext $f - | grep -i "search_term"; done

Si vous rencontrez des problèmes lors de la création d’un document texte à partir d’un pdf à cause, par exemple, d’un fichier pdf incompatible, alors c’est un autre problème.

Je pense qu'en général, les éditeurs PDF n'incluent pas de lignes de commande car ils sont graphiques. Si vous voulez utiliser bash (ou peut-être zsh!), Vous devrez peut-être utiliser un shell de terminal.

Bonne chance!

    
réponse donnée Joe 06.09.2012 - 08:24
la source
18

poppler-utils

Remarque: xpdf-utils est un package de transition pour le poppler. -utils.

Vous pouvez utiliser des poppler-utils. poppler-utils est une suite d'outils pour les fichiers PDF (Portable Document Format).

Pour l'installer, vous pouvez utiliser le Centre logiciel Ubuntu ou en cliquant ci-dessous:

pdfgrep

pdfgrep peut rechercher une chaîne ou un motif dans les fichiers PDF de manière récursive dans les arborescences de répertoires, en comptant les correspondances ou en imprimant un contexte pour chaque correspondance. Par exemple, pour rechercher de manière récursive keyword in /some directory , insensible à la casse:

pdfgrep -Ri keyword /some/directory
  

Pdfgrep est un outil pour rechercher du texte dans des fichiers PDF. Cela fonctionne comme   'grep'.

     

Caractéristiques:

     
  • recherche d'expressions régulières.
  •   
  • prise en charge de certaines options de grep importantes, notamment: + sortie de nom de fichier. + sortie du numéro de page. + insensibilité à la casse facultative. + compte
      occurrences.
  •   
  • et la caractéristique la plus importante: la sortie couleur!
  •   

1 Source: Répertoire des applications Ubuntu

    
réponse donnée Mitch 06.09.2012 - 07:28
la source
6

Pour rechercher une expression régulière dans plusieurs fichiers pdf en utilisant pdfgrep:

find /path -iname '*.pdf' -exec pdfgrep -H 'pattern' {} \;

où chemin est l’emplacement de vos fichiers pdf.

    
réponse donnée ignite 09.09.2012 - 21:26
la source
0

Étant donné que vous avez essayé pdftotext avec succès, le fichier PDF est simplement une image numérisée et vous devez l’agréger par OCR. / p>

J'ai remarqué que si un fichier grep n’avait pas de police, il est généralement impossible de le rechercher. Donc, sachant cela, nous pouvons utiliser pdf .

Les deux premières lignes du pdffonts sont l’en-tête de la table, donc quand un fichier est consultable a plus de deux lignes de sortie, sachant que nous pouvons créer:

gedit check_pdf_searchable.sh

puis collez ceci

#!/bin/bash 
#set -vx
if (('pdffonts "" | wc -l' < 3 )); then
echo 
pypdfocr ""
fi

alors rendez-le exécutable

chmod +x check_pdf_searchable.sh

puis lister tous les fichiers PDF non consultables dans le répertoire:

ls -1 ./*.pdf | xargs -L1 -I {} ./check_pdf_searchable.sh {}

ou dans le répertoire et ses sous-répertoires:

tree -fai . | grep -P ".pdf$" | xargs -L1 -I {} ./check_pdf_searchable.sh {}
    
réponse donnée Eduard Florinescu 08.02.2018 - 09:47
la source

Lire d'autres questions sur les étiquettes