Гид по технологиям

pdfgrep — поиск текста в PDF из командной строки

• 4 min read • Инструменты • Обновлено 29 Nov 2025
pdfgrep — поиск текста в PDF
pdfgrep — поиск текста в PDF

Логотип и скриншот утилиты pdfgrep

Командные утилиты вроде grep и ack-grep отлично подходят для поиска по обычным текстовым файлам, но они не умеют читать содержимое PDF. pdfgrep, как явствует из названия, — небольшая утилита для командной строки, которая позволяет искать текст внутри PDF без открытия файла в графическом просмотрщике. Она работает очень быстро и особенно полезна для пакетной обработки большого числа PDF-документов.

Важно отметить: отличие между grep и pdfgrep в том, что pdfgrep оперирует на уровне страниц, а не строк. Это влияет на формат вывода и интерпретацию совпадений.

Установка

Для Ubuntu и производных достаточно одной команды:

sudo apt install pdfgrep

В других дистрибутивах просто передайте pdfgrep в ваш менеджер пакетов (например, dnf install pdfgrep или pacman -S pdfgrep). Также можно посмотреть исходники и страницу проекта на GitLab, если нужно собрать из исходников или внести правки.

Замечание: если текст в некоторых PDF не извлекается корректно, проверьте инструменты типа pdftotext или библиотеки системы — иногда PDF содержит встроенные шрифты или изображения текста, а не «настоящий» текст.

Быстрый запуск

Формат команды прост:

pdfgrep [OPTION...] PATTERN [FILE...]
  • OPTION — дополнительные флаги, например -i или --ignore-case для поиска без учёта регистра.
  • PATTERN — расширенное регулярное выражение (ERE).
  • FILE — имя файла или список файлов (можно передавать шаблоны shell, например *.pdf).

Пример тестового запуска по документации Python:

Результат поиска pdfgrep: выделено слово

Красные подсветки на изображении показывают все вхождения слова «queue». Если передать -i, будут найдены и «Queue» и другие варианты регистра.

Полезные опции

Ниже — подборка часто используемых опций (включая те, что были в исходной инструкции):

  • -i, --ignore-case — игнорировать регистр при сравнении.
  • -c, --count — вместо списка совпадений вывести только количество вхождений в файле.
  • -p, --page-count — вывести номера страниц с совпадениями и число вхождений на каждой странице.
  • -m, --max-count NUMBER — остановиться после достижения указанного числа совпадений.

Дополнительно: pdfgrep может обрабатывать несколько файлов одновременно и подстраиваться под переменную окружения GREP_COLORS, чтобы изменить цвет подсветки совпадений.

Чеклист для разных ролей

Разработчик

  • Установить pdfgrep через пакетный менеджер.
  • Протестировать поиск простого слова в известном PDF.
  • Сценарий: pdfgrep -i 'TODO' docs/*.pdf для поиска пометок.

Системный администратор

  • Использовать pdfgrep в cron/скриптах для мониторинга отчётов.
  • Ограничить число совпадений -m при массовой обработке.
  • Логировать вывод с указанием имени файла и номера страницы.

Технический писатель

  • Поиск устаревших терминов по всему архиву PDF: pdfgrep -i 'deprecated' *.pdf.
  • Сопоставление мест, где упоминается определённая функция.

Чистые примеры и шпаргалка

Поиск без учёта регистра во всех PDF в каталоге:

pdfgrep -i 'queue' *.pdf

Посчитать общее число вхождений в одном файле:

pdfgrep -c 'queue' Python-3.6.pdf

Показать номера страниц и число вхождений на каждой странице:

pdfgrep -p 'queue' Python-3.6.pdf

Остановиться после трёх совпадений:

pdfgrep -m 3 'queue' Python-3.6.pdf

Комбинация для массового поиска в каталоге и сохранения результата в файл:

pdfgrep -i 'регистрация' /var/docs/*.pdf > matches.txt

Когда pdfgrep не сработает

  • PDF содержит отсканированные страницы как изображения (без OCR). В таком случае pdfgrep не найдёт текст — сначала требуется OCR (например, tesseract или специализированные инструменты).
  • Текст в PDF хранится в необычной кодировке или зашифрован шрифтами; извлечение может быть некорректным.
  • PDF защищён паролем или доступ к файлу ограничен правами — утилита не сможет прочитать содержимое.

Если встречаются такие проблемы, рекомендуют предварительно извлечь текст с помощью pdftotext или выполнить OCR, а затем применять текстовые инструменты.

Альтернативные подходы

  • pdftotext + grep: конвертировать PDF в текст и искать с помощью обычных средств (pdftotext file.pdf - | grep -i pattern).
  • Использовать графический просмотрщик с полнотекстовым поиском (удобно для единичных случаев).
  • Для больших коллекций — индексаторы (например, ripgrep + предварительная конверсия в текст или системы полнотекстового поиска).

Методология эффективного поиска

  1. Проверить, извлекается ли текст: pdftotext file.pdf - | head.
  2. Запустить pdfgrep -i при нерегулярном регистре. 3. Если ищете по словам, экранируйте специальные символы регулярных выражений. 4. Для пакетной обработки используйте возможность передачи шаблонов (*.pdf) и логирование вывода.

Критерии приёмки

  • Совпадения найдены в ожидаемых местах и на ожидаемых страницах.
  • Количество результатов соответствует подсчёту при использовании -c или -p.
  • Для автоматизации: скрипт завершает работу корректно при достижении -m.

Важно: если PDF не содержит извлекаемого текста, pdfgrep не даст результатов — сначала нужно конвертировать или сделать OCR.

Факто-бокс

  • Формат команды: pdfgrep [OPTION...] PATTERN [FILE...].
  • Поддерживает регулярные выражения.
  • Работает по страницам, а не по строкам.

Короткий словарь

  • pdfgrep — утилита для поиска текста в PDF из командной строки.
  • PATTERN — шаблон поиска, расширенное регулярное выражение.
  • FILE — один или несколько PDF-файлов, которые анализируются.

Короткое резюме

pdfgrep — удобный и быстрый инструмент для поиска по PDF-документам из терминала. Он особенно полезен при работе с большим объёмом документов и при автоматизации задач. При наличии проблем с извлечением текста используйте предварительную конверсию или OCR.


Короткое объявление: pdfgrep экономит время при поиске по PDF. Установите его через пакетный менеджер и используйте -i, -c, -p и -m для гибкой работы.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро