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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:15:01