tesserocr中LSTM_ONLY搭配OSD_ONLY调用方向检测接口崩溃原因
tesserocr中OEM.LSTM_ONLY搭配PSM.OSD_ONLY调用方向检测接口崩溃问题解析
问题现象
使用tesserocr库,以oem=OEM.LSTM_ONLY和psm=PSM.OSD_ONLY初始化PyTessBaseAPI后,调用DetectOrientationScript或DetectOS接口时,程序触发致命Python错误(Aborted);在主函数运行时出现STATUS_STACK_BUFFER_OVERRUN错误(退出码-1073740791)。
环境配置
- Tesseract 5.3.4
- tessdata 4.1.0
- Python 3.9.19
- tesserocr来自tesserocr-windows_build
已验证测试项
- 仅用
OEM.LSTM_ONLY初始化API并调用GetUTF8Text正常,说明tessdata路径及语言包兼容LSTM模式; - 用
oem=OEM.TESSERACT_LSTM_COMBINED搭配psm=PSM.OSD_ONLY调用DetectOS正常。
问题解答
1. 是否为LSTM_ONLY与OSD_ONLY模式不兼容导致崩溃?
是的,崩溃确实由这两个模式的兼容性问题引发。Tesseract的OSD(方向与脚本检测)模块依赖传统Tesseract引擎的底层组件,当仅启用LSTM引擎(OEM.LSTM_ONLY)时,OSD模块所需的依赖未被初始化,进而触发内存访问错误或栈溢出,表现为你遇到的崩溃现象。
2. 关于PyTessBaseAPI hover提示与文档不符的问题
PyTessBaseAPI的IDE hover提示存在误导性,属于tesserocr绑定层的已知问题。部分参数组合的兼容性未在提示中明确标注,建议以Tesseract官方文档的参数组合说明为准,不要仅依赖hover提示。
解决方案
- 若需进行方向和脚本检测,使用
OEM.TESSERACT_LSTM_COMBINED搭配PSM.OSD_ONLY,这是经过验证的稳定组合; - 若仅需文本识别,单独使用
OEM.LSTM_ONLY即可正常工作。
内容的提问来源于stack exchange,提问作者TripleQuiz
相关产品推荐
相关产品推荐

