Как найти файл PDF из командной строки?

26

Я проверяю ссылки на бумагу и хочу найти позиции в теле, на которые ссылается какая-то бумага (в списке ссылок). Есть ли PDF-редактор, который поддерживает поиск через bash и извлекает контекст позиции? Я пытался конвертировать PDF в текст, но не дал хорошего результата.

Дэвид
источник

Ответы:

22

Просто чтобы добавить к ответу выше, в частности, вы можете использовать инструмент командной строки из xpdf-utils с именем pdftotext, а затем выполнить поиск в текстовом документе, созданном этим инструментом, с помощью grep.

Это может выглядеть примерно так:

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

В руководстве есть больше информации. Единственный недостаток pdftotext заключается в том, что вы не можете использовать для преобразования несколько файлов одновременно. Эту проблему можно решить с помощью небольшого скрипта bash:

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

Если у вас возникают проблемы при создании текстового документа из PDF-файла из-за, например, несовместимого PDF-файла, то это еще одна проблема.

Я думаю, что редакторы PDF не содержат командных строк, потому что они графические. Если вы хотите использовать bash (или, может быть, zsh!), То вам, возможно, придется использовать оболочку терминала.

Удачи!

Джо
источник
20

Poppler-Utils

Примечание: xpdf-utils - это переходный пакет для poppler-utils.

Вы можете использовать poppler-utils. poppler-utils - это набор инструментов для файлов Portable Document Format (PDF).

Чтобы установить его, вы можете использовать Ubuntu Software Center или нажав ниже:

Установите poppler-utils

pdfgrep

pdfgrepможет рекурсивно искать строку или шаблон в файлах PDF в деревьях каталогов, подсчитывать совпадения или печатать некоторый контекст для каждого совпадения. Например, для рекурсивного поиска keywordв /some directoryзависимости от регистра:

pdfgrep -Ri keyword /some/directory

Pdfgrep - это инструмент для поиска текста в файлах PDF. Это работает подобно `grep '.

Особенности:

  • поиск по регулярным выражениям.
  • поддержка некоторых важных опций grep, включая: + вывод имени файла. + вывод номера страницы. + дополнительная нечувствительность к регистру. + считать
    вхождения.
  • и самая важная особенность: вывод цвета!

Установить pdfgrep

1 Источник: Каталог приложений Ubuntu

Митч
источник
6

Для поиска регулярного выражения в нескольких файлах PDF с помощью pdfgrep:

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

где путь это местоположение для ваших файлов PDF.

воспламеняться
источник
0

Причина, по которой pdftotext не увенчался успехом, может заключаться в том, что PDF-файлы являются отсканированными изображениями, и вам необходимо распознать их, я написал быстрый способ поиска всех pdfобъектов, которые нельзя grepотредактировать, и распознавания их.

Я заметил, что если pdfфайл не имеет какого-либо шрифта, он обычно не доступен для поиска. Зная это, мы можем использовать pdffonts.

Первые 2 строки pdffonts- это заголовок таблицы, поэтому, когда файл доступен для поиска, выводится более двух строк, зная это, мы можем создать:

gedit check_pdf_searchable.sh

вставьте это

#!/bin/bash 
#set -vx
if ((`pdffonts "$1" | wc -l` < 3 )); then
echo $1
ocrmypdf "$1" "$1"_ocr.pdf
fi

затем сделайте его исполняемым

chmod +x check_pdf_searchable.sh

затем перечислите все не доступные для поиска PDF-файлы в каталоге:

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

или в каталоге и его подкаталогах:

tree -fai . | grep -P ".pdf$" | xargs -L1 -I {} ./check_pdf_searchable.sh {}

Вам также необходимо установить:

sudo apt install ocrmypdf
Эдуард Флоринеску
источник