【问题标题】:AttributeError: function/symbol 'ARC4_stream_init' not found in library (Python)AttributeError:在库中找不到函数/符号“ARC4_stream_init”(Python)
【发布时间】:2021-02-16 15:07:37
【问题描述】:

我一直在尝试使用多个不同的 pdf 到文本库,例如 pdfplumber 和 pdfminer,它们都给了我同样的回溯错误,我缺少 ARC4_stream_init。我尝试使用谷歌搜索,但找不到有类似问题的人。任何帮助将不胜感激:

编辑:最初我试图提取可能已加密的财务报表 pdf。我只是尝试了一个更简单的pdf,没有问题。我仍然希望有任何解决方法,因为我正在尝试自动输入财务报表 pdf 的数据。

Traceback (most recent call last):

  File "C:\Users\Stan\Python\ALIRT\pdf extracter\test.py", line 50, in <module>
    text = convert_pdf_to_txt('test_pdf.pdf')

  File "C:\Users\Stan\Python\ALIRT\pdf extracter\test.py", line 40, in convert_pdf_to_txt
    for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True):

  File "C:\Users\Stan\anaconda3\lib\site-packages\pdfminer\pdfpage.py", line 127, in get_pages
    doc = PDFDocument(parser, password=password, caching=caching)

  File "C:\Users\Stan\anaconda3\lib\site-packages\pdfminer\pdfdocument.py", line 564, in __init__
    self._initialize_password(password)

  File "C:\Users\Stan\anaconda3\lib\site-packages\pdfminer\pdfdocument.py", line 590, in _initialize_password
    handler = factory(docid, param, password)

  File "C:\Users\Stan\anaconda3\lib\site-packages\pdfminer\pdfdocument.py", line 283, in __init__
    self.init()

  File "C:\Users\Stan\anaconda3\lib\site-packages\pdfminer\pdfdocument.py", line 291, in init
    self.init_key()

  File "C:\Users\Stan\anaconda3\lib\site-packages\pdfminer\pdfdocument.py", line 304, in init_key
    self.key = self.authenticate(self.password)

  File "C:\Users\Stan\anaconda3\lib\site-packages\pdfminer\pdfdocument.py", line 354, in authenticate
    key = self.authenticate_user_password(password)

  File "C:\Users\Stan\anaconda3\lib\site-packages\pdfminer\pdfdocument.py", line 361, in authenticate_user_password
    if self.verify_encryption_key(key):

  File "C:\Users\Stan\anaconda3\lib\site-packages\pdfminer\pdfdocument.py", line 368, in verify_encryption_key
    u = self.compute_u(key)

  File "C:\Users\Stan\anaconda3\lib\site-packages\pdfminer\pdfdocument.py", line 326, in compute_u
    result = ARC4.new(key).encrypt(hash.digest())  # 4

  File "C:\Users\Stan\anaconda3\lib\site-packages\Crypto\Cipher\ARC4.py", line 132, in new
    return ARC4Cipher(key, *args, **kwargs)

  File "C:\Users\Stan\anaconda3\lib\site-packages\Crypto\Cipher\ARC4.py", line 60, in __init__
    result = _raw_arc4_lib.ARC4_stream_init(c_uint8_ptr(key),

  File "C:\Users\Stan\anaconda3\lib\site-packages\cffi\api.py", line 912, in __getattr__
    make_accessor(name)

  File "C:\Users\Stan\anaconda3\lib\site-packages\cffi\api.py", line 908, in make_accessor
    accessors[name](name)

  File "C:\Users\Stan\anaconda3\lib\site-packages\cffi\api.py", line 838, in accessor_function
    value = backendlib.load_function(BType, name)

AttributeError: function/symbol 'ARC4_stream_init' not found in library 'C:\Users\Stan\anaconda3\lib\site-packages\Crypto\Util\..\Cipher\_ARC4.cp37-win_amd64.pyd': error 0x7f

【问题讨论】:

  • PyCryptoDome 提供了 Arc4 的 Python 实现 - 请参阅文档页面:pycryptodome.readthedocs.io/en/latest/src/cipher/arc4.html
  • 谢谢,我有点初学者,所以我仍然对我应该做什么感到困惑。我应该 pip install pycryptodome 还是应该在使用 pdfplumber 之前导入库?
  • 对不起这个答案 - 我正在使用在线编译器开发 Python,所以我无法回答您的问题如何安装库

标签: python pdf cryptography pdfminer


【解决方案1】:

使用较低版本对我有用

$ pip install pycryptodome==3.0.0

【讨论】:

  • 谢谢。我遇到了同样的问题:AttributeError: function/symbol 'SHA256_init' not found in library ... _SHA256.cpython-38-x86_64-linux-gnu.so
【解决方案2】:

我遇到了同样的问题,我的解决方案涉及两种途径之一:

1- PDF 已加密,我不知道。这里有一个简单的方法来找出:

!pip 安装 PyPDF2

导入 PyPDF2

if (PyPDF2.PdfFileReader(open(file_name[-12:], 'rb')).isEncrypted):

打印('加密')

其他:

print('未加密)

如果它是加密的,即使没有密码,你也必须弄清楚如何从加密它的来源解决问题。

2-通过执行以下两个步骤来解决它:

$ pip install crypto

from Crypto.Cipher import ARC4

或者,您也可以只安装 arc4 模块:

$ pip install arc4 

from arc4 import ARC4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多