tesseract4.1遇到奇怪的0xc000001d应用程序无法运行

tesseract4.1奇怪的配置问题


1、项目原来一直使用tesseract4.0,近期更新到lstm方式训练后,迭代到了tesseract4.1版本,而线上项目32位与64位必须都兼容。
在win10环境本地编译的tesseract4.1 64位dll,在测试机上调用没问题。
换到32位时,所有tesseract编译的.exe文件均产生 崩溃应用程序无法运行0xc000001d的错误。
2、因为当时在本地win10和win7系统都测试过,没出现问题。但线上测试机出现了问题。首先考虑测试机依赖缺失问题。
用dependence一一查过依赖,没有问题。

3、耗费很多时间后,最终,在tesseract 问题中得到了解答:
https://github.com/tesseract-ocr/tesseract/issues/2674
tesseract4.1遇到奇怪的0xc000001d应用程序无法运行
原因是tesseract在编译时,用到了自动优化加速选项,采用cpu的AVX2指令集加速,我们现在的cpu一般均支持AVX2,AVX指令集,但一些机器人等终端上不会用很好的cpu,缺少AVX2指令集,造成程序崩溃。
解决方法:
在tesseract源码中找到CMakeLists.txt,将以下自动优化代码注释,就不会采用AVX2指令集。这样编译的dll不会出问题。但是调用速度会慢很多。如果识别任务量不是很大,应该不影响速度。
tesseract4.1遇到奇怪的0xc000001d应用程序无法运行

把这个回答留下,能帮助到你最好啦!