Python Tesseract OCR 没有正确检测到这两个数字
Python Tesseract OCR isn't properly detecting both numbers
This is the image I'm using。这是使用 print(pytesseract.image_to_string(img))
:
返回的输出
@& [COE] daKizz
6 Grasslands
Q Badlands
@g Swamp
VALUE: @ 7,615,; HIRE)
我试过使用配置的第二个参数(从 psm 0 - 13 和“数字”),但没有太大区别。我正在考虑研究训练 tesseract 来识别图像中的数字类型,但我希望还有其他选择。
我也试过清理图片,但我得到了相同的输出
我该如何解决这个问题?
我猜你漏掉了图像处理部分。
来自文档“Improving the quality of the output" you may be interested in Image Processing 部分。
达到所需数量的一种方法是 inRange thresholding
要应用in-range,我们首先需要在hsv色彩空间中转换图像。因为我们想要像素范围之间的图像。
结果将是:
现在,如果您使用“数字”选项阅读它:
53.8.
53.8.
453.3.
7.615.725.834
- 一个可能的问题是:为什么是 inRange 阈值?
好吧,如果您尝试使用其他方法(简单或自适应),您会发现 inRange 对于给定的输入图像更准确。
- 另一个可能的问题是:我们可以将
cv2.inRange
方法的值用于其他图像吗?
您可能得不到想要的结果。对于其他图像,您需要找到其他范围值。
代码:
import cv2
import pytesseract
import numpy as np
bgr_image = cv2.imread("vNYcf.jpg")
hsv_image = cv2.cvtColor(bgr_image, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv_image, np.array([0, 180, 218]), np.array([60, 255, 255]))
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 3))
dilate = cv2.dilate(mask, kernel, iterations=1)
thresh = 255 - cv2.bitwise_and(dilate, mask)
text = pytesseract.image_to_string(thresh, config="--psm 6 digits")
print(text)
This is the image I'm using。这是使用 print(pytesseract.image_to_string(img))
:
@& [COE] daKizz
6 Grasslands
Q Badlands
@g Swamp
VALUE: @ 7,615,; HIRE)
我试过使用配置的第二个参数(从 psm 0 - 13 和“数字”),但没有太大区别。我正在考虑研究训练 tesseract 来识别图像中的数字类型,但我希望还有其他选择。
我也试过清理图片,但我得到了相同的输出
我该如何解决这个问题?
我猜你漏掉了图像处理部分。
来自文档“Improving the quality of the output" you may be interested in Image Processing 部分。
达到所需数量的一种方法是 inRange thresholding
要应用in-range,我们首先需要在hsv色彩空间中转换图像。因为我们想要像素范围之间的图像。
结果将是:
现在,如果您使用“数字”选项阅读它:
53.8.
53.8.
453.3.
7.615.725.834
- 一个可能的问题是:为什么是 inRange 阈值?
好吧,如果您尝试使用其他方法(简单或自适应),您会发现 inRange 对于给定的输入图像更准确。
- 另一个可能的问题是:我们可以将
cv2.inRange
方法的值用于其他图像吗?
您可能得不到想要的结果。对于其他图像,您需要找到其他范围值。
代码:
import cv2
import pytesseract
import numpy as np
bgr_image = cv2.imread("vNYcf.jpg")
hsv_image = cv2.cvtColor(bgr_image, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv_image, np.array([0, 180, 218]), np.array([60, 255, 255]))
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 3))
dilate = cv2.dilate(mask, kernel, iterations=1)
thresh = 255 - cv2.bitwise_and(dilate, mask)
text = pytesseract.image_to_string(thresh, config="--psm 6 digits")
print(text)