我正在使用带有Python的opencv来清理图像,以便于tesseract读取。我有一个黑白图像,并且在自适应阈值处理后,它看起来不够好。有很多纸张噪音,字母也不那么干净。我该如何解决?
adaptiveThreshold方法:
cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
源:
在adaptiveThreshold之后:
我也尝试过侵蚀和扩张:
kernel = np.ones((2,2), np.uint8)
e = cv2.erode(roi_sharpen, kernel, iterations=1))
d = cv2.dilate(roi_sharpen, kernel, iterations=1))
结果:
答案 0 :(得分:2)
由于您注意到有很多噪音,因此尝试对图像进行平滑处理总是一个好主意。
例如,您可以将高斯滤镜应用于原始图像
smooth_img = cv.GaussianBlur(img, (5, 5), 0, 0)
bin_img = cv.adaptiveThreshold(smooth_img, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY, 11, 2)
我尝试了几个内核大小,似乎5乘5内核给出了这个例子的最佳结果
如果您不喜欢图片中的小点,可以进一步应用中值滤镜来移除它们
clean_img = cv.medianBlur(bin_img, 3)
你会得到
对于Tesseract也有很多参数调整,如果你没有得到满意的结果,你可能想尝试一些不同的Tesseract设置。