使用EasyOCR与Tesseract识别图片日期时间的问题求助
日期时间OCR识别问题求助
问题说明
我需要识别图片中的日期时间,目标结果为2023/05/16 06:40:50,但使用EasyOCR和Tesseract均识别错误:
- EasyOCR识别结果:
2023/057716 06:40850 - Tesseract识别结果:
2623/05/16 66:46:58
测试代码
import pytesseract import cv2 import easyocr class Test: def __init__(self): self.text = '' self.reader = easyocr.Reader(['en'], gpu=True) def extract_time_easyOCR(self): print("Inside easyOCR") img = cv2.imread("videos\Cropped_Image.jpg") result = self.reader.readtext(img) for (bbox, text, prob) in result: self.text+=text + ' ' print("resultfromEasyOCR",self.text) return self.text def extract_time_Tessaract(self): print("Inside Tessaract") image = cv2.imread("videos\Cropped_Image.jpg") image_RGB = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) print("resultfromTessaract",pytesseract.image_to_string(image_RGB,config="--psm 6")) easyOCRTEST = Test() easyOCRTEST.extract_time_easyOCR() easyOCRTEST.extract_time_Tessaract()
程序输出
Inside easyOCR resultfromEasyOCR cropped 2023/057716 06:40850 Inside Tessaract resultfromTessaract 2623/05/16 66:46:58
求助内容
请问如何实现正确识别?是否可以通过训练自定义模型解决,或者有其他可行的识别方法?
解决建议
1. 图像预处理优化
OCR识别错误大多和图像质量相关,可尝试以下预处理步骤提升准确率:
- 灰度化:将彩色图像转为灰度图,减少色彩干扰:
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) - 二值化:通过阈值处理让文字与背景分离,增强对比度:
_, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) - 去噪处理:使用中值滤波去除图像噪点:
denoised = cv2.medianBlur(thresh, 3) - 形态学修复:用膨胀操作修复文字边缘的破损:
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (2,2)) repaired = cv2.dilate(denoised, kernel, iterations=1)
2. OCR工具参数调整
- Tesseract:
- 调整页面分割模式:如果目标是单行文本,改用
--psm 7;如果是单个时间字符串,用--psm 8 - 添加字符白名单,限制识别范围为数字、
/和::pytesseract.image_to_string(image_RGB, config="--psm 7 -c tessedit_char_whitelist=0123456789/:")
- 调整页面分割模式:如果目标是单行文本,改用
- EasyOCR:
- 指定允许识别的字符列表,过滤无关字符:
result = self.reader.readtext(img, allowlist='0123456789/:') - 调整置信度阈值,过滤低置信度结果:
result = self.reader.readtext(img, allowlist='0123456789/:', detail=0, min_size=10)
- 指定允许识别的字符列表,过滤无关字符:
3. 自定义模型训练
如果上述方法无法满足需求,可以针对该场景训练自定义模型:
- Tesseract:使用Tesstrain工具,制作包含目标日期时间样式的数据集,训练自定义语言模型,适配特定字体、排版的文本
- EasyOCR:基于PyTorch框架,用自己收集的日期时间图像数据集微调预训练模型,提升特定场景的识别精度
内容的提问来源于stack exchange,提问作者Sukumar Reddy
相关产品推荐
相关产品推荐

