Сделай скриншот и используй на нем OCR - PullRequest
2 голосов
/ 10 февраля 2012

Я знаю, что вопрос распознавания текста с Python уже обсуждался много раз.Однако я не нашел ничего, что могло бы помочь мне исключить этот вопрос Python Tesseract OCR вопрос .Но это не решило мою проблему.

Мне нужно сделать небольшой скрипт для захвата текста внутри открытого окна (текстового редактора).

Так и должно быть:

  1. Сделать снимок экрана
  2. Найти положение окна текстового редактора и нарезать снимок экрана (не знаю, нужен ли этот отрывок)
  3. Преобразовать его в оттенки серого и передать в тессеракт

Я новичок в Python и не знаю, возможно ли это.

Однако, заранее спасибо за любые подсказки.

Джорджио

1 Ответ

2 голосов
/ 07 августа 2012

Это, конечно, возможно, но в целом неразумно. Есть лучшие способы. Допустим, вы анализируете веб-страницу, вы можете либо захватить текст HTML, не пропуская его через OCR, или, если вы хотите прочитать текст изображения, вы можете проанализировать HTML с помощью urllib2, выбрать изображение и просто загрузить изображение напрямую в файл. В Python есть много альтернатив HTML-парсеров, которые вы также можете использовать. Оттенки серого просто с PIL или ImageMagick. Оттуда вы можете запустить его через OCR или сделать это в скрипте с помощью оболочки Python, такой как python-tesseract.

В качестве альтернативы - если вы настаиваете на создании скриншота, вам может пригодиться что-то подобное. Я все еще считаю, что есть почти всегда лучшие способы, но это должно помочь вам начать, если вы хотите попробовать это.

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]

...