4

我正在尝试从 pdf 中提取所有格式的图像。我做了一些谷歌搜索,在 StackOverflow 上找到了这个页面。我尝试了这段代码,但我收到了这个错误:

我正在使用 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()

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

4

3 回答 3

1

这是PyPDF2库错误。尝试卸载并安装带有更改的库,或者您可以在 GitHub 中查看更改并标记更改。我希望这会奏效。

于 2017-12-13T10:31:11.883 回答
0

到今天为止,我仍然收到错误消息NotImplementedError: unsupported filter /DCTDecode

我使用 Python3 3.7.5 安装了 PyPDF2 v 1.26.0。我的 Python 代码与上面相同。

有没有解决办法?

于 2019-11-07T09:43:59.780 回答
0

在撰写本文时,Python 3.9 和 PyPDF2 1.26 对我来说同样的错误。

data = xObject[obj].getData()

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

data = xObject[obj]._data

有点为我工作。这会在 pdf 中提供纯 JPG 流。因此,即为每个 if/filter 部分单独的 data = ... 行,虽然没有尝试过 JP2 部分。

于 2021-09-06T19:31:41.677 回答