Fast, private, fully local OCR for images and PDFs on Apple Silicon.
English · 简体中文 · 日本語 · 한국어 · Deutsch · Français · Русский · Español
Current release: 1.1.5 · Requires macOS 26.0 or later and an Apple Silicon Mac. The app interface is available in English and Simplified Chinese.
FreeOCR is a native SwiftUI desktop app powered by the bundled PP-OCRv6 medium detection and recognition models. It works offline after installation: no account, model download, or document upload is required.
- OCR for PDF, PNG, JPEG, HEIC/HEIF, TIFF, BMP, GIF, and WebP files.
- Drag files from Finder or images directly from a web page.
- Linked, bidirectional highlighting between source regions and recognized text.
- Multi-page previews with zoom controls and dated, persistent history.
- Preview, Markdown, and structured JSON output.
- Copy the current output or save it with a native macOS save panel.
- Unified 50-language recognition model; no language selector is required.
- English and Simplified Chinese interface, switchable immediately in Settings.
- Local REST API with real job progress, optional LAN access, and optional Bearer-token authentication.
- Closing the main window keeps FreeOCR and its API running. Click the Dock icon to reopen the window, or choose Quit from the Dock or app menu to stop it.
| Multilingual image OCR | Markdown output |
|---|---|
![]() |
![]() |
| Local API settings | English welcome screen |
|---|---|
![]() |
![]() |
- macOS 26.0 or later.
- Apple Silicon: M1, M2, M3, M4, or newer. Intel Macs are not supported.
- About 900 MB of disk space for the current app bundle.
- 8 GB RAM minimum; 16 GB or more is recommended for large, multi-page PDFs.
The application is large because it is self-contained. In the current build, the app is about 832 MB: the two ONNX model repositories occupy about 133 MB, while the portable Python and OCR runtime occupies about 685 MB. That runtime includes PaddleOCR, PaddleX, ONNX Runtime, OpenCV, PDFium, FastAPI, and their transitive dependencies.
- Download
FreeOCR-1.1.5-arm64.dmgfrom the GitHub Releases page. - Open the disk image and drag
FreeOCR.apptoApplications. - Launch FreeOCR and wait for the status indicator to turn green.
- Import or drag in an image or PDF.
The current community build is ad-hoc signed and not Apple-notarized because a Developer ID certificate is not available for this release. On first launch, macOS may require you to Control-click the app, choose Open, and confirm. Only download release files from this repository.
Newly imported files appear at the top of the sidebar. Recognition can start automatically after import, or you can disable that option in Settings and use the Recognize button manually. Attempting to recognize an already completed document asks for confirmation.
The output tabs behave consistently:
- Preview and Markdown: Copy and Save use Markdown.
- JSON: Copy and Save use the displayed JSON.
Recognition history is stored per user at:
~/Documents/FreeOCR
Each saved history item contains the original file, page previews, Markdown,
JSON, and metadata. Temporary API work files are stored under
~/Library/Application Support/FreeOCR/Cache and old entries are pruned
automatically.
The API listens on the current Mac only by default:
http://127.0.0.1:8766
The port, LAN access, and optional Bearer token are configurable in Settings. Do not enable LAN access on an untrusted network without setting a strong token.
curl http://127.0.0.1:8766/health
curl -X POST http://127.0.0.1:8766/v1/ocr \
-F 'file=@/path/to/document.pdf' \
-F 'response_format=markdown'Asynchronous jobs and progress reporting are also supported. See
API_USAGE.md for the complete API guide.
The Git repository and source ZIP intentionally exclude model weights, the portable Python runtime, and build products.
Prerequisites:
- macOS 26 with Xcode Command Line Tools and Swift 6.2 or later.
- An arm64 Python 3.10 bootstrap environment.
- Complete local copies of both official model repositories:
python3 -m venv Runtime/.venv
Runtime/.venv/bin/python -m pip install -r Runtime/requirements-lock.txt
export FREEOCR_DETECTION_MODEL_PATH="/path/to/PP-OCRv6_medium_det_onnx"
export FREEOCR_RECOGNITION_MODEL_PATH="/path/to/PP-OCRv6_medium_rec_onnx"
swift build
Runtime/.venv/bin/python -m unittest discover -s Runtime -p 'test_*.py'
./script/package_release.shThe packaging script creates the self-contained app, app ZIP, source ZIP, and
compressed DMG under release/.
Version 1.1.5 was built and tested on:
- macOS 26.5.2 (Build 25F84).
- MacBook Pro with Apple M1 Pro, 8-core CPU, and 16 GB RAM.
- Apple Swift 6.3.3.
- arm64 Python 3.10.16.
- PaddleOCR 3.7.0, PaddleX 3.7.2, and ONNX Runtime 1.23.2.
Other Apple Silicon configurations meeting the requirements should work, but have not all been individually tested.
FreeOCR bundles two official PaddlePaddle model repositories:
Both model pages identify their license as Apache License 2.0. The model
weights and all bundled third-party components remain governed by their own
licenses; they are not relicensed under FreeOCR's project license. See
THIRD_PARTY_NOTICES.md.
FreeOCR is an independent project and is not affiliated with or endorsed by PaddlePaddle, Apple, Hugging Face, or the maintainers of its dependencies.
FreeOCR's original source code is source-available under the PolyForm Noncommercial License 1.0.0. Noncommercial use, study, research, modification, and distribution are permitted under its terms; commercial use is not permitted.
Because it restricts commercial use, PolyForm Noncommercial is not an OSI-approved open-source license. If you require an OSI open-source project, this licensing choice will not meet that definition.
Documents are processed locally and FreeOCR does not include analytics or an
upload service. API exposure is controlled by you. Please report security
issues according to SECURITY.md.




