在 python 中从 PDF 中提取图像时出错
Error while image extraction from PDF in python
我正在尝试从 pdf 中提取所有格式的图像。我进行了一些谷歌搜索,并在 Whosebug 上找到了 this page。我尝试了这段代码,但出现了这个错误:
我正在使用 python 3.x,这是我正在使用的代码。我试图浏览评论但无法弄清楚。请帮我解决这个问题。
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 部分。
我正在尝试从 pdf 中提取所有格式的图像。我进行了一些谷歌搜索,并在 Whosebug 上找到了 this page。我尝试了这段代码,但出现了这个错误:
我正在使用 python 3.x,这是我正在使用的代码。我试图浏览评论但无法弄清楚。请帮我解决这个问题。
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 部分。