スクリーンショットで OCR 認識を作成しようとしています。(クリックしたデスクトップの領域の) スクリーンショットを撮った後、pibxbufferに移動し、そのコンテンツはpytesseractに移動します。しかし、pixbuffer を使用した後は画質が悪くなります。つまり、歪んでいます (pixbuffer ではなく、ディレクトリに保存しようとして、調べました)。
def takeScreenshot(self, x, y, width = 150, height = 30):
self.width=width
self.height=height
window = Gdk.get_default_root_window()
#x, y, width, height = window.get_geometry()
#print("The size of the root window is {} x {}".format(width, height))
# get_from_drawable() was deprecated. See:
# https://developer.gnome.org/gtk3/stable/ch24s02.html#id-1.6.3.4.7
pixbufObj = Gdk.pixbuf_get_from_window(window, x, y, width, height)
height = pixbufObj.get_height()
width = pixbufObj.get_width()
image = Image.frombuffer("RGB", (width, height),
pixbufObj.get_pixels(), 'raw', 'RGB', 0, 1)
image = image.resize((width*20,height*20), Image.ANTIALIAS)
#image.save("saved.png")
print(pytesseract.image_to_string(image))
print("takenScreenshot:",x,y)
画像をディレクトリに保存したところ、問題なく (品質)、認識も良好でした。
なしで試してみImage.ANTIALIAS
ました-違いはありません。
(20倍拡大の目的:ディレクトリに保存された画像を認識させるコードを試してみましたが、拡大縮小せずに認識品質が悪かったです。)
問題は、画像が歪んでいることです。