Как считать текст с экрана в макрос
OCR экрана внутри макроса Windows: считайте число, статус или имя из любого окна, а затем решите, что с ним делать.
Обновлено 18 сентября 2026 г. · Чтение текста с экрана входит в тариф Pro в Myna Recorder; каждая новая учётная запись может бесплатно попробовать его 7 дней.
1. Что делает read_text
Большинство программ для макросов умеют щёлкать и вводить текст, но не могут понять, что написано на экране. read_text считывает прямоугольник экрана в переменную, и затем это значение можно ввести в другом месте, сравнить или использовать в сообщении:
total = read_text(region=(820, 400, 180, 40), single_line=True)
message_box("The order total was ${total}")
2. Выберите область
Всегда передавайте region=(x, y, width, height). При чтении всего рабочего стола изображение уменьшается настолько, что обычный текст интерфейса становится нечитаемым. Область размером с нужное поле читается быстро и точно. single_line=True объединяет всё прочитанное в одну строку — то, что нужно для числа или имени. Каждое число в области может быть переменной или суммой, поэтому область может следовать за совпадением, найденным с помощью wait_for.
3. Три модуля чтения
| engine= | Что это | Тратит кредиты | Работает в экспорте |
|---|---|---|---|
| "builtin" | По умолчанию. Работает на вашем компьютере. | Нет | Да |
| "tesseract" | Второй локальный модуль чтения. Одни экраны читает лучше встроенного, другие хуже, и принимает page_mode=, чтобы управлять тем, как изображение делится на строки. Попробуйте его, когда результат близок к верному, но неточен. | Нет | Да |
| "ai" | Модель распознавания на нашем сервере — для текста, который оба локальных модуля читают неправильно. | Да | Нет |
Модуль выбирается для каждого шага отдельно, поэтому один макрос может везде использовать бесплатный модуль, а модуль на базе ИИ — только в том поле, которое действительно важно.
4. Очистка и использование результата
total = read_text(region=(820, 400, 180, 40)).to_number()
if total < 1000:
notify("Total looks low: ${total}")
Методы очищают полученный результат; чаще всего вам понадобится .to_number(). Пустая область сохраняет пустую строку, и запуск продолжается, поэтому проверяйте написанное условие и на пустом значении, и на настоящем. Панель «Переменные» во время запуска показывает все переменные в реальном времени — это самый быстрый способ увидеть, что на самом деле вернул модуль чтения.
5. Когда лучше спросить ИИ
read_text распознаёт текст. Чтобы рассуждать об экране, используйте ask_ai: «сколько строк выделено красным?», «есть ли окно с ошибкой?». Три роли: "count" возвращает число и место каждого найденного объекта, чтобы макрос мог по нему щёлкнуть; "explain" возвращает предложение для журнала или уведомления; "read" распознаёт текст выбранной вами моделью. Давайте и ему небольшую область по той же причине: модель может сосчитать объекты на всём рабочем столе, но потом не сможет указать, где они. Каждый вызов тратит кредиты, а за один запуск можно обратиться к ИИ не больше 60 раз. Подробности — в руководстве.
6. Отслеживание текста во время работы макроса
Шаг читает один раз, там, где вы его поставили. Строка наблюдения в режиме «Спросить ИИ» следит на протяжении всего запуска или сама по себе после «Начать наблюдение» и срабатывает, когда ответ появляется или исчезает. Она может показать окно, отправить сообщение в Telegram или Discord со снимком экрана или остановить макрос. Так вы узнаете о баннере «сеанс истёк» в 3 часа ночи, не добавляя ради него шаг в каждый цикл.
7. Стоимость, тарифы и экспорт
- Чтение текста с экрана и ask_ai входят в тариф Pro, к которому также прилагаются 3 000 кредитов в месяц. Два локальных модуля чтения никогда не тратят кредиты.
- engine="ai", ask_ai и строки наблюдения с ИИ тратят кредиты и блокируют экспорт в программу. Макрос, который читает встроенным модулем или Tesseract, экспортируется без проблем, и модуль чтения оказывается внутри файла.
- Тарифы и пакеты кредитов — на странице цен.