Считать изображение буфера обмена в функцию для распознавания текста - PullRequest
0 голосов
/ 14 января 2020

Я написал функцию, которая считывает изображение из буфера обмена, отснятое в виде скриншота, и затем передает эти данные в механизм распознавания. Я борюсь с передачей данных. Код приведен ниже.

from tkinter import messagebox
from PIL import Image
import pytesseract

import numpy as np

img = Image.grabclipboard() #this part needs modification as grabclipboard works in Windows and not in Linux.

if isinstance(img, Image.Image):
    rd = pytesseract.image_to_string(np.array(img), lang='eng') \
        .replace('-\n', '').replace('\n', ' ').encode("ascii", 'ignore')
    print(rd)
else:
    messagebox.showinfo(title="TASK DONE", message="No Image on Clipboard Found.")

Если вы видите код выше, то строка if isinstance(img, Image.Image): не может захватить данные буфера обмена, и l oop переходит на else messagebox. Я хочу, чтобы содержимое буфера обмена читалось в используемом здесь механизме OCR.

Я обнаружил, что pyscreenshot может быть полезным в этом коде. Вот пример кода.

import pyscreenshot as ImageGrab    
def grabocr(self, x, y, w, h):
            im = ImageGrab.grab(bbox=(x, y, x+w, y+h))
            pix = im.load()
            for x in range(im.size[0]):
                for y in range(im.size[1]):
                    if pix[x, y] != (254, 254, 254):
                        pix[x, y] = 0;
            return pytesseract.image_to_string(im)

Может кто-нибудь улучшить мой код на основе этого? Все, что мне нужно, это сделать снимок экрана и отправить его на мои шаги OCR. Все последующие обсуждения Gtk могут быть проигнорированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...