CopyShot is the OCR tool for people who want to understand and control what's happening.
Transparent preprocessing, visual inspection, and top-notch configurability.
No cloud. No API keys. No black box.
Select → extract → clipboard. One keystroke (⌘⇧C).
Works seamlessly across every display, resource-friendly, and 100% open source.
| Feature | Description |
|---|---|
| Multimodal Capture | Standard OCR, QR/barcodes, LaTeX formulas (MFR 1.5), and table recognition. |
| Radial Capture Menu | Right-click and drag with cursor locking to switch capture modes on the fly. |
| Drag-to-Capture | Any screen area, instantly, with Retina-scaled single-frame acquisition. |
| Multi-Monitor | Seamless across all connected displays with active-monitor HUD placement. |
| ⌘⇧C (or your own) | Re-bindable global hotkey via Carbon events (no Accessibility permissions needed). |
| Vision OCR Engine | Accurate & Fast modes, with optional language correction and custom language sets. |
| Transparent Preprocessing | Grayscale conversion (CIPhotoEffectMono) and 50% contrast enhancement for optimal text extraction. |
| Quick Actions | Flyout action bars to transform text casing, strip line breaks, open URLs/search, and on-device translation.* |
| Capture Inspection | Opt-in OCR Quick Action showing the original image, monochrome preview, exact OCR input, text bounding boxes, and assembled output. Disabled by default. |
| Settings Interface | Bespoke SwiftUI layout with per-mode configurations and direct-manipulation action reordering. |
| Resource Friendly | Sub-100ms pipeline, asynchronous prewarming, 60s idle model eviction, and minimal CPU/RAM footprint. |
| Auto-Update | Background update checks powered securely by Sparkle. |
*Note: On-device translation requires macOS 15.0 (Sequoia) or later. The first time a new language set is used, macOS will prompt you once to download Apple's on-device neural language set directly onto your Mac. Other Quick Actions are fully supported on macOS 14 (Sonoma)+.
Enable Inspect Capture in Settings → Quick Actions → OCR before capturing. The action opens a resizable inspection window for that capture, including when no text is found. Select a processing stage to view its image or text, zoom into the captured image, and select numbered text regions to match them to their bounding boxes. If a text Quick Action changes the output, inspection retains the original result and shows the transformed text separately. Opening inspection does not rerun OCR or change the clipboard. Images remain in memory only while the capture HUD or inspection window owns them; inspection creates no image files or history. When the action is disabled, CopyShot uses its existing text-only capture flow.
During a capture, right-click and drag through the radial menu to choose OCR, QR/barcode, LaTeX, or table recognition; release to select, then drag a region with the left mouse button.
-
Standard OCR: Fast, local text recognition using Apple's Vision framework (
VNRecognizeTextRequest) with smart reading-order assembly. -
QR & Barcodes: Supports all barcode and 2D matrix symbologies natively detected by Apple's
VNDetectBarcodesRequeston your macOS version (e.g. QR, Micro QR, DataMatrix, Aztec, PDF417, EAN, UPC, Code 128/39/93, Codabar, GS1 DataBar). Formats not supported by Apple Vision (such as postal codes, Code-11, or Pharmacode) are not detected. -
Table Recognition:
- How it works: Deterministic geometric clustering that groups Vision OCR text bounding boxes into aligned rows and columns.
- Output format: Tab-Separated Values (TSV) copied to clipboard, ready to paste directly into Excel, Numbers, Google Sheets, or Markdown.
-
Capabilities & Limitations: Accurately captures single-line grid data (with or without visible borders, including sparse/empty cells). Wrapped multi-line text inside a single cell or merged cells (
rowspan/colspan) are partitioned into separate rows/columns.
-
LaTeX Formulas:
- Scales the raw cropped equation capture onto a
$384 \times 384$ canvas and decodes it locally via Pix2Text MFR 1.5 using ONNX Runtime (up to 1,024 tokens). - Output format: Raw LaTeX math string. Download the model once (120 MB) from Settings → Capture → Mode Configuration → LaTeX → MFR Model, or follow the downloader shown on your first LaTeX capture. See MFR 1.5 setup.
- Scales the raw cropped equation capture onto a
CopyShot runs as an ultra-lightweight menu bar utility (LSUIElement) with a direct, local pipeline:
[Global Hotkey (⌘⇧C) or Menu Bar]
│
▼
[SCScreenshotManager] ──▶ Retina-scaled single-frame capture (~35ms)
│
▼
[CapturePipeline & Preprocessor]
│
┌─────┴───────────────────────────────┬───────────────────────────────┐
▼ ▼ ▼
[Vision OCR / Barcode] [Pix2Text MFR 1.5 ONNX] [Table Spatial Clustering]
• VNRecognizeTextRequest • Local ViT + Transformer • Geometric text box alignment
• VNDetectBarcodesRequest • LaTeX math expression • TSV / CSV / Markdown export
│ │ │
└──────────────────────────────┬──────┴───────────────────────────────┘
▼
┌───────────────────────────┐
▼ ▼
[NSPasteboard (Clipboard)] [Floating Frosted-Glass HUD]
(Instant pasteboard access) (Expandable preview + Quick Actions shelf)
- Hotkey Listening: Carbon event registration intercepts
⌘⇧Cglobally without requiring Accessibility permissions. - Multi-Monitor Overlay: Full-screen transparent overlay windows open on all connected displays. Dragging cuts out the selected frame over the target text.
- Radial Mode Selection: Right-click drag engages cursor locking at the call point, allowing seamless radial switching between OCR, QR, LaTeX, and Table modes.
- Single-Frame Capture: macOS 14+
SCScreenshotManager.captureImagegrabs the selected physical display coordinates directly in ~35ms. - Local Recognition: Preprocessed with CoreImage, Apple's Vision framework identifies text lines and groups them logically, while specialized engines handle barcode symbologies, table grids, or LaTeX formulas.
- Immediate Feedback: The recognized text is copied to
NSPasteboard.generalwhile an interactive HUD with mode-specific Quick Actions appears on the captured display.
CopyShot respects your privacy. Capture recognition runs locally using Apple's Vision framework or the installed MFR 1.5 ONNX model. The app does not access any of your personal files. Your captured images and extracted text remain entirely on your Mac. Network access is used for update checks and, when you choose Download, fetching the LaTeX model from Hugging Face. The model download sends no captures or recognized text; the hosting service receives standard download-request metadata such as your IP address.
Network Note: CopyShot uses its existing outbound-network permission for Sparkle update checks and user-initiated LaTeX model downloads. Recognition remains on-device and works offline once the model is installed.
Note: CopyShot requires macOS 14 (Sonoma) or later.
-
Download the App: Go to the Releases page and download the latest version of
CopyShot. -
Open the App:
- Because CopyShot is an open-source tool and not distributed through the Mac App Store, macOS Gatekeeper will block it when tried to open with a message saying "CopyShot Not Opened, Apple could not verify CopyShot is free of malware that may harm your Mac or compromise your privacy.".
- To bypass this: Go to
System Settings > Privacy & Security, scroll down to the bottom, and click Open Anyway where it mentions CopyShot was blocked. You only need to do this once.
-
Grant Screen Recording Permission:
- The first time you use CopyShot (by pressing the hotkey), macOS will block it from capturing your screen.
- Go to
System Settings > Privacy & Security > Screen & System Audio Recording. - Find CopyShot in the list and enable the toggle.
- Important: After granting permission, Quit and Reopen CopyShot for the changes to take effect.
Click to expand
If you'd like to edit, build, test, and run CopyShot yourself on macOS, here's how to get started. See CONTRIBUTING.md for full development guidelines.
- macOS 14+
- Xcode 16+ (free from the App Store)
-
Clone the Repo:
git clone https://github.com/Sayitobar/CopyShot.git cd CopyShot -
Open in Xcode: Double-click
CopyShot.xcodeprojto open it in Xcode. -
Build and Run: In Xcode, select the
CopyShottarget and your desired build scheme (e.g.,My Mac). Hit the Run button (play icon) or go toProduct > Run. It should build and launch the app. -
Run Tests: Run the fast unit suite via terminal:
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \ xcodebuild test -scheme CopyShot -destination 'platform=macOS' \ -only-testing:CopyShotTests -skip-testing:CopyShotTests/PipelineBenchmarkTests \ -skip-testing:CopyShotTests/OptimizationBenchmarkTests
Benchmarks, the Settings UI smoke test, and a manual capture checklist are in docs/TESTING.md.
-
Grant Permissions: The first time you run CopyShot, macOS security features will prevent it from capturing your screen. You will need to manually grant permission:
- Go to
System Settings > Privacy & Security > Screen & System Audio Recording. - Find CopyShot in the list of applications and enable the toggle next to it.
- Quit and reopen CopyShot for the changes to take effect.
- Go to
-
Making Code Changes: If you'd like to make any change to the code:
- Save your changes.
- Quit any running CopyShot instances.
- Delete the given
Screen & System Audio Recordingaccess to all CopyShot instances if rebuilding with an updated signature. - Rerun the app and regrant permissions. (If doesn't work, try
Product > Perform Action > Run Without Building)
Once it's set up, CopyShot should run & appear in your menu bar. If you're going through all this, thanks for checking it out, you probably know your way around, so feel free to tweak it.
Click to expand
- Interactive previews for future preprocessing controls, including binarization.
- Extend capture inspection to table cells and barcode geometries.
- Personal glossary for domain-specific vocabulary and custom corrections.
- OCR history with instant search & re-copy.
- Drag-and-drop image files directly into the app for OCR extraction.
- Advanced preprocessing controls: deskew, denoise, and adaptive threshold binarization.
- Capture an entire window or application frame.
- Countdown timer for timed captures.
- Handle scrolling areas for long documents and code blocks.
- Option to save captures as local images (PNG/JPG) or copy the image directly to the clipboard.
- Onboarding guide for first-time users.
- VoiceOver & other accessibility refinements.
The first version of CopyShot (v1.0.0) was live-coded with Gemini CLI. Every line, refactor, and bug-fix was done with the help of Gemini. This small experiment showed how far AI-assisted software development has come. Now, the project is maintained with the help of a mix of AI tools and human oversight.
This project is licensed under the MIT License - see the LICENSE file for details.
