Сделайте снимок экрана и используйте для него OCR.

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

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

Так что следует:

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

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

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

Джорджио


person Giorgio    schedule 10.02.2012    source источник
comment
Но у вас уже есть текст! Это прямо в текстовом редакторе! С какой стати вы пошли на такие усилия, чтобы получить текст, который у вас уже есть?   -  person kindall    schedule 10.02.2012
comment
Это пример, это может быть текстовый редактор или другая программа, то есть у меня аккуратный текст.   -  person Giorgio    schedule 10.02.2012


Ответы (1)


Это, конечно, возможно, но, как правило, неразумно. Есть лучшие способы. Допустим, вы анализируете веб-страницу, вы можете либо получить текст 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. [Линукс]

person user1496777    schedule 07.08.2012
comment
Что делать, если кто-то хочет сделать снимок экрана выбранной области? Я имею в виду выделение какой-либо конкретной области щелчком и перетаскиванием курсора мыши. - person Shivam K. Thakkar; 13.04.2018
comment
Если ваша платформа поддерживает Bash, попробуйте заголовок askubuntu.com/questions/280475/ (проверено на Ubuntu и OSX, хотя временами немного глючит). Я признаю, что мне понравится сценарий Python, который я могу использовать на всех платформах (или, по крайней мере, сценарий, который в основном основан на python и просто делегирует выбор области командам, специфичным для ОС). - person hsandt; 11.12.2019