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

Python中使用EasyOCR+OpenCV无法识别白底数字5的问题求助

解决EasyOCR识别白底数字5返回空列表的问题

1. 图像预处理增强对比度

EasyOCR对低对比度图像的字符定位能力有限,通过预处理强化数字与背景的差异:

import cv2
import easyocr

img = cv2.imread('test.png')
# 转换为灰度图,减少色彩干扰
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化处理,让数字与背景形成强烈对比
_, binary_img = cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY)

reader = easyocr.Reader(['en'], gpu=True)
text = reader.readtext(binary_img, allowlist='0123456789')
print(text)

如果数字是浅色(比如浅灰),可尝试反转二值化(cv2.THRESH_BINARY_INV)让数字变为黑色。

2. 调整识别参数适配小尺寸字符

若数字尺寸过小,EasyOCR会默认忽略,可通过参数调整:

  • min_size:设置最小字符尺寸,比如数字高度小于10像素时,设min_size=5(按需调整)
  • contrast_ths:降低对比度阈值,允许识别对比度稍低的字符

示例代码:

text = reader.readtext(img, allowlist='0123456789', min_size=5, contrast_ths=0.1)

3. 验证图像加载状态

确认图像路径正确,且图像未损坏:

img = cv2.imread('test.png')
if img is None:
    print("图像加载失败,请检查路径或文件完整性")
else:
    cv2.imshow('Loaded Image', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

若图像无法显示,需修正路径或更换完好的图片文件。

4. 尝试禁用GPU加速

部分环境下GPU兼容性问题会导致识别异常,切换到CPU模式测试:

reader = easyocr.Reader(['en'], gpu=False)

内容的提问来源于stack exchange,提问作者David G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:26:10