PDF Miner PDF加密错误

PDF Miner PDFEncryptionError

我正在尝试从 pdf 文件中提取文本,然后尝试识别参考文献。我正在使用 pdfminer 20140328。对于未加密的文件,它 运行 很好,但我现在得到一个文件,我得到:

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}

我用 pdfinfo 检查过,这个文件似乎是 AES 加密的,但我可以毫无问题地打开它。 所以我有两个问题:

非常感谢。

我在处理一些文档时遇到了同样的问题。 看起来文档已加密,但密码为空。这就是为什么我们可以在没有密码的情况下轻松打开它。

我最终用 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 现在应该提取文本。

我遇到了完全相同的错误,使用加密选项 -V 4 加密了 PDF。事实证明,最新的 pdfminer 确实支持这一点。

如果您使用 pip 安装 pdfminer,则您 运行 是 2014 (20140328) 的版本,不支持它。所以改为:

git clone https://github.com/euske/pdfminer.git
cd pdfminer
python setup.py install

确保安装了 pycrypto:

pip install pycrypto

并且您可以导入 AES:

from Crypto.Cipher import AES

这是pdfminer的错误,使用pdfplumber.open(file_name, password="".encode())跳过此错误或TypeError: can only concatenate str (not "bytes") to str