OCR Text Recognition
Text Recognition (Clipboard · ⌘V)
Drag to select an area in the editor, and VAS uses the macOS Vision engine to recognize the text locally — the language is detected automatically.
The recognized text goes straight to your clipboard by default — after a capture, press ⌘V anywhere to paste it. No retyping a line of log or an error message by hand.
- on-device — no upload, no server. Your screenshot and its recognized text stay on your Mac only.
result →
Auto Privacy Masking (on-device · localized formats)
If OCR can read the text, it can read which text is private. VAS automatically detects and marks sensitive information, localized for each supported market — recognizing local formats for ID numbers, business/tax numbers, credit card numbers, phone numbers, email, IPv4 / IPv6, API tokens, and more.
All versionsElectron uses the Vision Framework;
Tauri onlyadds five-layer detection covering more local formats.
Design decision · No pretending it's perfect — control stays with you
In development we found OCR has an inherent limit — it occasionally misses or mis-catches. Instead of forcing "the tool must be perfect," we chose a different design:
- The privacy mosaic is a floating layer with an adjustable range — whatever OCR misses, you drag one over to fill in. A recognition slip turns from "error" into "to be confirmed"; the tool's imperfection never costs you control.
- OCR handles about 90% automatically; one light drag of a manual mosaic finishes work that would otherwise have been 100% by hand.
- Masked the wrong thing? No problem — each mosaic is an independent floating object; Delete removes it in one press. Nothing here is irreversible.
ID: A123456789
DOB: 1990/05/15
Phone: 0912-345-678
Email: [email protected]
Address: 100 Zhongxiao E. Rd, Taipei
Card: 4532-1234-5678-9012
one-tap mask →
ID: A123456789
DOB: 1990/05/15
Phone: 0912-345-678
Email: [email protected]
Address: 100 Zhongxiao E. Rd, Taipei
Card: 4532-1234-5678-9012
⇧K one-tap privacy mask — OCR detects sensitive fields and lays a mosaic over them; each mosaic is a floating layer — like the ID block shown selected here, it can be moved, resized, or deleted. Whatever OCR misses, just drag one more over it.
Mask just this part: frame a region first, then press ⇧K
Scanning the whole image has a cost: every piece of text judged sensitive gets covered, including the parts you meant to keep. So ⇧ K has a second use: when an annotation is selected on the canvas, it scans only that annotation's area.
- Press ⇧ R for the rectangle, drag one over the area you want handled — it is selected the moment you finish drawing it (handles at the corners) — then press ⇧ K: sensitive text inside the frame is masked, everything outside is left alone.
- It need not be a rectangle — any selected annotation counts, and the scanned area is its bounding box (anything too small is ignored). The rectangle is simply the most intuitive shape, because the frame you see is the area that gets scanned.
- With nothing selected, ⇧ K is the whole-image scan described above. One key, two uses; the only difference is whether something is selected.
- Want to frame it yourself without leaving a rectangle behind? Use the Privacy Mask button in the toolbar — that route scans the region you drag, without creating an annotation object.
What comes out is still a floating mosaic layer, so the three things above still hold: you can drag it, resize it, and remove it with Delete.
QR Code Scan (behavior by frame coverage)
Scanning a QR Code looks binary on the surface — hit or miss. But VAS doesn't see it that way: it reads your intent, then decides the next step from there.
When you want a precise read, you naturally frame the QR Code fully, and as tightly as possible — that act is itself a declaration of intent. The fuller the frame, the more accurate the read and the higher the confidence, and the more the tool dares to act directly. Because the intent is clear the moment you frame it, QR detection fires right from the toolbar's Region capture — no need to open the editor.
A tool shouldn't fake certainty it doesn't have