← Hutsix home

Run an action when text appears on screen

Building an OCR text trigger on Windows, and the settings that decide whether it is reliable

What you will build: a binding that reads a fixed screen area, looks for the text you specify in what it recognises, and runs a keyboard or mouse action when that text is present. A trigger needs both a query text and a captured area before it can be saved — neither alone is enough.

Steps

  1. Name the trigger and enter the query text. Use short, distinctive text that appears verbatim. "Ready" is a better query than "The raid is ready to begin" — OCR output varies, and matching is containment against what was recognised.
  2. Capture the area around that text. Tight is better. Extra UI clutter in the capture is the most common cause of false positives, because everything in the box is recognised.
  3. Set language codes and minimum confidence. Comma-separated codes, default en. Confidence starts at 0.60 — lower it slightly if text is being missed, raise it if it fires on lookalikes.
  4. Adjust preprocessing only if needed. Grayscale is on by default and usually helps. Upscale defaults to 1.0; raising it helps small or thin text.
  5. Save, test in Action Monitor, then calibrate. Auto-calibration can suggest a better confidence and upscale value, and refine the area or query behaviour when manual settings are unstable.

The settings that actually matter

SettingDefaultWhen to change it
Query text—Short and distinctive. Matching is containment in the recognised text, not an exact line match
Capture area—Tighten whenever you see false positives
Min confidence0.60Lower for misses, raise for false positives
LanguagesenComma-separated codes when the UI is not English
Case sensitiveoffTurn on only when case distinguishes the match
Use GPUon when availableLeave on; CPU fallback works but is slower
GrayscaleonLeave on unless colour carries meaning
Upscale1.0Raise for small text

When it misbehaves

SymptomUsual cause and fix
No OCR output at allArea too small, text too small, or the text is not actually readable on screen. Enlarge the area slightly, raise upscale, and check the text renders legibly.
Misses too oftenConfidence too high or the area is too tight around text that shifts position. Lower confidence slightly and give the area a little margin.
False positivesConfidence too low, or unrelated text inside the capture. Raise confidence and tighten the area.
Fires repeatedlyCooldown on the binding is too low. The trigger stays true while the text is on screen, so the cooldown is what prevents repeats.
OCR is the slowest trigger type. Text recognition costs far more than a pixel comparison, which is why unchanged frames are reused instead of re-read — an identical frame costs about a millisecond rather than tens of milliseconds. If a pixel or template trigger can express your condition, it will be cheaper and faster than OCR.

FAQ

Does the query have to match exactly?

No. Matching checks whether your query text appears in the recognised output, so a short distinctive phrase works better than a full sentence. Turn on case sensitivity only when it matters.

Can it read text in more than one language?

Yes — languages are a comma-separated list of codes. More languages cost more per check, so list only what the UI actually shows.

Why is OCR slower than a pixel trigger?

Recognition is a model inference, not a colour comparison. It is still fast enough for most UI states, but a pixel or template trigger is the cheaper choice whenever it can describe the same condition.

Will it read text in an image or canvas?

It reads rendered pixels, so if the text is visible on screen it can generally be recognised — subject to size, contrast and the confidence threshold.

Try it

Free 7-day trial, no card required. Capture one label, set the query text, and watch the binding in Action Monitor before building on it.

⬇ Download Free Trial Buy License — $49