在 python 中从 PDF 中提取图像时出错

Error while image extraction from PDF in python

我正在尝试从 pdf 中提取所有格式的图像。我进行了一些谷歌搜索,并在 Whosebug 上找到了 this page。我尝试了这段代码,但出现了这个错误:

我正在使用 python 3.x,这是我正在使用的代码。我试图浏览评论但无法弄清楚。请帮我解决这个问题。

这是sample 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()

我正在阅读一些评论并浏览链接,发现这个问题已在 this page 上解决。有人可以帮我实现吗?

这是PyPDF2库错误。尝试卸载并安装带有更改的库,或者您可以在 GitHub 中看到更改并标记 changes.I 希望能起作用。

直到今天,我仍然收到错误 NotImplementedError: unsupported filter /DCTDecode

我已经安装了 PyPDF2 v 1.26.0,使用 Python3 3.7.5。我的Python代码和上面一样

有解决办法了吗?

在撰写本文时,我使用 Python 3.9 和 PyPDF2 1.26 时遇到同样的错误。

data = xObject[obj].getData()

是问题所在。我的 PDF 有 JPG 图像,并且由于相同的 NotImlemented 异常,该行无法正常工作。 将 /DCTDecode 部分的行更改为;

data = xObject[obj]._data

有点适合我。这在 pdf 中提供了纯 JPG 流。 因此,即每个 if/filter 部分的单独数据 = ... 行,但未尝试 JP2 部分。