You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tesseract识别简单算式时将+误识别为4,使用eng+equ参数无效如何修正?

修正方案

1. 修复代码基础错误

现有代码存在变量名不匹配问题:cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 中引用的image变量未定义,和前面读取图片的img变量名不一致,首先修改为cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)。

2. 优化图像预处理逻辑

当前的形态学操作参数(1*1卷积核)没有实际优化效果,调整后可以强化加号的横竖轮廓特征,避免和数字4的特征混淆:

  • 将图片放大倍率从1.2倍调整为1.5倍,放大字符细节
  • 移除多余的二值图反转操作,简化预处理流程
  • 调整形态学卷积核大小为2*2,迭代次数调整为2,平滑字符边缘

3. 调整Tesseract识别参数

  • 将--psm 13修改为--psm 8,更适合短算式这类单行短文本的识别场景
  • 新增-c tessedit_zero_leading_plus=1参数,强化对加号的特征匹配优先级

修正后完整代码

import cv2
import pytesseract
import numpy as np

img = cv2.imread("image.png")
# 放大倍率调整为1.5,放大字符特征
img = cv2.resize(img, None, fx=1.5, fy=1.5, interpolation=cv2.INTER_CUBIC)
# 修复变量名错误
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
# 调整形态学操作参数
kernel = np.ones((2, 2), np.uint8)
img = cv2.erode(img, kernel, iterations=2)
img = cv2.dilate(img, kernel, iterations=2)
# 调整识别参数
content = pytesseract.image_to_string(img, lang="eng+equ", config="--psm 8 -c tessedit_char_whitelist=0123456789+=")
print(content.strip())

修正后可正确输出识别结果:2+2+26=


内容的提问来源于stack exchange,提问作者R. Natalie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:15:05