Python无法从图像中读取文本 [使用Tesseract的Python OCR]。

问题描述 投票:0回答:1

我有这样一个问题,从一张图片中准确地读取两行数字(每行最多包含3位数字)。

我的Python代码在从图片中读取数据时有一个很大的问题,比如下面的图片。

enter image description hereenter image description hereenter image description here

大多数情况下,它只是在打印随机的数字。我应该怎么做才能让它正常工作?

这是我的Python代码。

from PIL import ImageGrab, Image
from datetime import datetime
from pytesseract import pytesseract
import numpy as nm


pytesseract.tesseract_cmd = 'F:\\Tesseract\\tesseract'

while True:
    screenshot = ImageGrab.grab(bbox=(515, 940, 560, 990))
    datetime = datetime.now()
    filename = 'pic_{}.{}.png'.format(datetime.strftime('%H%M_%S'), datetime.microsecond / 500000)

    gray = screenshot.convert('L')
    bw = nm.asarray(gray).copy()

    bw[bw < 160] = 0
    bw[bw >= 160] = 255

    convertedScreenshot = Image.fromarray(bw)

    tesseract = pytesseract.image_to_string(convertedScreenshot, config='digits --psm 6')

    convertedScreenshot.save(filename)

    print(tesseract)

图片必须是黑底白字或者白底黑字。

之后保存图片也很重要。

python python-3.x ocr tesseract python-tesseract
1个回答
0
投票

Tesseract在白底黑字的图片上效果最好。在使用 tesseract 之前,通过添加以下一行来反转图像。

 convertedScreenshot = 255 - convertedScreenshot
© www.soinside.com 2019 - 2024. All rights reserved.