【发布时间】:2020-11-07 06:07:06
【问题描述】:
我正在尝试从图像中读取数字,但无法找到使其始终如一地工作的方法(并非所有图像都有数字)。这些是图片:
(这里是相册的链接,以防图片失效)
这是我用来在图像上运行 tesseract 的命令:pytesseract.image_to_string(image, timeout=2, config='--psm 13 --oem 3 -c tessedit_char_whitelist=0123456789')。我尝试了多种配置,但这似乎效果最好。
就预处理而言,这是最好的:
gray = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2GRAY)
gray = cv2.bilateralFilter(gray, 11, 17, 17)
im_bw = cv2.threshold(gray, thresh, 255, cv2.THRESH_BINARY_INV)[1]
这适用于除第三张以外的所有图像。为了解决第三张图像中的线条问题,我尝试使用 cv2.Canny 和一个相当大的阈值来获取边缘,但是当将它们拉回来时,即使它得到了超过 95%每个数字的边缘,tesseract 无法正确读取它们。
我也尝试过调整图像大小,使用 cv2.morphologyEx,模糊它等。我找不到一种方法让它适用于每种情况。
谢谢。
【问题讨论】:
标签: python opencv image-processing python-tesseract