Эта страница переведена с английского для удобства. Английский оригинал — самая точная версия, и при расхождениях действует именно он.

Как считать текст с экрана в макрос

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, экспортируется без проблем, и модуль чтения оказывается внутри файла.
  • Тарифы и пакеты кредитов — на странице цен.