【发布时间】:2017-12-09 17:01:31
【问题描述】:
我正在尝试从 pdf 中提取所有格式的图像。我做了一些谷歌搜索,在 StackOverflow 上找到了this page。我尝试了这段代码,但我收到了这个错误:
我正在使用 python 3.x,这是我正在使用的代码。我试图通过 cmets 但无法弄清楚。请帮我解决这个问题。
这里是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()
我正在阅读一些 cmets 并浏览链接,发现这个问题在 this page 上已解决。有人可以帮我实现吗?
【问题讨论】:
-
您也可以提供输入 PDF 吗?如果我们可以重现您在使用的代码和文件时遇到的问题,那么提供帮助会容易得多。
-
@Gary02127 很抱歉回复晚了 Gary。我所在位置的网络已关闭。我尝试了多个 pdf 但同样的错误。但是,我用示例 PDF 编辑了问题。
-
您正在使用的库
PyPDF2似乎不支持 PDF 用于图像的过滤器。我不知道任何其他包含此过滤器的 PDF 阅读器,但它们很可能就在那里,我不是专家。 -
@physicalattraction 你真的很清楚出了什么问题。实际上,我提到的页面中有一些解决方案。但它会将我重定向到 GitHub。而且我不知道如何从 GitHub 安装库。你能帮忙吗?
-
我解决了这个问题。谢谢大家。你们都给了我更好的画面。
标签: python python-imaging-library pypdf2 pdf-extraction