Учитывая PDF, как извлечь изображения * и их расположение на странице * из командной строки? - PullRequest
12 голосов
/ 03 января 2011

У меня есть PDF с текстом и изображениями. Я хочу извлечь изображения из PDF с помощью командной строки Linux. Я могу использовать pdfimages для извлечения изображений, но я также хочу найти местоположение на каждой странице, где находится это изображение. pdfimages может сказать мне, на какой странице каждое изображение (из имени файла), однако это все, что мне дает. Есть ли другой инструмент FLOSS, который может это сделать?

Ответы [ 3 ]

15 голосов
/ 08 января 2011

Ну, я думаю, что PDF должен содержать информацию для их размещения, так что это должно быть возможно.С другой стороны, решение может быть, например:

  1. Конвертировать каждую страницу PDF в изображение с помощью pdftoppm
  2. Извлечь изображения с каждой страницы с помощью pdfimages
  3. Преобразование изображений в один 8-битный канал серой шкалы (для более быстрого анализа) с cvCvtColor
  4. Обнаружение объектас matchTemplate

Шаг 1 может выглядеть примерно так: Шаг 10:

for i in {0..99} ; do pdfimages -f $((i)) -l $((i+1)) file.pdf page$((i)); done

Шаг 3 здесь * простой примерНа шаге 4 у вас не должно быть проблем с тренировкой, потому что изображение будет точно соответствовать.matchTemplate( imageToSearch, pdfPageImg, outputMap, 'CV_TM_SQDIFF')

(* - ссылка удалена, поскольку теперь она указывает на сайт с вымогателями)

7 голосов
/ 09 июня 2015

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

pdftohtml -xml file.pdf
6 голосов
/ 03 января 2011

В PDF нет гарантии, что если изображение будет использовано повторно, оно не будет отдельным изображением.В PDF-файле очень мало метаданных изображения, кроме местоположения страницы и его фактического размера на странице.Я написал статью, объясняющую, как изображения хранятся в PDF, на http://www.jpedal.org/PDFblog/2010/09/understanding-the-pdf-file-format-images/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...