pytesseract识别数字换行漏识别 最优PSM模式选择咨询
适配场景的PSM选择结论
针对纯数字内容、因排版/裁剪导致数字串被意外拆分到两行、换行位置字符易漏识别的场景,优先选择PSM 11(稀疏文本识别模式),效果不稳定时可替换为PSM 12(带方向检测的稀疏文本模式)。
PSM 6的识别逻辑为默认输入是单个统一排版的连续文本块,会自动过滤判定为块外的内容,换行位置靠下的数字会被标记为噪声丢弃,这也是样例识别仅返回9804102500018、缺失末尾10的核心原因。
对应识别样例图:
修正后的识别代码
原代码中白名单配置项前缺失--前缀,会导致字符白名单规则不生效,修正后代码如下:
ocr_raw_result = pytesseract.image_to_string( image, config='--psm 11 --tessedit_char_whitelist=0123456789', lang='eng' ) final_result = beautify(image, ocr_raw_result)
准确率优化提示
切换PSM后如果仍有偶发漏识别,可搭配两个简单操作提升效果:
- 识别前用OpenCV做1-2像素的形态学闭运算,轻微连通上下行相邻数字,避免被分割为独立无关文本块
- 拿到原始识别结果后,先清空字符串内的换行符、空格,再做后续处理,避免拼接时丢字符
运行环境依赖版本
numpy == 1.22.1
opencv-python == 4.5.5.62
Pillow == 8.4.0
pytesseract == 0.3.4
内容的提问来源于stack exchange,提问作者Srwa Hariri
相关产品推荐
相关产品推荐

