Batch OCR from a folder of screenshots
Live Text handles one image at a time. For a folder of them you need something that loops. There are three reasonable ways, and none of them require paying for anything.
1. Shortcuts — free, built into macOS
The easiest route, and it uses the same on-device recognition as Live Text.
- Open Shortcuts and create a new shortcut
- Add Get File — enable Select Multiple
- Add Extract Text from Image
- Add Combine Text with New Lines as the separator
- Add Save File, or Copy to Clipboard
Run it, select a folder’s worth of images, and you get one text file with everything in it.
To keep results per-file rather than combined, use Repeat with Each over the input, and inside the loop put Extract Text from Image followed by Save File with the name set from the current item.
Enable Show in Menu Bar or add it as a Quick Action, and it becomes right-click → Services on any selection in Finder.
Limits: no confidence scores, no positions, no language control, and it can be slow on very large batches. For a few hundred images it’s perfectly fine and it costs nothing.
2. Command line, via Shortcuts
Once the shortcut exists you can drive it from a script:
for f in ~/Pictures/Screenshots/*.png; do
shortcuts run "Extract Text" -i "$f" -o "${f%.png}.txt"
done
Useful when the folder is large or the job needs to be repeatable.
3. Swift, for real control
If you want confidence values, word positions or a specific recognition level,
Apple’s Vision framework is a short script away — VNRecognizeTextRequest with
recognitionLevel = .accurate, iterated over a directory. Roughly forty lines,
no dependencies, and it runs entirely on-device.
Worth it when the result feeds something else. Overkill if you just want the words.
4. Third-party apps
OwlOCR, ClariRec and EasyScreenOCR all do batch OCR on macOS with on-device recognition, if you’d rather have an interface than a script.
Screenshot Inbox takes a different approach: rather than extracting text as a one-off job, it reads every screenshot as it arrives and keeps the text in a searchable index. There’s a bulk export that writes every image plus a sidecar JSON of the recognised text and metadata, so it can serve the batch-extraction use case too — but the point of it is that you never have to run the batch job.
Which to pick
| You want | Use |
|---|---|
| Text out of one folder, once | Shortcuts |
| The same job repeatedly | Shortcuts driven from a script |
| Confidence scores or word positions | A Vision script |
| An interface, no scripting | OwlOCR or similar |
| Never to think about it again | Something that indexes continuously |
What to expect from the results
Screen text comes out close to perfect. Terminal output, web pages, documents — high contrast, digitally rendered, no skew. The easy case.
Reading order can surprise you. A two-column layout is read in the order the engine reports regions, which isn’t always the order a person would read them. Fine for search; annoying if you wanted the prose back verbatim.
Line breaks are usually preserved, which matters if you’re extracting code or stack traces.
Handwriting needs a different setting in most tools, and is a genuinely harder problem.
One thing to check first
If these images contain anything sensitive, confirm where the recognition happens. The Shortcuts and Vision routes above are entirely on-device. Some third-party tools upload the image to a server, which for a folder of old screenshots means handing over a lot of material you’d stopped thinking about.