在 Python 中,我使用pdfminer从 pdf 中读取文本,并使用此消息下方的代码。我现在收到一条错误消息:
File "/usr/local/lib/python2.7/dist-packages/pdfminer/pdfpage.py", line 124, in get_pages
raise PDFTextExtractionNotAllowed('Text extraction is not allowed: %r' % fp)
PDFTextExtractionNotAllowed: Text extraction is not allowed: <cStringIO.StringO object at 0x7f79137a1
ab0>
当我用 Acrobat Pro 打开这个 pdf 文件时,发现它是安全的(或“读保护”)。然而,从这个链接中,我了解到有许多服务可以轻松禁用这种读取保护(例如pdfunlock.com。当深入研究 pdfminer 的源代码时,我看到上面的错误是在这些行上生成的。
if check_extractable and not doc.is_extractable:
raise PDFTextExtractionNotAllowed('Text extraction is not allowed: %r' % fp)
由于有许多服务可以在一秒钟内禁用这种读保护,我认为这很容易做到。看起来这.is_extractable
是一个简单的属性doc
,但我不认为它像更改.is_extractable
为 True..那样简单。
有人知道如何使用 Python 禁用 pdf 的读取保护吗?欢迎所有提示!
=================================================
您将在下面找到我目前从非读保护中提取文本的代码。
def getTextFromPDF(rawFile):
resourceManager = PDFResourceManager(caching=True)
outfp = StringIO()
device = TextConverter(resourceManager, outfp, codec='utf-8', laparams=LAParams(), imagewriter=None)
interpreter = PDFPageInterpreter(resourceManager, device)
fileData = StringIO()
fileData.write(rawFile)
for page in PDFPage.get_pages(fileData, set(), maxpages=0, caching=True, check_extractable=True):
interpreter.process_page(page)
fileData.close()
device.close()
result = outfp.getvalue()
outfp.close()
return result