Python 在Windows Server 2016上安装OCRmyPDF-Can';找不到liblept.dll。编辑路径安全吗?

Python 在Windows Server 2016上安装OCRmyPDF-Can';找不到liblept.dll。编辑路径安全吗?,python,windows,leptonica,Python,Windows,Leptonica,我正在尝试使用Python 37-32在我公司客户的Windows Server 2016 Build 14393计算机上导入ocrmypdf。当我在Jupyter笔记本中导入库时,它无法使用ctypes.utility.find_library()定位leptonica Ocrmypdf是Linux开发的Python 3包。根据文档(),它不支持Windows。建议的解决方法是docker容器和Linux的Windows子系统 我宁愿不使用docker容器,因为我和我的同事都不是很有经验。我无

我正在尝试使用Python 37-32在我公司客户的Windows Server 2016 Build 14393计算机上导入ocrmypdf。当我在Jupyter笔记本中导入库时,它无法使用ctypes.utility.find_library()定位leptonica

Ocrmypdf是Linux开发的Python 3包。根据文档(),它不支持Windows。建议的解决方法是docker容器和Linux的Windows子系统

我宁愿不使用docker容器,因为我和我的同事都不是很有经验。我无法使用wsl,因为它不适用于我构建的Windows Server 2016(请参阅疑难解答小节:)

此讨论()说明,通过将环境路径变量编辑为包含它的文件夹,可以将ctypes.utility.find_库指向所需的库文件。很方便,Tesseract OCR的windows下载包括liblept。编辑Path变量以指向该文件夹会是一件危险的事情吗

编辑:我尝试将路径添加到笔记本电脑环境路径上的Tesseract OCR文件夹中,并重新启动了Anaconda等。ocrmypdf仍然给出相同的错误。 仔细阅读该讨论后,我们发现find_library在Windows上的运行方式有所不同。阅读文档()时指出,“在Windows上,find_library沿着系统搜索路径搜索,并返回完整的路径名,但由于没有预定义的命名方案,像find_library(“c”)这样的调用将失败并返回None。”这是否意味着我必须硬编码一个名称才能找到库

此问题已在不同的计算机上复制,如下所示:。您可以通过在Windows计算机上运行以下代码来重现该问题

!pip安装ocrmypdf
导入ocrmypdf
上述代码的预期结果是以可用形式成功导入ocrmypdf。 上述代码的结果是:

OSError回溯(最近一次调用)
在里面
---->1导入ocrmypdf
~\AppData\Local\Continuum\anaconda3\lib\site packages\ocrmypdf\\uuuuuu init\uuuuuuuuu.py in
16#以及OCRmyPDF。如果没有,请参阅。
17
--->18来自。导入帮助程序、hocrtransform、leptonica、pdfa、pdfinfo
19从.\u版本导入程序\u名称,\u版本__
20从.api导入详细信息,配置日志记录,ocr
~\AppData\Local\Continuum\anaconda3\lib\site packages\ocrmypdf\leptonica.py in
40 logger=logging.getLogger(_名称__)
41
--->42 lept=ffi.dlopen(查找库('lept'))
43轻量级设置严重性(轻量级严重性警告)
44
OSError:无法加载库“”:错误0x57

通过更新路径,我已经能够在Windows 10上运行,并且运行良好。我使用msys2安装它,因此,路径名。更新到liblept-5.dll所在的位置

if os.name == 'nt':
    os.environ['PATH'] = os.environ.get("PATH", "") + ';C:\\msys64\\mingw64\\bin'