Как найти файл 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.