In Python sto usando pdfminer per leggere il testo da un pdf con il codice sotto questo messaggio. Io ora ottenere un messaggio di errore che dice:Come sbloccare un PDF "protetto" (protetto da lettura) in Python?
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>
Quando apro questo PDF con Acrobat Pro si scopre che è fissato (o "lettura protetta"). Da this link però, ho letto che c'è una moltitudine di servizi che possono disattivare questa protezione read-facilmente (ad esempio pdfunlock.com. Quando ci si immerge nella fonte di pdfminer, vedo che l'errore precedente viene generato sul these lines.
if check_extractable and not doc.is_extractable:
raise PDFTextExtractionNotAllowed('Text extraction is not allowed: %r' % fp)
Dato che c'è una moltitudine di servizi che possono disabilitare questa protezione di lettura entro un secondo, presumo sia molto facile da fare. Sembra che lo .is_extractable
sia un semplice attributo dello doc
, ma non penso sia semplice come modifica di .is_extractable
in True.
Qualcuno sa come posso disabilitare la lettura pro tection su un pdf usando Python? Tutti i suggerimenti sono ben accetti!
========================================= ==
Di seguito è riportato il codice con cui attualmente estraggo il testo da non protetto protetto.
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
Hai provato a cambiare .is_extractable su True? C'è in realtà una ragionevole possibilità che funzioni. – user3757614