我有一个 Python 项目,它使用 pytesserract 将 OCR 应用于图像并从中获取文本。我已经使用 pyinstaller 编译了这个项目,并且该项目在我的本地、Windows 沙箱环境和 Windows 2012 服务器计算机中运行良好,但是当我将其部署到具有相同操作系统(Windows Server 2012 R2)的生产服务器时,我在执行过程中遇到了错误OCR 过程。首先弹出一个窗口,显示 tesserrat.exe 已停止工作。然后我检查了日志,发现 1 个信息日志后面有 2 个与此问题相关的错误日志。
-信息:
故障桶,类型 0 事件名称:APPPCRASH 响应:不可用 Cab 编号:0
问题签名:P1:tesseract.exe P2:0.0.0.0 P3:639a0c83 P4: libtesseract-5.dll P5:0.0.0.0 P6:639a0c7f P7:c000001d P8:001b639f P9: P10:
附件:
这些文件可在此处获取: C:\Users\usr\AppData\Local\Microsoft\Windows\WER\ReportArchive\AppCrash_tesseract.exe_45e0684ae65db46f6f2bc3f433eb0f313d8116_60142e40_19e538bc
分析符号:重新检查解决方案:0 报告 ID:2928099
2-e2a6-11ed-812b-005056a87ce5 报告状态:2048 哈希存储桶:
-错误 1:
故障应用程序名称:tesseract.exe,版本:0.0.0.0,时间 邮票:0x639a0c83
故障模块名称:libtesseract-5.dll,版本:0.0.0.0,时间 邮票:0x639a0c7f
异常代码:0xc000001d
故障偏移:0x001b639f
故障进程 ID:0x17f8
应用程序启动时间出现故障:0x01d976b3f22cf105
故障应用程序路径:C:\Program Files (x86)\Tesseract-OCR esseract.exe
故障模块路径:C:\Program Files (x86)\Tesseract-OCR\libtesseract-5.dll
报告 ID:3012b6a3-e2a7-11ed-812b-005056a87ce5
故障包全名:
故障包相关应用程序 ID:
错误2
由于以下原因之一,Windows 无法访问该文件: 网络连接有问题,文件所在磁盘有问题 存储在该计算机上或安装在该计算机上的存储驱动程序;或者 磁盘丢失。 Windows 关闭了程序 tesseract.exe 因为 这个错误。
程序:tesseract.exe 文件:
错误值列在“附加数据”部分中。用户操作
- 再次打开文件。这种情况可能是一个临时问题,当程序再次运行时它会自行纠正。
- 如果文件仍然无法访问并且 - 在网络上,您的网络管理员应验证网络没有问题并且服务器可以 被联系。 - 它位于可移动磁盘上,例如软盘或 CD-ROM,请确认该磁盘已完全插入计算机。
- 通过运行 CHKDSK 检查并修复文件系统。要运行 CHKDSK,请单击“开始”,单击“运行”,键入 CMD,然后单击“确定”。在命令下 提示时,键入 CHKDSK /F,然后按 ENTER。
- 如果问题仍然存在,请从备份副本恢复文件。
- 确定是否可以打开同一磁盘上的其他文件。否则,磁盘可能会损坏。如果是硬盘,请联系您的 管理员或计算机硬件供应商寻求进一步帮助。
附加数据错误值:00000000 磁盘类型:0
不存在与磁盘故障相关的问题。我怀疑这可能与权限有关,所以我以管理员身份运行我的 OCR 项目,但仍然存在同样的问题。
此环境中没有互联网连接,但我在没有互联网连接的环境中尝试了该项目,以确保包不需要连接。
编辑:我已将 tesseract.exe 设置为需要由管理员运行,然后尝试以管理员身份运行我的命令,但仍然存在同样的问题。
Edit-2:我已经检查了我编译的 python 脚本 exe 是 64 位且使用 32 位正方体的可能原因,我怀疑这是否是问题所在,但我的测试之前是这样成功完成的。
Edit-3:我还检查了防病毒或防火墙日志,以确保它们都没有阻止 dll,但没有与此相关的日志。
Edit-4:我部署了更新并更改了 Tesserract-OCR 的目录并再次尝试,它仍然失败,我尝试在 D://Tesseract-OCR/ 中运行“tesseract images/eurotext.png - -l eng”它实际上有效,但当我运行应用程序时,我假设以下行失败“pytesseract.image_to_string(thresh, lang=self.lang_tesseract)”
经过长期调查,我们发现安全应用程序阻止了 tesseract 的 dll 之一。运行 tesseract.exe 时没有问题,但显然当我们将它与 pytesseract 一起使用时,这个 dll 是必需的,所以这就是问题出现的地方。