如何禁止Tesseract自动选择检测角度 仅识别垂直对齐文本
禁止Tesseract自动选择识别朝向的实现方法
问题背景
存在包含两种不同朝向文本的图像:
目标是仅识别图中垂直对齐的文本,但即便提前对图像做旋转处理,Tesseract默认会自动选择识别效果最优的朝向输出结果,无法按预设旋转后的方向识别垂直文本。
原有实现代码:
img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE) text = pytesseract.image_to_string(img)
解决方法
Tesseract默认开启OSD(页面方向与脚本检测)和自动旋转逻辑,只要在调用识别接口时传入自定义配置,关闭相关自动检测逻辑即可强制按输入图像的当前朝向识别:
- 核心是通过配置项禁止自动旋转,同时彻底关闭方向检测模块,不要使用默认的全自动页面分割模式(默认
--psm 3会触发自动方向判断)。 - 修改后的可运行代码:
img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE) # 自定义识别配置:关闭OSD检测、禁止自动旋转、设置页面分割模式为单一文本块 rec_config = r'--no-osd -c tessedit_do_not_rotate=1 --psm 6' text = pytesseract.image_to_string(img, config=rec_config)
参数调整说明
- 如果垂直文本是零散分布在图中而非整块文本,可以把
--psm 6替换为--psm 11(稀疏文本模式,无固定顺序识别所有文本),根据实际识别效果选择对应PSM模式即可,只要不使用默认的--psm 3全自动模式就不会触发自动朝向选择。 - 若使用的是旧版本Tesseract,不支持
tessedit_do_not_rotate参数,仅保留--no-osd+固定非自动类PSM模式的配置,也能实现禁止自动选朝向的效果。
内容的提问来源于stack exchange,提问作者Kilsicles
相关产品推荐
相关产品推荐

