4

问题:

尝试将python-tesseract导入我的项目(OCR 功能)时出现此错误:

ImportError: DLL load failed: %1 is not a valid Win32 application.

  • 我不知道到底是什么问题
  • 我没有技能和知识来追踪这类问题的根本原因。

背景:

据我了解,tesseract 是一个 32 位应用程序。我正在运行 Windows 7、64 位和 64 位 python。其他人似乎在这些条件下运行 tesseract,但他们并不理想,可能会导致这一挑战。

堆栈跟踪

这是来自 PyCharm 的错误跟踪。如您所见,它没有指定出现问题的文件,而是说它找不到看起来像字符串格式的参数:%1

回溯(最近一次通话最后):
  文件“C:\Program Files (x86)\JetBrains\PyCharm 2.7.3\helpers\pydev\pydevd.py”,第 1481 行,在
    debugger.run(setup['file'], None, None)
  运行中的文件“C:\Program Files (x86)\JetBrains\PyCharm 2.7.3\helpers\pydev\pydevd.py”,第 1124 行
    pydev_imports.execfile(file, globals, locals) #执行脚本
  文件“C:/Dropbox/COC/automate/coc_automate/python/__init__.py”,第 7 行,在
    导入正方体
  文件“C:\Python27\lib\site-packages\tesseract.py”,第 28 行,在
    _tesseract = swig_import_helper()
  swig_import_helper 中的文件“C:\Python27\lib\site-packages\tesseract.py”,第 22 行
    _mod = imp.load_module('_tesseract', fp, 路径名, 描述)
ImportError:DLL 加载失败:%1 不是有效的 Win32 应用程序。

依赖步行者

在似乎是问题的文件上运行依赖walker:_tesseract.pyd并发现了一些看起来很奇怪的事情:

  • 它找不到 Python27.dll
    • 尽管我已经成功使用 Python 很长时间了。
    • 我确认它Python.dll位于C:\Windows\System32我的系统上
  • 该文件MSVCR90.DLL是错误的 CPU 版本。
    • 它不在“预期”区域中,例如C:\Windows\System32,而是在我已安装的利基图形库的程序文件目录中:c:\program files\graphicsmagick-1.3.18-q8\MSVCR90.DLL. 两个安装会相互混淆吗?
PYTHON27.DLL 打开文件时出错。系统找不到指定的文件 (2)。
API-MS-WIN-CORE-COM-L1-1-0.DLL 系统找不到指定的文件 (2)。   
API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL 系统找不到指定的文件 (2)。
API-MS-WIN-CORE-WINRT-L1-1-0.DLL 系统找不到指定的文件 (2)。
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL 系统找不到指定的文件 (2)。
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL 系统找不到指定的文件 (2)。
API-MS-WIN-SHCORE-SCALING-L1-1-0.DLL 系统找不到指定的文件 (2)。
DCOMP.DLL 系统找不到指定的文件 (2)。
GPSVC.DLL 系统找不到指定的文件 (2)。
IESHIMS.DLL 系统找不到指定的文件 (2)。
...
c:\program files\graphicsmagick-1.3.18-q8\MSVCR90.DLL(好像是CPU版本不对)


错误:未找到至少一个必需的隐式或转发依赖项。
错误:由于隐式依赖模块中缺少导出函数,至少一个模块具有未解析的导入。
错误:发现具有不同 CPU 类型的模块。
警告:至少没有找到一个延迟加载依赖模块。
警告:由于延迟加载依赖模块中缺少导出功能,至少有一个模块存在未解析的导入。

截屏:

在此处输入图像描述

4

1 回答 1

2

MSVCR90.DLL 作为 Visual C++ 2008 运行时的一部分提供。看来您需要在此处下载并安装运行时:http: //www.microsoft.com/en-us/download/details.aspx?id=15336

作为旁注,在 python-tesseract 页面上它说:

VS2008编译的Windows版本现已上市!

似乎有人选择编译应用程序以要求使用运行时 msvc++ 2008 运行时,而不是静态链接运行时库。您可能希望提出让他们更改它的请求,因为使用该 python 模块会在您想要运行 python 脚本的任何工作站上添加额外的要求。

于 2013-12-10T03:17:31.307 回答