解决报错:

修复报错:(.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 加载失败,常见原因如下:

  1. 缺少 Visual C++ 运行库
    本工程在实际运行当中遇到的解决办法是这个解决方法:下载并安装 Microsoft Visual C++ Redistributable

  2. 最新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) 版本。

其他解决方案:如果第一个方法无法解决,可以尝试其他方法:

  1. Python 版本与 onnxruntime 不兼容
    解决方法:确认你的 Python 是 64位,并且安装的 onnxruntime 也是 64位。可在终端输入:

    python -c "import struct; print(struct.calcsize('P') * 8)"

    输出为 64 表示 64位。

  2. onnxruntime 安装损坏或版本不对
    解决方法:重新安装 onnxruntime:

    pip uninstall onnxruntime
    pip install onnxruntime -i https://pypi.tuna.tsinghua.edu.cn/simple
    • 重启电脑
      某些 DLL 加载问题重启后可解决。

如果以上方法仍无法解决,建议尝试用 PaddleOCR 替代 CnOcr,PaddleOCR 对环境依赖更少,且识别效果更好。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐