Ответы:
Просто чтобы добавить к ответу выше, в частности, вы можете использовать инструмент командной строки из 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!), То вам, возможно, придется использовать оболочку терминала.
Удачи!
Примечание: xpdf-utils - это переходный пакет для poppler-utils.
Вы можете использовать poppler-utils. poppler-utils - это набор инструментов для файлов Portable Document Format (PDF).
Чтобы установить его, вы можете использовать Ubuntu Software Center или нажав ниже:
pdfgrep
может рекурсивно искать строку или шаблон в файлах PDF в деревьях каталогов, подсчитывать совпадения или печатать некоторый контекст для каждого совпадения. Например, для рекурсивного поиска keyword
в /some directory
зависимости от регистра:
pdfgrep -Ri keyword /some/directory
Pdfgrep - это инструмент для поиска текста в файлах PDF. Это работает подобно `grep '.
Особенности:
- поиск по регулярным выражениям.
- поддержка некоторых важных опций grep, включая: + вывод имени файла. + вывод номера страницы. + дополнительная нечувствительность к регистру. + считать
вхождения.- и самая важная особенность: вывод цвета!
1 Источник: Каталог приложений Ubuntu
Для поиска регулярного выражения в нескольких файлах PDF с помощью pdfgrep:
find /path -iname '*.pdf' -exec pdfgrep -H 'pattern' {} \;
где путь это местоположение для ваших файлов PDF.
Причина, по которой 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