Guides

Batch OCR from a folder of screenshots

Updated 1 September 2026

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.

  1. Open Shortcuts and create a new shortcut
  2. Add Get File — enable Select Multiple
  3. Add Extract Text from Image
  4. Add Combine Text with New Lines as the separator
  5. 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.