Bug: 不能识别单字的图像
问题描述 / Problem Description
本问题来自RapidVideOCR Discussions #61 对于电影字幕中,存在一帧图像仅有单字的情况。例如下图:
rec.png
rapidocr_onnxruntime==1.3.24版本中,可以检测到该文字,但是识别阶段未能成功识别
运行环境 / Runtime Environment
-
rapidocr_onnxruntime: 1.3.24 -
OS: macOS 14.5 - python: 3.10
复现代码 / Reproduction Code
from rapidocr_onnxruntime import RapidOCR
engine = RapidOCR()
image_path = "rec.png"
with open(image_path, "rb") as f:
img = f.read()
result, elapse_list = engine(img)
print(result)
# 输出结果
# [['', 0.0]]
可能解决方案 / Possible solutions
尝试将检测到的文字左右扩增,有的可以识别,有的反而识别错误了,需要多造一些测试集来评估该策略有效性。示例如下:
t.png
from rapidocr_onnxruntime import RapidOCR
engine = RapidOCR()
image_path = "t.png"
with open(image_path, "rb") as f:
img = f.read()
result, elapse_list = engine(img, use_cls=False, use_det=False, use_rec=True)
print(result)
# 输出
# [['嗯', 0.4284239]]
也不行
我遇到问题测试了下,文字(宽或高)在图像中占比过高时就会这样,主要是v5模型会直接错误,不过v4也可能会出现重复识别的情况,将边缘扩展一下减少占比就能正常识别了,不能精确裁剪识别
用v5会错误
用v4会出现重复识别
v5确实不太能用
@SwakinX 这种单行的文字,只用rec,不要用det和cls,应该就没问题了
@SWHL 确实可行,之前尝试单模块时是多行文本,效果并不好就没考虑了,谢谢提醒
@kssion 请给出具体复现代码和原图。从你这结果来看,似乎用的不是现在OCR模型
主要在V5中出现,V4没问题,网页上跟我代码的结果还不太一样
复现代码:
import cv2
from rapidocr import RapidOCR, OCRVersion
engine = RapidOCR(params={
'Det.ocr_version': OCRVersion.PPOCRV5,
'Rec.ocr_version': OCRVersion.PPOCRV5,
})
im = cv2.imread('1751977986623333800_0.jpg')
r = engine(im)
vis = r.vis()
cv2.imshow('image', vis)
cv2.waitKey(0)
cv2.destroyAllWindows()
原图:
代码识别结果
网页识别结果
@kssion 你从网页上导出当前配置,用在离线代码上,看看呢。网页的推理代码也是开源的。我猜测不一样的原因可能是图像读取方式导致的。例如用Pillow读和Opencv读,会有些许差异。
@SWHL 我从网页上导出了配置,然后几种读取图片都试了,结果没有任何区别。
这是我的代码
import cv2
from PIL import Image
from rapidocr import RapidOCR
engine = RapidOCR(config_path="config.yaml")
# im = cv2.imread('1751977986623333800_0.jpg')
# im = Image.open('1751977986623333800_0.jpg')
r = engine('1751977986623333800_0.jpg')
vis = r.vis()
cv2.imshow('image', vis)
cv2.waitKey(0)
cv2.destroyAllWindows()
我原来在M1测试的,然后又在Linux上测试了是否跟硬件和系统有关,但是结果都一样。
@SWHL 我找到原因了,网页输入的是RGB图像,在代码中用RGB时结果跟网页是一样的,但是还是会有字符重复的情况,图中小字部分
@kssion 我知道了,你这用的是单字模式。单字模式是根据整行文本框估计单字符宽度,计算出来了,不是太准哈。
@SWHL 没有设置单字模式,网页上没设置,代码里也没有
是这个吗?
@kssion 我在网页demo上识别是这样的:
和你贴的不太一样呀。我试试我的参数。
@SWHL 你检测用的是V4,我是都用的V5,那可能跟V5检测有关系。目前看来用V4检测V5识别比较好
嗯呢,建议仅识别用v5,其他的用v4
---- 回复的原邮件 ---- | 发件人 | @.> | | 发送日期 | 2025年07月24日 08:51 | | 收件人 | RapidAI/RapidOCR @.> | | 抄送人 | SWHL @.>, Mention @.> | | 主题 | Re: [RapidAI/RapidOCR] Bug: 不能识别单字的图像 (Issue #210) | kssion left a comment (RapidAI/RapidOCR#210)
@SWHL 你检测用的是V4,我是都用的V5,那可能跟V5检测有关系。
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>
@SWHL 好的,感谢!