Да, с Ghostscript вы можете извлекать текст из PDF-файлов. Но нет, это не лучший инструмент для работы. И нет, вы не можете сделать это «порциями» (частями отдельных страниц). Что вы можете сделать: извлечь текст только из определенного диапазона страниц.
Первое: Устройство вывода txtwrite
Ghostscript (не очень хорошо)
gs \
-dBATCH \
-dNOPAUSE \
-sDEVICE=txtwrite \
-dFirstPage=3 \
-dLastPage=5 \
-sOutputFile=- \
/path/to/your/pdf
Это выведет весь текст, содержащийся на страницах 3-5, в стандартный вывод. Если вы хотите выводить текстовый файл, используйте -sOutputFile=textfilename.txt
.
gs
Обновление:
В последних версиях Ghostscript произошли значительные улучшения в устройстве txtwrite
и исправлены ошибки. См. последние изменения в журнале Ghostscript (поиск txtwrite на этой странице) для получения подробной информации.
Для этого требуется загрузить последнюю версию файла ps2ascii.ps из репозитория Ghostscript Git . Вам нужно будет конвертировать PDF в PostScript, а затем выполнить эту команду для файла PS:
gs \
-q \
-dNODISPLAY \
-P- \
-dSAFER \
-dDELAYBIND \
-dWRITESYSTEMDICT \
-dSIMPLE \
/path/to/ps2ascii.ps \
input.ps \
-c quit
Если параметр -dSIMPLE
не определен, каждая выходная строка содержит некоторую дополнительную информацию, помимо чистого текста, о используемых шрифтах и размере шрифта.
Если вы замените этот параметр на -dCOMPLEX
, вы получите дополнительную информацию об используемых цветах и изображениях.
Прочтите комментарии внутри ps2ascii.ps , чтобы узнать больше об этой утилите. Это не удобно, но для меня это работало, в большинстве случаев мне это было нужно ....
Третье: Утилита XPDF pdftotext
CLI (удобнее, чем Ghostscript)
Более удобный способ извлечения текста: используйте pdftotext
(доступно для Windows, а также для Linux / Unix или Mac OS X). Эта утилита основана на Poppler или XPDF. Вы можете попробовать эту команду:
pdftotext \
-f 13 \
-l 17 \
-layout \
-opw supersecret \
-upw secret \
-eol unix \
-nopgbrk \
/path/to/your/pdf
- |less
При этом отобразится диапазон страниц от 13 ( f первая страница) до 17 ( l ast страница), сохранится макет защищенного двойным паролем именованного файла PDF (с использованием пользователя и пароли владельца secret и supersecret ), с соглашением Unix EOL, но без вставки разрывов страниц между страницами PDF, пропускаемых через меньше ...
pdftotext -h
отображает все доступные параметры командной строки.
Конечно, оба инструмента работают только для текстовых частей PDF-файлов (если они есть). Да, и математическая формула тоже не сработает ...; -)
pdftotext
Обновление:
В последних версиях Poppler pdftotext
теперь есть опции для извлечения "части (с использованием координат) PDF" страниц, как запрашивал OP. Параметры:
-x <int>
: x-координата левого верхнего угла области обрезки
-y <int>
: координата Y левого верхнего угла области обрезки
-W <int>
: ширина области обрезки в пикселях (по умолчанию 0)
-H <int>
: высота области обрезки в пикселях (по умолчанию 0)
Наилучшее, если используется с параметром -layout
.
Четвертый: команда MuPDF mutool draw
также может извлекать текст
Кроссплатформенное приложение с открытым исходным кодом MuPDF (разработанное той же компанией, которая также разрабатывает Ghostscript) включает инструмент командной строки mutool
. Чтобы извлечь текст из PDF с помощью этого инструмента, используйте:
mutool draw -F txt the.pdf
выдаст извлеченный текст в <stdout>
. Используйте -o filename.txt
, чтобы записать его в файл.
Пятое: PDFLib's Text Extrak Toolkit (TET) (лучше всего ... но это PayWare)
TET , набор инструментов для извлечения текста из семейства продуктов pdflib может найти координату xy текстового содержимого в файле PDF (и многое другое ). TET имеет интерфейс командной строки, и это самый мощный из всех известных мне инструментов для извлечения текста. (Он может даже обрабатывать лигатуры ...) Цитата с их сайта:
Геометрия
TET предоставляет точные метрики для текста, такие как положение на странице, ширина глифа и направление текста. Определенные области на странице могут быть исключены или включены в извлечение текста, например, игнорировать верхние и нижние колонтитулы или поля.
По моему опыту, хотя он и не обладает самым простым интерфейсом CLI, который вы можете себе представить: после того, как вы к нему привыкли, он будет делать то, что обещает, для большинства PDF-файлов вы к нему кидаете ...
И есть еще больше вариантов:
podofotxtextract
(инструмент CLI) из проекта PoDoFo (с открытым исходным кодом)
calibre
(обычно программа с графическим интерфейсом для работы с электронными книгами, с открытым исходным кодом) имеет параметр командной строки, который может извлекать текст из PDF-файлов
AbiWord
(текстовый процессор с графическим интерфейсом, с открытым исходным кодом) может импортировать PDF-файлы и сохранять свои файлы в формате .txt: abiword --to=txt --to-name=output.txt input.pdf