Извлечение изображений из PDF, как работать с JBIG2 в кодировке - PullRequest
1 голос
/ 25 марта 2020

У меня есть несколько файлов PDF, некоторые из них представляют собой чистый текст, но некоторые полностью или частично сохраняются как «Одно изображение на страницу», поскольку они генерируются сканером.

Мне нужно извлечь все изображения содержатся в PDF, а затем изучите каждое изображение отдельно.

Мне удалось извлечь большинство изображений с помощью скрипта python, найденного здесь в SO. См. Вопрос:

Извлечение изображений из PDF без передискретизации, в python?

Некоторые из включенных изображений были закодированы с использованием JBIG2, и я не смог найти ни одного python или другого инструмента для преобразования jbig2 в нечто, что можно было бы легко открыть с помощью generi c Graphi c инструмент.

1 Ответ

1 голос
/ 25 марта 2020

Ну, я боролся с этим в течение многих недель, многие ответы от SO помогли мне, но всегда что-то не хватало, очевидно, ни у кого здесь никогда не было проблем с изображениями, закодированными в jbig2.

В куча PDF, которые мне нужно сканировать, изображения, закодированные в jbig2, очень популярны.

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

Поэтому после многих дней испытаний решил go за ответ, предложенный здесь Дкагедалом долгое время go.

Здесь мой шаг за шагом на linux: (если у вас есть другая ОС, я предлагаю использовать linux docker, это будет намного проще.)

Первый шаг:

apt-get install poppler-utils Затем я смог запустить инструмент командной строки pdfimages, например:

pdfimages -all myfile.pdf ./images_found/

С помощью приведенной выше команды вы сможете извлечь все изображения , содержащиеся в myfile.pdf, и вы сохраните их в images_found (вы должны создать images_found раньше)

В списке вы можете найти несколько типов изображений (зависит от вашего pdf), таких как: png, jpg, tiff; все они легко читаются с помощью любого графического инструмента c.

Тогда у вас появятся файлы с именами, такими как -145.jb2e и -145.jb2g.

Эти 2 файла содержат ОДИН ИЗОБРАЖЕНИЕ закодированный в jbig2, который сохранен в 2 разных файлах один для заголовка и один для данных

Опять я потерял много дней, пытаясь выяснить, как преобразовать эти файлы в нечто читаемое и наконец я наткнулся на этот инструмент под названием jbig2de c

Итак, сначала вам нужно установить этот инструмент magi c:

apt-get install jbig2de c

тогда вы можете запустить:

jbig2dec -t png -145.jb2g -145.jb2e

Вы наконец сможете преобразовать все извлеченные изображения во что-то полезное.

хорошо удачи!

...