属性错误:函数/符号';ARC4_stream_init';在库中找不到(Python)

属性错误:函数/符号';ARC4_stream_init';在库中找不到(Python),python,pdf,cryptography,pdfminer,Python,Pdf,Cryptography,Pdfminer,我一直在尝试使用多个不同的pdf到文本库,如pdfplumber和pdfminer,它们都给了我相同的回溯错误,我缺少ARC4_stream_init。我试着用谷歌搜索,但找不到有类似问题的人。如有任何帮助,将不胜感激: 编辑:最初我试图提取一个可能被加密的财务报表pdf。我只是尝试了一个简单的pdf,没有问题。我仍然希望有任何解决办法,因为我正在尝试自动输入财务报表PDF的数据 Traceback (most recent call last): File "C:\Users\

我一直在尝试使用多个不同的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
回溯(最近一次呼叫最后一次):
文件“C:\Users\Stan\Python\ALIRT\pdf提取器\test.py”,第50行,在
text=convert\u pdf\u to\u txt('test\u pdf.pdf')
文件“C:\Users\Stan\Python\ALIRT\pdf extracter\test.py”,第40行,在转换\u pdf\u到\u txt中
对于PDFPage.get_页面中的页面(fp,pagenos,maxpages=maxpages,password=password,caching=caching,check_extractable=True):
文件“C:\Users\Stan\anaconda3\lib\site packages\pdfminer\pdfpage.py”,第127行,在get\U页面中
doc=PDFDocument(解析器,密码=密码,缓存=缓存)
文件“C:\Users\Stan\anaconda3\lib\site packages\pdfminer\pdfdocument.py”,第564行,在\uu init中__
自我初始化密码(密码)
文件“C:\Users\Stan\anaconda3\lib\site packages\pdfminer\pdfdocument.py”,第590行,在“初始化密码”中
handler=工厂(docid、param、密码)
文件“C:\Users\Stan\anaconda3\lib\site packages\pdfminer\pdfdocument.py”,第283行,在\uu init中__
self.init()
文件“C:\Users\Stan\anaconda3\lib\site packages\pdfminer\pdfdocument.py”,第291行,在init中
self.init_key()
文件“C:\Users\Stan\anaconda3\lib\site packages\pdfminer\pdfdocument.py”,第304行,在init_键中
self.key=self.authenticate(self.password)
文件“C:\Users\Stan\anaconda3\lib\site packages\pdfminer\pdfdocument.py”,第354行,在“身份验证”中
key=self.authenticate\u user\u password(密码)
文件“C:\Users\Stan\anaconda3\lib\site packages\pdfminer\pdfdocument.py”,第361行,在authenticate\u user\u password中
如果自行验证加密密钥(密钥):
文件“C:\Users\Stan\anaconda3\lib\site packages\pdfminer\pdfdocument.py”,第368行,验证加密密钥
u=自计算(键)
文件“C:\Users\Stan\anaconda3\lib\site packages\pdfminer\pdfdocument.py”,第326行,在compute\u中
result=ARC4.new(key).encrypt(hash.digest())#4
文件“C:\Users\Stan\anaconda3\lib\site packages\Crypto\Cipher\ARC4.py”,第132行,新格式
返回ARC4Cipher(键,*args,**kwargs)
文件“C:\Users\Stan\anaconda3\lib\site packages\Crypto\Cipher\ARC4.py”,第60行,在\uu init中__
结果=_raw_arc4_lib.arc4_stream_init(c_uint8_ptr(键),
文件“C:\Users\Stan\anaconda3\lib\site packages\cffi\api.py”,第912行,在\uu getattr中__
make_访问器(名称)
文件“C:\Users\Stan\anaconda3\lib\site packages\cffi\api.py”,第908行,在make\u访问器中
访问者[名称](名称)
文件“C:\Users\Stan\anaconda3\lib\site packages\cffi\api.py”,第838行,在accessor\u函数中
value=backendlib.load_函数(b类型,名称)
AttributeError:在库“C:\Users\Stan\anaconda3\lib\site packages\Crypto\Util\..\Cipher\\ u ARC4.cp37-win\u amd64.pyd”中找不到函数/符号“ARC4\u stream\u init”:错误0x7f

使用较低版本对我来说很有用

$ pip install pycryptodome==3.0.0

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

1-PDF是加密的,我不知道。这里有一个简单的方法可以找到:

!pip安装PyPDF2

导入PyPDF2

如果(PyPDF2.PdfFileReader(打开(文件名[-12:],'rb')).isEncrypted):

打印('加密')

其他:

打印('未加密)

如果它是加密的,即使没有密码,您也必须从加密它的来源找出解决问题的方法

2-通过执行以下两个步骤解决此问题:

$ pip install crypto

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

$ pip install arc4 


PyCryptoDome提供了一个Arc4的Python实现-请参阅doc page:谢谢,我是一个初学者,所以我仍然对应该做什么感到困惑。我应该pip安装PyCryptoDome还是应该在使用pdfplumber之前导入库?很抱歉,我只是用在线编译器开发Python,所以我无法回答您的问题o安装库
$ pip install arc4 
from arc4 import ARC4