我一直在尝试使用tesseract OCR从预裁剪的图像中提取一些数字,但即使图像相当清晰,它仍然无法正常工作。我已经尝试寻找解决方案,但我在这里看到的所有其他问题都涉及裁剪或倾斜文本的问题。
以下是我的代码示例,它尝试读取图像并输出到命令行。
我在将图像转换为字符串的tesseract函数中加入了以下配置,使得一些图像有了微小的改善效果:
没有新的配置,它无法检测this 图像。现在它输出:
有什么想法是我做错了什么吗?有没有不同的方法来解决这个问题?如果不使用Tesseract,我也可以接受。
以下是我的代码示例,它尝试读取图像并输出到命令行。
#convert image to greyscale for OCR
im_g = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
#create threshold image to simplify things.
im_t = cv2.threshold(im_g, 0, 255, cv2.THRESH_OTSU | cv2.THRESH_BINARY_INV)[1]
#define kernel size
rect_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (20,20))
#Apply dilation to threshold image
im_d = cv2.dilate(im_t, rect_kernel, iterations = 1)
#Find countours
contours = cv2.findContours(im_t, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)[0]
for cnt in contours:
x,y,w,h = cv2.boundingRect(cnt)
#crop
im_c = im[y:y+h, x:x+w]
speed = pytesseract.image_to_string(im_c)
print(im_path +" : " + speed)
它的输出结果为:
frame10008.jpg : VAeVAs}
我在将图像转换为字符串的tesseract函数中加入了以下配置,使得一些图像有了微小的改善效果:
config="--psm 7"
没有新的配置,它无法检测this 图像。现在它输出:
frame100.jpg : | U |
有什么想法是我做错了什么吗?有没有不同的方法来解决这个问题?如果不使用Tesseract,我也可以接受。