【发布时间】:2021-07-24 17:17:50
【问题描述】:
几天前我开始了一个 ocr 项目。输入图像是带有白色字母的非常嘈杂的灰色图像。使用 EAST 文本检测器,可以识别文本并在周围绘制边框。 之后我裁剪矩形做一些图像处理。之后,我将处理过的部分传递给 pytesseract,但结果很糟糕。图像和源代码如下。也许有些人有更好的图像处理和/或 pytesseract 设置的好主意。
图片
Input image
Rectangles after Recognition
First part
Second part
Third part
Tesseract 结果 AY U N74 O54
图像处理源代码
kernel = cv2.getStructuringElement(cv2.MORPH_RECT , (8,8))
kernel2 = np.ones((3,3),np.uint8)
kernel3 = np.ones((5,5),np.uint8)
gray = cv2.cvtColor(cropped, cv2.COLOR_BGR2GRAY)
gray = cv2.resize(gray, None, fx=7, fy=7)
gray = cv2.GaussianBlur(gray, (5,5), 1)
#cv2.medianBlur(gray, 5)
gray = cv2.dilate(gray, kernel3, iterations = 1)
gray = cv2.erode(gray, kernel3, iterations = 1)
gray = cv2.morphologyEx(gray, cv2.MORPH_DILATE, kernel3)
gray = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
gray = cv2.bitwise_not(gray)
ts_img = Image.fromarray(gray)
txt = pytesseract.image_to_string(ts_img, config='--oem 3 --psm 12 -c tessedit_char_whitelist=12345678ABCDEFGHIJKLMNOPQRSTUVWXYZ load_system_dawg=false load_freq_dawg=false')
我尝试了其他一些 psm 设置,例如 psm 11、psm 8 和 ps6。结果不同,但也很糟糕。 我想最大的问题是与字母和数字相关的黑点,但我不知道如何去除它们。 我感谢每一个帮助:)
【问题讨论】:
-
tesseract 文档:Improving the quality of the output
-
@furas 感谢您的帮助。我已经找到了这个文档,这就是我使用扩张和侵蚀的原因。但我不知道如何正确设置参数。对我来说,找到正确的参数是某种反复试验的过程。有没有办法确定它们?
-
我不知道这个方法 - 只在
for-loop 中运行代码来测试不同的值。
标签: python opencv image-processing ocr python-tesseract