监控录像截帧OCR识别日期时间出错,求图像预处理方案
CCTV监控录像日期时间OCR识别问题及预处理需求
从CCTV监控录像中裁剪出显示日期时间的图像区域后传入OCR,但因背景差异,部分图像识别正确,部分图像中OCR算法对数字和冒号识别错误。日期时间文字始终为白色,希望通过将背景改为纯黑来提升所有图像的识别率;同时已尝试pytesseract和easyocr,easyocr表现更优,若当前思路有误,请求提供能实现正确识别的图像预处理步骤。
示例图像与对应OCR输出
- 图像1:识别正确,输出:
2023/06/30 20:19:29 - 图像2:识别错误,输出:
20223/07/01 02 00 39(将2023识别为20223,所有冒号缺失) - 图像3:识别错误,输出:
2023/07701 07:42:01(日期应为2023/07/01) - 图像4:识别错误,输出:
2023/06/30 Z*ai :55(时间完全识别错误)
已使用的代码
import pytesseract import cv2 import easyocr import numpy as np class Test: def __init__(self): self.text = '' self.reader = easyocr.Reader(['en'], gpu=True) def extract_time_easyOCR(self,croppedimagepath): img = cv2.imread(croppedimagepath) grayimg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #cv2.imshow("original", grayimg) # preprocessed_image = cv2.threshold(grayimg, 127, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1] # cv2.imshow('frame', preprocessed_image); cv2.waitKey(0) # threshold = 0.10 * np.max(grayimg) # grayimg[grayimg <= threshold] = 0 # cv2.imshow('frame', grayimg); cv2.waitKey(0) result = self.reader.readtext(grayimg) for (bbox, text, prob) in result: self.text+=text + ' ' print("resultfromEasyOCR",self.text) self.text = "" return self.text def extract_time_Tessaract(self,croppedimagepath): print("Inside Tessaract") image = cv2.imread("videos\Cropped_Image.jpg") image_RGB = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) preprocessed_image = cv2.threshold(image_RGB, 127, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1] print("resultfromTessaract",pytesseract.image_to_string(preprocessed_image))
核心疑问
- 能否通过将背景改为纯黑来确保所有图像的日期时间正确识别?
- 若上述思路存在问题,请求提供有效的图像预处理步骤以实现准确识别。
内容的提问来源于stack exchange,提问作者Sukumar Reddy
相关产品推荐
相关产品推荐

