Сейчас я изучаю Сикули.
Я нахожу, что findText() может соответствовать только некоторой непрерывной строке. (Он не найдет ничего, если между строкой есть пробелы).
Например,
screen.find("Быстрый доступ") выведет исключение Find Failed.
Почему это происходит?
Моя версия Sikuli - 1.1.0.
OCR ужасно ненадежна. OCR может найти пробелы, а не то, что он всегда делает. Ошибка может заключаться в том, что вы не обнаруживаете пробел, или может быть, что любая из других букв не распознается правильно. Я нахожу, что я могу использовать OCR на той же странице 10 раз и придумывать 6 или 7 разных результатов. Если текст, который вы ищете, можно выбрать, вы можете получить его в буфер обмена и оценить его гораздо эффективнее оттуда (как в этом SO-ответе).
Если вы должны использовать OCR, иногда первое увеличение на нужном тексте может помочь повысить точность. Кроме того, вы также можете найти его для 3 или 4 наиболее вероятных вариантов вашей целевой фразы.
Вы получаете FindFailed, потому что он не находит вашу точную фразу. Чтобы узнать, что находит OCR, вы можете использовать:
print text() #this will print all text found in your default region (usually the entire screen)
-или-
print myRegion.text() #to print all text in a previous defined region, myRegion.
Tesseract определяет минимальный размер шрифта 20 пикселей. Типичный текст на экране составляет от 7 до 10 пикселей. Сикули должны увеличиваться в два или три раза, иначе процесс окажется "очень ненадежным".