Je vérifie les références d'un document 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 le résultat n'a pas été satisfaisant.
Pour ajouter à la réponse ci-dessus, vous pouvez notamment utiliser un outil de ligne de commande de xpdf-utils appelé pdftotext, puis effectuer une recherche 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 vous ne pouvez pas nous déplacer pour transformer plusieurs fichiers en même temps. Ce problème peut être surmonté 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 pour créer un document texte à partir d'un fichier PDF à cause, par exemple, d'un fichier pdf incompatible, vous rencontrez un autre problème.
Je pense qu'en général, les éditeurs pdf n'incluent pas les lignes de commande car elles sont graphiques. Si vous souhaitez utiliser bash (ou peut-être zsh!), Vous devrez peut-être utiliser un terminal Shell.
Bonne chance!
Remarque: xpdf-utils est un paquet transitoire pour poppler-utils.
Vous pouvez utiliser poppler-utils. poppler-utils est une suite d'outils pour les fichiers PDF (Portable Document Format).
Pour l'installer, vous pouvez utiliser le Centre de logiciel Ubuntu ou en cliquant ci-dessous:
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 du contexte pour chaque correspondance. Par exemple, pour rechercher récursivement keyword
dans /some directory
, insensible à la casse:
pdfgrep -Ri keyword /some/directory
Pdfgrep est un outil de recherche de texte dans les fichiers PDF. Cela fonctionne de manière similaire à `grep '.
Fonctionnalités:
- rechercher des expressions régulières.
- prise en charge de certaines options importantes de grep, notamment: + la sortie du nom de fichier. + sortie du numéro de page. + insensibilité facultative à la casse. + compter
occurrences.- et la caractéristique la plus importante: la sortie couleur!
1 Source: Répertoire d'applications Ubunt
Pour rechercher une expression régulière dans plusieurs fichiers pdf à l'aide de pdfgrep:
find /path -iname '*.pdf' -exec pdfgrep -H 'pattern' {} \;
où path est l'emplacement de vos fichiers pdf.
La raison pour laquelle pdftotext a échoué est peut-être que les PDF sont des images numérisées et que vous devez les OCR, j’ai écrit un moyen rapide de rechercher tous les pdf
s qui ne peuvent pas être grep
ed et les ROC.
J'ai remarqué que si un fichier pdf
ne contient aucune police, il est généralement impossible de le rechercher. Sachant cela, nous pouvons utiliser pdffonts
.
L'en-tête de la table est composé des deux premières lignes de pdffonts
. Ainsi, lorsqu'un fichier est interrogeable, il génère plus de deux lignes de sortie. Sachant cela, nous pouvons créer:
gedit check_pdf_searchable.sh
coller ceci
#!/bin/bash
#set -vx
if ((`pdffonts "$1" | wc -l` < 3 )); then
echo $1
ocrmypdf "$1" "$1"_ocr.pdf
fi
puis le rendre exécutable
chmod +x check_pdf_searchable.sh
puis répertoriez tous les fichiers PDF non interrogeables 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 {}
Vous devez également installer:
Sudo apt install ocrmypdf