【发布时间】:2021-04-14 10:20:20
【问题描述】:
我正在尝试使用 pytesseract 来读取这样的图像:
我认为这应该很容易,但到目前为止我还不能让它工作。我尝试了不同类型的预处理,但它不起作用:
image = cv2.imread('number.png')
custom_config = r'-c tessedit_char_whitelist=0123456789 --psm 10'
text_i = pytesseract.image_to_string(img, config=custom_config)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
text_g = pytesseract.image_to_string(img, config=custom_config)
thresh = cv2.threshold(image, 50, 255, cv2.THRESH_BINARY)[1]
text_t = pytesseract.image_to_string(img, config=custom_config)
plt.axis('off')
plt.imshow(image)
plt.show()
print("Recognized number: ", text_i)
plt.axis('off')
plt.imshow(gray)
plt.show()
print("Recognized number: ", text_g)
plt.axis('off')
plt.imshow(thresh)
plt.show()
print("Recognized number: ", text_t)
在所有情况下,返回的字符串都是空的。有没有人有想法,该怎么做?
【问题讨论】:
-
将这些“简单”数字称为有点过于乐观了,显然 Tesseract 并不认为它们简单——简单的数字将是完整的字形而不是模糊的东西。您可以尝试使用扩张/侵蚀来让点连接起来吗?确保以白色背景上的黑色结束。
-
你可以尝试寻找圆,并用线连接它们的中心。
-
感谢@barny 的建议,它帮助我找到了解决方案。
标签: python opencv ocr cv2 python-tesseract