下面是使用PIL ImageGrab和PyTesseract的Python 的完整攻略,同时还包含了两条示例说明。
什么是PIL ImageGrab
PIL是Python Image Library的缩写,是Python中一款常用的第三方图像处理库。PIL提供了许多图像处理的方法,包括图像缩放、旋转、转换格式等等。其中ImageGrab模块是Pillow中提供的一个从屏幕或者某个窗口截取图像的模块,它提供了一个grab函数来获取屏幕或者窗口的快照。
如何使用PIL ImageGrab
首先需要安装Pillow库,在安装完毕后我们就可以在Python中通过以下代码使用ImageGrab模块了:
from PIL import ImageGrab
# 获取整个屏幕的快照
im = ImageGrab.grab()
# 获取屏幕指定区域的快照
im = ImageGrab.grab(bbox=(10, 10, 510, 510))
# 获取某个窗口的快照
im = ImageGrab.grab(window_hwnd)
其中bbox参数是一个矩形范围,可以用(x1,y1,x2,y2)的方式来指定屏幕的位置和大小,最后通过.show()
调用show函数查看截图。如果想要使用快捷键来截屏,可以使用ImageGrab.grabclipboard()
函数,并将快照存储到系统剪贴板中,如下所示:
import time
from PIL import ImageGrab
time.sleep(5)
im = ImageGrab.grabclipboard()
im.show()
以上代码会等待5秒,然后获取剪贴板中的图像并显示到屏幕中。
什么是PyTesseract
PyTesseract是基于Tesseract-OCR的Python封装库,它能够轻松地实现图片文字识别。Tesseract-OCR是一个开源的OCR识别引擎,可以将图片转换为文字,该引擎可以支持多种语言,包括中文、英文、德语、日语等。目前,Tesseract-OCR最新的版本为v5.0.0-alpha,后续版本均使用LSTM神经网络实现,并且支持多语言。
如何使用PyTesseract
在使用PyTesseract前,需要先安装Tesseract-OCR引擎。可从以下链接下载:https://github.com/UB-Mannheim/tesseract/wiki。
在安装完毕后,通过以下代码即可使用PyTesseract进行OCR文字识别:
import pytesseract
from PIL import Image
# 打开要识别的图片
im = Image.open('test.png')
# 调用pytesseract库进行文字识别
text = pytesseract.image_to_string(im, lang='eng')
print(text)
以上代码中,我们打开了名为test.png的图片,并使用pytesseract库提供的image_to_string函数进行OCR文字识别。lang参数是支持的语言类型,默认为英语,我们也可以将其设置为其他语言。
下面,我们来看另一个示例,在读取截图之后,我们会对其进行灰度化、二值化等处理,在最后调用PyTesseract进行OCR文字识别:
import pytesseract
from PIL import Image, ImageFilter
# 获取屏幕截图
im = ImageGrab.grab(bbox=(10, 10, 510, 510)).convert('L')
# 对截图进行增强处理
im = im.filter(ImageFilter.SHARPEN)
im = im.filter(ImageFilter.MinFilter(size=3))
im = im.filter(ImageFilter.MedianFilter(size=3))
im = im.filter(ImageFilter.MaxFilter(size=3))
# 将图片二值化
threshold = 120
im = im.point(lambda x: 0 if x < threshold else 255, '1')
# 调用pytesseract进行文字识别
result = pytesseract.image_to_string(im, lang='eng')
print(result)
由此,我们就学习了如何使用PIL ImageGrab和PyTesseract实现图片截屏和OCR识别。