pytesseract 无法读取文本

pytesseract can't read text

我遵循了 pytesseract 教程并尝试了不同的配置,但我无法让 pytesseract 读取基本的停车标志图像

这是我的代码

import cv2
import pytesseract
from PIL import Image


img = cv2.imread('gamepictures/STOPSIGN.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
print(pytesseract.image_to_string(img))

img = Image.open('/home/fook/Documents/pygame/opencv/gamepictures/STOPSIGN.jpg')
rgbimg = Image.new('RGBA', img.size)
rgbimg.paste(img)
text = pytesseract.image_to_string(rgbimg)
print(text)

def print_text():
    print(pytesseract.image_to_string(Image.open('/home/fook/Documents/pygame/opencv/gamepictures/STOPSIGN.jpg')))


print_text()

我的输出是三个音符。当我将图像中的配置从 1 更改为字符串时,我有时会出现 @:

我的形象是 stopsign

您可以使用 adaptive thresholding.

自适应阈值确定基于小区域的阈值。因此,对于具有不同光照的图像,效果会更好。

如果应用自适应阈值:

如果您使用 psm --6 阅读:

STOP)

对于这个例子,输入图像的尺寸超过了我的屏幕尺寸,因此我调整了图像的大小。代码是:

import cv2
import pytesseract

img = cv2.imread("GO8nU.jpg")  # Load the image
img = cv2.resize(img, (0, 0), fx=0.25, fy=0.25)
img = cv2.cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # convert to grey
img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 3, 15)
txt = pytesseract.image_to_string(img, config='--psm 6')
print(txt)
cv2.imshow("", img)
cv2.waitKey(0)

您需要手动测试 block sizeC 参数。我的意思是此示例中提供的参数可能不适用于其他人。

来自source

The blockSize determines the size of the neighbourhood area and C is a constant that is subtracted from the mean or weighted sum of the neighbourhood pixels.