这是我的图片:
这是我的代码:
import cv2
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract"
img = cv2.imread(r"C:\Users\xxx\Desktop\ImageRecognition\number.jpg")
window_name = 'Number'
cv2.namedWindow(window_name, 0)
cv2.resizeWindow(window_name, 200, 100)
cv2.imshow(window_name, img)
cv2.waitKey(0)
cv2.destroyAllWindows()
configuration = '-l eng --psm 7'
text = pytesseract.image_to_string(img, config=configuration)
print(text)
运行代码后,我得到如下视图:
但是,我从 PyCharm 打印得到的结果为:
我想知道为什么会发生这种情况,我该如何克服这个问题?我想这是由于噪音造成的。但我不知道我应该做什么。
这是一个常见问题。正如评论中向您建议的那样,设置灰度和调整大小是实现这一目标的步骤。你提到你已经测试过这个但没有效果。因此,您可以尝试不同的
Page Segmentation Modes
(--psm) 和 OCR 引擎模式 (--oem)。 PSM 7
用于将图像视为单个文本行。这实际上解决了你的问题。
import cv2
import numpy as np
import pytesseract
img = cv2.imread(r"C:\Users\s-degossondevarennes\Downloads\sound.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY_INV)
kernel = np.ones((1, 1), np.uint8)
img_dilated = cv2.dilate(thresh, kernel, iterations=1)
cv2.imshow('Processed Image', img_dilated)
cv2.waitKey(0)
cv2.destroyAllWindows()
configuration = '-l eng --psm 7'
text = pytesseract.image_to_string(img_dilated, config=configuration)
print(text)
您也可以以完全相同的方式使用
easyocr
。