Ошибка при извлечении изображения из PDF в python

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

Я использую Python 3.x и вот код, который я использую. Я пытался просмотреть комментарии, но не смог понять. Пожалуйста, помогите мне решить это.

Вот образец PDF.

import PyPDF2

from PIL import Image

if __name__ == '__main__':
    input1 = PyPDF2.PdfFileReader(open("Aadhaar1.pdf", "rb"))
    page0 = input1.getPage(0)
    xObject = page0['/Resources']['/XObject'].getObject()

    for obj in xObject:
        if xObject[obj]['/Subtype'] == '/Image':
            size = (xObject[obj]['/Width'], xObject[obj]['/Height'])
            data = xObject[obj].getData()
            if xObject[obj]['/ColorSpace'] == '/DeviceRGB':
                mode = "RGB"
            else:
                mode = "P"

            if xObject[obj]['/Filter'] == '/FlateDecode':
                img = Image.frombytes(mode, size, data)
                img.save(obj[1:] + ".png")
            elif xObject[obj]['/Filter'] == '/DCTDecode':
                img = open(obj[1:] + ".jpg", "wb")
                img.write(data)
                img.close()
            elif xObject[obj]['/Filter'] == '/JPXDecode':
                img = open(obj[1:] + ".jp2", "wb")
                img.write(data)
                img.close()

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

3 ответа

Решение

Это PyPDF2 ошибка библиотеки Попробуйте удалить и установить библиотеку с изменениями, или вы можете увидеть изменения в GitHub и отметить их. Надеюсь, это сработает.

Такая же ошибка у меня с Python 3.9 и PyPDF2 1.26 на момент написания этой статьи.

      data = xObject[obj].getData()

была проблемная линия. В моем PDF-файле были изображения JPG, и эта строка не работала из-за того же исключения NotImlemented. Изменение строки для части /DCTDecode на;

      data = xObject[obj]._data

вроде сработало для меня. Это дает простой поток JPG в формате PDF. Таким образом, отдельные строки данных = ... для каждого раздела if/filter, хотя часть JP2 не пробовали.

На сегодняшний день я все еще получаю сообщение об ошибке NotImplementedError: unsupported filter /DCTDecode

У меня установлен PyPDF2 v 1.26.0 с использованием Python3 3.7.5. Мой код Python такой же, как и выше.

Есть ли решение?

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