我正在尝试从pdf文件中提取文本,然后尝试识别引用.我正在使用pdfminer 20140328.使用未加密的文件,它运行良好,但我现在得到一个文件,我得到:
_initialize_password中的文件"C:\ Tools\Python27\lib\site-packages\pdfminer\pdfdocument.py",第348行
提出PDFEncryptionError('未知算法:param =%r'%param)
pdfminer.pdfdocument.PDFEncryptionError:未知算法:param = {'CF':{'StdCF':{'长度':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','过滤':/标准,'P': - 1548,'长度':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}
我检查了pdfinfo,这个文件似乎是AES加密的,但我可以毫无问题地打开它.所以我有两个问题:
首先:如何加密文档但我可以在没有密码的情况下打开它?
其次:我如何使PDFMiner正确读取该文件?在某处我读安装pycrypto以获得额外的算法,但它并没有解决我的问题.
非常感谢.
我对一些文件也有同样的问题.看起来文档已加密,但密码为空.这就是我们可以在没有密码的情况下轻松打开它的原因.
我最终用Ubuntu的qpdf实用程序解决了这个问题.如果您提供密码,它可以解密文件(在我的情况下为空).我在Python脚本中实现了一个shell命令,该命令将使用空密码解密文档:
from subprocess import call call('qpdf --password=%s --decrypt %s %s' %('', pdf_filename, pdf_filename_decr), shell=True)
哪里
`pdf_filename` - filename of encrypted pdf, `pdf_filename_decr` - filename of a new decrypted copy.
pdfminer现在应该提取文本.