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

Командные утилиты вроде 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:

Красные подсветки на изображении показывают все вхождения слова «queue». Если передать -i, будут найдены и «Queue» и другие варианты регистра.
Полезные опции
Ниже — подборка часто используемых опций (включая те, что были в исходной инструкции):
-i,--ignore-case— игнорировать регистр при сравнении.-c,--count— вместо списка совпадений вывести только количество вхождений в файле.-p,--page-count— вывести номера страниц с совпадениями и число вхождений на каждой странице.-m,--max-countNUMBER — остановиться после достижения указанного числа совпадений.
Дополнительно: 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 + предварительная конверсия в текст или системы полнотекстового поиска).
Методология эффективного поиска
- Проверить, извлекается ли текст:
pdftotext file.pdf - | head. - Запустить
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 для гибкой работы.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента