截图并对其进行OCR识别
我知道关于Python的OCR(光学字符识别)问题已经讨论过很多次了。
不过我没找到什么能帮到我的,除了这个问题:Python Tesseract OCR问题。
但这个并没有解决我的问题。
我需要写一个小脚本,用来捕捉一个打开的窗口里的文字(比如文本编辑器)。
所以这个脚本应该:
- 先截个屏
- 找到文本编辑器窗口的位置,然后从截图中裁剪出这一部分(我不知道这一步是否必要)
- 把裁剪后的图像转换成灰度图,然后传给tesseract进行识别
我对Python还不是很熟悉,不知道这样做是否可行。
不过提前谢谢任何提示。
乔治
1 个回答
2
这当然是可以做到的,但一般来说,这样做不太合理。其实有更好的方法。比如说你在解析一个网页,你可以直接获取网页的HTML文本,而不需要通过光学字符识别(OCR)。如果你想读取图片中的文字,可以用urllib2解析HTML,选择图片,然后直接把图片下载到文件里。Python中有很多HTML解析器可以使用。使用PIL或ImageMagick处理灰度图像也很简单。接下来,你可以通过OCR来识别文字,或者用像python-tesseract这样的Python封装库在脚本中直接处理。
另外,如果你坚持要截屏,那你可以试试下面这个方法。我还是认为几乎总有更好的方式,但如果你想尝试,这个方法可以让你入门。
import gtk.gdk
w = gtk.gdk.get_default_root_window()
sz = w.get_size()
print "The size of the window is %d x %d" % sz
pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,sz[0],sz[1])
pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1])
if (pb != None):
pb.save("screenshot.png","png")
print "Screenshot saved to screenshot.png."
else:
print "Unable to get the screenshot."
这段内容来自于 通过Python脚本截屏。[Linux]