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

使用pytesseract识别图片气泡字体数字无输出的问题咨询

问题描述

我尝试使用pytesseract识别仅包含1-10气泡字体数字的图片,提取其中的数字内容。

待识别的参考图片如下:
待识别图片

我参考了一篇介绍该实现流程的文章,文中称该实现非常简单,我写的对应代码如下:

lives = pyautogui.locateOnScreen('pics/lives.png', confidence = 0.9)

ss = pyautogui.screenshot(region=(lives[0]+lives[2],lives[1],lives[2]-6,lives[3]))
ss.save('pics/tempLives.png')
img = cv2.imread('pics/tempLives.png')
cv2.imwrite('pics/testPic.png',img)

test = pytesseract.image_to_string(img)
print(test)

我通过ss.save和cv2.imwrite导出校验过,代码中读取的img变量内容和上述待识别图片完全一致。

运行代码后无法打印输出任何识别结果,我猜测气泡字体会提升识别难度,但参考文章中可以轻松识别蓝色括号字符,理论上该字体的识别难度不应过高,求可行的解决思路。

解决思路
  • 先排查环境问题:本地安装的tesseract如果版本过旧、缺失eng语言包,会直接返回空结果。先拿一张常规印刷体数字的截图跑基础识别逻辑,确认环境正常再调识别逻辑。
  • 必须加图像预处理步骤:pytesseract默认只对高对比度、无装饰的常规印刷体识别效果好,气泡字体有轮廓装饰、和背景对比度不足时直接识别必然失败。预处理流程:
    1. 将读取的图片转灰度图
    2. 做二值化处理,调整阈值把白色气泡数字和背景彻底分离,必要时加反向二值化,tesseract原生对深字浅底的识别效果远好于浅字深底,要保证处理后的图是深色字、浅色背景
    3. 用形态学开/闭运算去掉字体边缘的杂色噪点,避免装饰轮廓干扰识别
      预处理+识别的参考代码:
import cv2
import pytesseract

img = cv2.imread('pics/tempLives.png')
# 转灰度
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化,阈值根据实际截图的颜色调整,THRESH_BINARY_INV用来反转颜色适配tesseract识别习惯
thresh = cv2.threshold(gray, 120, 255, cv2.THRESH_BINARY_INV)[1]
# 形态学运算去噪
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (2,2))
clean_img = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)

# 自定义识别配置:oem 3用默认引擎,psm 10适配单字符识别,限定只输出数字缩小匹配范围
ocr_config = r'--oem 3 --psm 10 -c tessedit_char_whitelist=0123456789'
result = pytesseract.image_to_string(clean_img, config=ocr_config).strip()
print(result)
  • 调整OCR的页面分割模式(psm)参数:默认psm参数是自动全页分割,针对截图里的小区域单数字/短数字场景,要匹配对应模式:单数字识别用--psm 10,单行连续数字用--psm 7,默认模式很容易漏判小尺寸的文本区域。同时通过tessedit_char_whitelist参数限定只识别0-9数字,大幅降低误判、空判概率。
  • 如果预处理后识别率还是达不到要求,直接用模板匹配替代OCR:你需要识别的内容只有1-10共10种固定的气泡字体样式,提前截好每个数字的标准模板图,用cv2.matchTemplate做模板匹配,置信度阈值设0.8以上即可,识别速度和准确率远高于tesseract,不会出现空识别的问题。

内容的提问来源于stack exchange,提问作者Mason Vick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:18:21