У меня есть несколько PDF-файлов, которые я хочу разделить на файлы TIFF, используя convert
(для распознавания через tesseract
). Пока это работает отлично - за исключением того, что для автоматизации всего процесса мне нужно установить DPI для вывода convert
. Прямо сейчас я использую команду, подобную этой:
convert -density 300 myFile.pdf -depth 8 -background white output-%04d.tiff
... которая выводит PDF-файлы с разрешением 300 DPI. Однако некоторые PDF-файлы имеют меньший DPI (например, 150 DPI), что означает, что я не хочу выводить их при 300 DPI через convert
- это создает чрезмерно большие файлы TIFF без какой-либо дополнительной информации.
Я знаю, что есть способы проверить DPI изображений в PDF-файле, открыв Adobe Acrobat и возиться с инструментами «предпечатной проверки». Однако есть ли способ определить с помощью командной строки DPI определенного файла PDF?
Я использую следующую команду:
convert MyPDF.pdf -print "Size: %wx%h\n" /dev/null
и это возвращается:
Size: 380x380
Я нуждался в этой информации и просто нашел его здесь:
http://www.wizards-toolkit.org/discourse-server/viewtopic.php?t=16110
Эта техника также использует ImageMagick:
identify -format "%w x %h %x x %y" DAT_1.tif
вывод является размером изображения и точек на дюйм:
2480 x 3507 300 x 300
Так как я интересуюсь тем же видом задания (хотя не обязательно к OCR файлы PDF, но преобразовать их в DjVu и затем OCR их), я нашел этот вопрос и недостаток ответов (так как я должен был предположить DPI изображений с числом пикселей и затем использовать размер в качестве вывода pdfinfo
или другие приемы---не говоря уже о том, что изображения в PDF могут иметь различную плотность и т.д.).
После большого исследования больше, я нашел, что можно использовать pdfimages
(от пакета poppler-utils) как следующее:
$ pdfimages -list deptest.pdf
page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
1 0 image 100 100 gray 1 1 image no 9 0 53 53 169B 14%
2 1 image 100 100 gray 1 1 ccitt no [inline] 53 53 698B 56%
Заметьте x-ppi
и y-ppi
при упоминании выше. Это также перечисляет формат, в котором изображения хранятся в PDF, который прохладен (иногда, это - JBIG2, иногда JPEG2000 и т.д.),
Примечание: Файл deptest.pdf
используемый выше доступно от pdfsizeopt
репозиторий.
После этого можно просто извлечь изображения с pdfimages
самостоятельно или использование pdftoppm
(также от poppler-utils
) представлять все страницы во многих форматах, которые можно любить (например, tiff, для сканирования с tesseract
).
Можно использовать что-то как следующее (предполагающий создание названного каталога imgs
куда Вы поместите свои изображения):
pdfimages -png Faraway-PRA.pdf imgs/prefix
Файлы будут созданы в каталоге imgs
с именами, запускающимися с prefix
, как в:
$ ls
prefix-000.png prefix-047.png prefix-094.png prefix-141.png
prefix-001.png prefix-048.png prefix-095.png prefix-142.png
prefix-002.png prefix-049.png prefix-096.png prefix-143.png
prefix-003.png prefix-050.png prefix-097.png prefix-144.png
(...)
Можно, затем, провести любую операцию, как которая Вы считаете целесообразным с инструментами scantailor
или независимо от того, что Вам нравится.
Если Вы просто хотите к OCR файл PDF, можно использовать программу, которая хорошо сохраняется и уже упаковывается, а именно, ocrmypdf.