【CnOCR】解决“ImportError: DLL load failed while importing onnxruntime_pybind11_state: 动态链接库(DLL)初始化例程失”
摘要:当运行Python OCR程序时出现"ImportError: DLL加载失败"错误,主要原因是onnxruntime依赖的Visual C++运行库缺失或不兼容。解决方法包括:1)安装对应版本的Microsoft Visual C++ Redistributable;2)确认使用64位Python和onnxruntime;3)重装onnxruntime库;4)重启电脑。
解决报错:
修复报错:(.venv) PS H:\Wecho\WitOCR> & h:/Wecho/WitOCR/.venv/Scripts/python.exe h:/Wecho/WitOCR/main.py
Traceback (most recent call last):
File "h:\Wecho\WitOCR\main.py", line 58, in
<module>
rename_invoice_image(image_path,prefix)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
File "h:\Wecho\WitOCR\main.py", line 30, in
rename_invoice_image
ocr = CnOcr()
File "H:\Wecho\WitOCR\.venv\Lib\site-packages\cnocr\cn_ocr.py", line 156, in __init__
self.rec_model = rec_cls(
~~~~~~~^
model_name=rec_model_name,
^^^^^^^^^^^^^^^^^^^^^^^^^^
...<6 lines>...
**rec_more_configs,
^^^^^^^^^^^^^^^^^^^
)
^
File "H:\Wecho\WitOCR\.venv\Lib\site-packages\cnocr\recognizer.py", line 144, in __init__
self._model = self._get_model(
~~~~~~~~~~~~~~~^
context, ort_providers=kwargs.get('ort_providers')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "H:\Wecho\WitOCR\.venv\Lib\site-packages\cnocr\recognizer.py", line 201, in _get_model
import onnxruntime as ort
File "H:\Wecho\WitOCR\.venv\Lib\site-packages\onnxruntime\__init__.py", line 61, in <module>
raise import_capi_exception
File "H:\Wecho\WitOCR\.venv\Lib\site-packages\onnxruntime\__init__.py", line 24, in <module>
from onnxruntime.capi._pybind_state import (
...<27 lines>...
)
File "H:\Wecho\WitOCR\.venv\Lib\site-packages\onnxruntime\capi\_pybind_state.py", line 32, in <module>
from .onnxruntime_pybind11_state import * # noqa
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ImportError: DLL load failed while importing onnxruntime_pybind11_state: 动态链接库(DLL)初始化例程失败。
该报错是 onnxruntime
的 DLL 加载失败,常见原因如下:
-
缺少 Visual C++ 运行库
本工程在实际运行当中遇到的解决办法是这个:解决方法:下载并安装 Microsoft Visual C++ Redistributable。 -
最新Microsoft Visual C++ 可再发行版本
最新版本是
v14.44.35211.0
使用以下链接为每个受支持的体系结构下载此版本:
体系结构 链接。 备注 ARM64 https://aka.ms/vs/17/release/vc_redist.arm64.exe 最新受支持 ARM64 版本的永久链接 X86 https://aka.ms/vs/17/release/vc_redist.x86.exe 最新受支持 x86 版本的永久链接 X64 https://aka.ms/vs/17/release/vc_redist.x64.exe 最新受支持 x64 版本的永久链接。 X64 可再发行程序包包含 ARM64 和 X64 二进制文件。 当 X64 可再发行程序包安装在 ARM64 设备上时,可以通过此包轻松安装所需的 Visual C++ ARM64 二进制文件。 从 my.visualstudio.com 下载其他版本,包括长期服务发布渠道 (LTSC) 版本。
其他解决方案:如果第一个方法无法解决,可以尝试其他方法:
-
Python 版本与 onnxruntime 不兼容
解决方法:确认你的 Python 是 64位,并且安装的 onnxruntime 也是 64位。可在终端输入:python -c "import struct; print(struct.calcsize('P') * 8)"
输出为 64 表示 64位。
-
onnxruntime 安装损坏或版本不对
解决方法:重新安装 onnxruntime:pip uninstall onnxruntime pip install onnxruntime -i https://pypi.tuna.tsinghua.edu.cn/simple
- 重启电脑
某些 DLL 加载问题重启后可解决。
- 重启电脑
如果以上方法仍无法解决,建议尝试用 PaddleOCR 替代 CnOcr,PaddleOCR 对环境依赖更少,且识别效果更好。
更多推荐
所有评论(0)