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)