我打算在印度车牌上执行OCR。我使用了Tesseract 4.0 beta,该版本使用LSTM引擎进行OCR。尽管不能识别出正确的字符。
我在拾取图像而没有模糊时使用了cv2.Laplacian()
,并使用cv2.fastNlMeansDenoisingColored()
对图像进行了降噪。
file_path = '/home/aayush/Downloads/Vision/number_plates/'
image_path = sorted(list(paths.list_images(file_path)))
#load image
for image in image_path:
img = cv2.imread(image)
img = cv2.fastNlMeansDenoisingColored(img,None,10,10,7,21)
#test 1
#sharpen the image
kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]])
img = cv2.filter2D(img, -1, kernel)
#thresholding
ret,img_th = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
#invert image
inv_img = cv2.bitwise_not(img_th)
config = ('-l eng --oem 1 --psm 6')
#dilating image :
kernel = np.ones((2,2),np.uint8)
erosion = cv2.erode(inv_img,kernel,iterations = 1)
text = pytesseract.image_to_string(inv_img, config=config)
print(text)
cv2.putText(img,text,(20,20),0, 5e-3 * 200, (255,255,255),2)
cv2.imshow("Image:",inv_img)
if cv2.waitKey(0) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
对于预处理,我执行了以下步骤:
检测到的输出:
OL 1CT 5079
(看起来还可以)
能否请您提出其他改善图像质量(减少噪点)的预处理措施?
还可以在Tesseract中限制特殊字符吗?