关于Tesseract 4.0中LSTM神经网络适用参数及参数范围的问询
你提到的这个问题确实挺常见的——Tesseract 4.0里传统OCR引擎和LSTM引擎的参数兼容性差异很大,尤其是你试过的tessedit_char_whitelist和tessedit_char_blacklist,在LSTM模式(不管是OEM_LSTM_ONLY还是默认的混合模式OEM_DEFAULT)下确实会被直接忽略,因为这俩是专门给传统引擎设计的。
下面给你梳理清楚LSTM适用的参数,以及怎么区分两种引擎的参数范围:
Tesseract 4.0 LSTM神经网络专属/兼容参数说明
一、先解决你的核心疑问:字符黑白名单的替代方案
要在LSTM模式下限制识别的字符集,得用LSTM专属的黑白名单参数:
lstm_char_whitelist:和传统的tessedit_char_whitelist功能一致,但只对LSTM引擎生效lstm_char_blacklist:替代tessedit_char_blacklist,用于排除特定字符
比如你要让LSTM只识别数字,命令行里就这么写:
tesseract input.png output --oem 1 -c lstm_char_whitelist=0123456789
(--oem 1指定用纯LSTM引擎)
二、常用的LSTM专属参数
除了字符约束,这些参数是专门针对LSTM设计的:
lstm_choice_mode:控制LSTM的候选字符选择逻辑,比如设为2会优先按置信度排序,设为1会结合字典辅助识别lstm_batch_size:调整批量处理的字符数量,数值越大识别速度越快,但内存占用也越高load_system_dawg/load_freq_dawg:LSTM默认不加载字典(因为它依赖上下文建模而非字典匹配),如果需要字典辅助可以开启这两个参数min_characters_to_try/max_characters_to_try:限制LSTM尝试识别的文本长度范围,适合短文本(比如验证码)场景
三、怎么区分参数属于传统引擎还是LSTM?
Tesseract的参数命名有很明确的规律:
- 所有**前缀带
lstm_**的参数,都是LSTM专属的,只在OEM_LSTM_ONLY或OEM_DEFAULT模式下生效 - 不带
lstm_的传统参数,大部分只在OEM_TESSERACT_ONLY模式下有用,少数通用参数(比如页面分割模式tessedit_pageseg_mode、图像反转tessedit_do_invert)两种引擎都支持
如果想要完整的参数列表,直接在命令行运行:
tesseract --print-parameters
然后筛选带lstm_的条目,就是所有LSTM相关的参数了。
内容的提问来源于stack exchange,提问作者Fabian
相关产品推荐
相关产品推荐

