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 size
和 C
参数。我的意思是此示例中提供的参数可能不适用于其他人。
来自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.
我遵循了 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 size
和 C
参数。我的意思是此示例中提供的参数可能不适用于其他人。
来自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.