Opencv 无法从图像中获取文本

Opencv 无法从图像中获取文本,opencv,cv2,python-tesseract,Opencv,Cv2,Python Tesseract,我正在学习AI/ML,并试图从这个示例表单中获取文本 import cv2 import pytesseract pytesseract.pytesseract.tesseract_cmd = r'C:\Users\Pranav\AppData\Local\Programs\Tesseract-OCR\tesseract.exe' image = cv2.imread('image2.png') gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) b

我正在学习AI/ML,并试图从这个示例表单中获取文本

import cv2
import pytesseract

pytesseract.pytesseract.tesseract_cmd = r'C:\Users\Pranav\AppData\Local\Programs\Tesseract-OCR\tesseract.exe'

image = cv2.imread('image2.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (3,3), 0)

x,y,w,h = 393, 531, 837, 80
firstROI = blur[y:y+h,x:x+w]
firstname = pytesseract.image_to_string(firstROI, lang='eng', config='--psm 6')
print(firstname)
firstname = re.sub(r'[^\w]', '', firstname)

cv2.imshow('image', firstROI)
cv2.waitKey()
cv2.destroyAllWindows()
使用上面的代码,我可以在白色背景下获得正常打印文本,但无法从灰色背景框中获得文本。例如,名字框的实际值是“Andrew”,但我只得到“oe”

firstROI显示如下:

根据Freddy的评论,我完成了这项工作并更新了以下代码,但仍然没有输出

from tesserocr import PyTessBaseAPI, PSM, OEM
api = PyTessBaseAPI(psm=PSM.AUTO_OSD, lang='eng', path=r'C:\Users\Pranav\tessdata-master')
images = ['andrew1.png', 'andrew2.png', 'test1.png']

for img in images:
    api.SetImageFile(img)
    print (api.GetUTF8Text())
    print (api.AllWordConfidences())
这些是示例图像


它只能读取第三个图像输出的文本(人口统计)。请帮助我如何阅读灰色背景图像中的文本(Andrew)。

为我提供了答案。它可以消除背景图像中的噪声。

设置适当的页面分割模式将有助于检测字符@FreddyDaniel仍然没有阅读课文,我再次编辑了问题请阅读