截图并对其进行OCR识别

3 投票
1 回答
11978 浏览
提问于 2025-04-17 12:47

我知道关于Python的OCR(光学字符识别)问题已经讨论过很多次了。

不过我没找到什么能帮到我的,除了这个问题:Python Tesseract OCR问题

但这个并没有解决我的问题。

我需要写一个小脚本,用来捕捉一个打开的窗口里的文字(比如文本编辑器)。

所以这个脚本应该:

  1. 先截个屏
  2. 找到文本编辑器窗口的位置,然后从截图中裁剪出这一部分(我不知道这一步是否必要)
  3. 把裁剪后的图像转换成灰度图,然后传给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]

撰写回答