2015-12-18 24 views
5

Sto cercando di estrarre il testo da file PDF e successivamente cerco di identificare i riferimenti. Sto usando pdfminer 20140328. Con i file crittografati la sua esecuzione bene, ma ho avuto ora un file in cui ottengo:PDF Miner PDFEncryptionError

File "C:\Tools\Python27\lib\site-packages\pdfminer\pdfdocument.py", line 348, in _initialize_password

raise PDFEncryptionError('Unknown algorithm: param=%r' % param)

pdfminer.pdfdocument.PDFEncryptionError: Unknown algorithm: param={'CF': {'StdCF': {'Length': 16, 'CFM': /AESV2, 'AuthEvent': /DocOpen}}, 'O': '}\xe2>\xf1\xf6\xc6\x8f\xab\x1f"O\x9bfc\xcd\x15\xe09~2\xc9\\x87\x03\xaf\x17f>\x13\t^K\x99', 'Filter': /Standard, 'P': -1548, 'Length': 128, 'R': 4, 'U': 'Kk>\x14\xf7\xac\xe6\x97\xb35\xaby!\x04|\x18(\xbfN^Nu\x8aAd\x00NV\xff\xfa\x01\x08', 'V': 4, 'StmF': /StdCF, 'StrF': /StdCF}

Ho controllato con pdfinfo, che questo file sembrava essere con crittografia AES, ma posso aprirlo senza alcun problema. Così ho due domande:

  • in un primo momento: come è possibile che un documento è cifrato ma posso aprirlo senza password?

  • e in secondo luogo: come faccio a leggere correttamente tale file in PDFMiner? Da qualche parte ho letto per installare pycrypto per ottenere algoritmi aggiuntivi ma non risolve il mio problema.

Molte grazie.

risposta

8

Ho avuto lo stesso problema con alcuni documenti. Sembra che il documento sia crittografato, ma la password è vuota. Ecco perché possiamo facilmente aprirlo senza password.

Ho risolto il problema con l'utilità qpdf di Ubuntu. Può decifrare il file se si fornisce una password (vuota nel mio caso). Ho implementato un comando di shell nello script Python che decifrare il documento con una password vuota:

from subprocess import call 
call('qpdf --password=%s --decrypt %s %s' %('', pdf_filename, pdf_filename_decr), shell=True) 

dove

`pdf_filename` - filename of encrypted pdf, 
`pdf_filename_decr` - filename of a new decrypted copy. 

pdfminer dovrebbe estrarre il testo ora.

-3

C'è un programma PDF in PDF PDFill (www.pdfill.com). Ho usato la versione gratuita degli strumenti del programma per fare la stessa cosa: basta "dividere" tutte le pagine del documento e salvare il risultato. Il file salvato può quindi essere letto da pdfminer.