Извлечение изображений из PDF, как работать с кодировкой JBIG2

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

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

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

Извлечь изображения из PDF без передискретизации в Python?

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

2 ответа

Решение

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

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

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

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

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

Первый шаг:

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

pdfimages -all myfile.pdf ./images_found/

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

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

Тогда у вас будут файлы с именами вроде: -145.jb2e и -145.jb2g.

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

Я снова потерял много дней, пытаясь выяснить, как преобразовать эти файлы во что-то читаемое, и, наконец, я наткнулся на инструмент под названием jbig2dec.

Итак, сначала вам нужно установить этот волшебный инструмент:

apt-get установить jbig2dec

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

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

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

удачи!

вы можете попробовать это https://github.com/Charltsing/JBIG2Viewer

он может загружать и сохранять изображение jbig2

Другие вопросы по тегам