Я написал функцию, которая считывает изображение из буфера обмена, отснятое в виде скриншота, и затем передает эти данные в механизм распознавания. Я борюсь с передачей данных. Код приведен ниже.
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 могут быть проигнорированы.