Есть ли способ использовать mss и pytesseract без сохранения и открытия? - PullRequest
0 голосов
/ 29 мая 2018

Нужно использовать mss без сохранения и открытия изображений, чтобы «оптимизировать» эту задачу, вот мой код и извините, мой плохой английский.

from PIL import Image
import pytesseract
import mss
import mss.tools

with mss.mss() as sct:

    monitor = {'top': 171, 'left': 1090, 'width': 40, 'height': 17}
    output = 'capture.png'.format(**monitor)

    sct_img = sct.grab(monitor)

    mss.tools.to_png(sct_img.rgb, sct_img.size, output=output)

    text = pytesseract.image_to_string(Image.open('capture.png'))

    print(text)

1 Ответ

0 голосов
/ 29 мая 2018

Вы не возражаете против использования Numpy?

import mss
import numpy
import pytesseract


monitor = {'top': 171, 'left': 1090, 'width': 40, 'height': 17}
with mss.mss() as sct:
    im = numpy.array(sct.grab(monitor), dtype=numpy.uint8)
    im = numpy.flip(im[:, :, :3], 2)  # BGRA -> RGB conversion
    text = pytesseract.image_to_string(im)
    print(text)

Простое сравнение времени одного выстрела дает мне:

MSS.tools + PIL: 0.00988 s
MSS + Numpy    : 0.00222 s
...