OwOCR Guide

A simple guide on how to quickly set up and use OwOCR, an optical character recognition program that can make reading Japanese text from visual novels much easier.

Note: This program uses a command line interface. If you're looking for something with a GUI, consider using GameSentenceMiner which runs a fork of OwOCR.

OwOCR in action

Installation

  1. Install Python (3.11, 3.12, or 3.13)

    Warning: During installation, make sure to select "Add to Path". If you skip this step, OwOCR will not work.

  2. Open your command prompt/terminal and run:
    pip install owocr
    
  3. Install Google Lens for best OCR accuracy:
    pip install "owocr[lens]"
    

Other providers:

  • Bing: pre-installed → key: b (close second best, recommended)
  • Apple Live Text: pre-installed → key: d (macOS only, includes vertical text support on Sonoma+)
  • Apple Vision: pre-installed → key: a (macOS only, best local engine on Mac)
  • OneOCR: pip install "owocr[oneocr]" → key: o (Windows 10/11, fast and accurate)
  • Manga OCR: pip install "owocr[mangaocr]" → key: m (good for vertical text)
  • EasyOCR: pip install "owocr[easyocr]" → key: e
  • RapidOCR: pip install "owocr[rapidocr]" → key: r
  • meikiocr: pip install "owocr[meikiocr]" → key: k (fast local option, best for Linux, supports GPU acceleration with onnxruntime-gpu)

From the GitHub: If using an online engine like Lens, the developer recommends setting a secondary local engine with -es: -es=oneocr on Windows, -es=alivetext on macOS.

OwOCR startup window

Getting Started

There are two ways to use OwOCR: screen capture mode (recommended) or clipboard mode.

This is the easiest way to get started. OwOCR captures directly from your screen with a hotkey.

owocr -r=screencapture --engine=glens

This starts OwOCR with Google Lens and opens an area selector when triggered. The recognized text is copied to your clipboard for dictionary lookup.

Capture a specific window:

owocr -r=screencapture -sa=YourWindowTitle --engine=glens

Replace YourWindowTitle with part of your game's window title. OwOCR will capture the first window that matches.

Capture just part of a window:

owocr -r=screencapture -sa=YourWindowTitle -swa="" --engine=glens

Adding -swa="" opens a selector to choose a specific area within that window. Useful when you only want to OCR the text box.

For the best experience with texthooker page integration and window targeting:

owocr -r=screencapture --engine=glens -es=oneocr -w=websocket -wp=6677 -sa="YourWindowTitle" -swa=""
FlagWhat it does
-r=screencaptureUse screen capture mode instead of clipboard monitoring
--engine=glensUse Google Lens as the primary OCR engine (best accuracy)
-es=oneocrUse OneOCR as a secondary fallback engine for faster local processing. Windows only, use -es=alivetext on macOS
-w=websocketOutput text via WebSocket instead of clipboard
-wp=6677Use port 6677 (same as Textractor, so your texthooker page works with both)
-sa="YourWindowTitle"Target a window containing this text in its title (locks onto the window)
-swa=""Opens a selector to choose a specific area within that window

Replace YourWindowTitle with part of your game's window title.

Launcher Script

Create a batch file (e.g., owocr-launcher.bat) for easy one-click launching with window targeting:

Warning: Don't name the file owocr.bat or it will call itself instead of the actual program.

@echo off
set "WINDOW="
echo OwOCR Launcher
echo.
choice /C YN /M "Target a specific window"
if errorlevel 2 goto skip

set /p WINDOW=Enter window title:
if not defined WINDOW goto skip
echo Starting with window: %WINDOW%
call owocr -r=screencapture --engine=glens -es=oneocr -w=websocket -wp=6677 -sa="%WINDOW%" -swa=""
goto end

:skip
echo Starting without window targeting...
call owocr -r=screencapture --engine=glens -es=oneocr -w=websocket -wp=6677

:end
pause

This script prompts you to optionally enter a window title, then launches OwOCR with the recommended settings.

Clipboard Mode

If you prefer using a screenshot tool like ShareX, OwOCR can monitor your clipboard instead:

owocr --engine=glens

Take a screenshot that copies to clipboard, and OwOCR will automatically process it and replace the clipboard contents with the recognized text.

ShareX Configuration (Optional)

If you prefer clipboard mode with ShareX instead of OwOCR's built-in screen capture:

  1. Right-click the ShareX system tray icon → "Hotkey settings"
  2. Click "Add" to create a new hotkey
  3. Select Capture Region or Capture Region (Light)
  4. Set your preferred hotkey (avoid keys games use, like Shift)

ShareX config

  1. Click the gear icon next to your hotkey
  2. Under "Task" settings, enable "Override after capture tasks"
  3. Select only "Copy image to clipboard" and disable everything else

ShareX Hotkey Settings

Dictionary Integration

JL

JL is the recommended dictionary for OwOCR. It works with both clipboard and WebSocket input.

For the ShareX workflow (OCRing specific words for instant lookup), enable these settings:

  • Preferences → Popup → Auto lookup the first term when it's copied from the clipboard
  • Preferences → Popup → Auto lookup the first term when it's copied from a WebSocket
  • Preferences → Popup → Don't auto look up the first term on text change if Main Window is not minimized

These settings let you OCR text and immediately see the definition without any extra clicks.

Yomitan

Enable clipboard monitor in Yomitan, then click the magnifying glass to access the search page.

Search page

Browser Extensions

For texthooker page integration:

WebSocket Support

OwOCR can send text via WebSocket instead of clipboard:

  • Use -w=websocket to write text to WebSocket
  • Default port is 7331 (configurable in config file)

Runtime Controls

While OwOCR is running, you can use these keys:

KeyAction
lSwitch to Google Lens
mSwitch to Manga OCR
bSwitch to Bing
sCycle through available engines
pPause/resume OCR
t or qQuit the program

Command Reference

Input/Output Options

OptionDescription
-r, --read_fromWhere to read images from: clipboard, websocket, unixsocket, screencapture, or a directory path
-rs, --read_from_secondaryOptional secondary input source
-w, --write_toWhere to save text: clipboard, websocket, or a file path
-e, --engineOCR engine: glens, bing, mangaocr, mangaocrs, gvision, avision, alivetext, azure, winrtocr, oneocr, easyocr, rapidocr, ocrspace
-es, --engine_secondarySecondary local engine for two-pass processing

Screen Capture Options

OptionDescription
-sa, --screen_capture_areaTarget area: empty (selector), coordinates (x,y,width,height), screen_N, or window name
-swa, --screen_capture_window_areaSubsection of window: empty (selector), coordinates, or window for whole window
-sd, --screen_capture_delay_secsDelay between screenshots. -1 to disable periodic capture
-sw, --screen_capture_only_active_windowsOnly capture when target window is active
-sf, --screen_capture_frame_stabilizationWait for stable text before processing. -1 waits for matching results, 0 disables
-sl, --screen_capture_line_recoveryRecover missed lines from unstable frames
-sr, --screen_capture_regex_filterRegex to filter unwanted text (e.g., ▶|♥|・)
-sc, --screen_capture_comboHotkey combo for taking screenshots (e.g., <ctrl>+<shift>+s)
-scc, --coordinate_selector_comboHotkey combo for changing capture area

Text Processing Options

OptionDescription
-l, --languageLanguage code: ja (Japanese), zh (Chinese), ko (Korean), etc.
-j, --join_linesRemove spaces/separators between lines
-jp, --join_paragraphsRemove spaces/separators between paragraphs
-ls, --line_separatorCustom line separator (supports \n)
-ps, --paragraph_separatorCustom paragraph separator
-rt, --reorder_textRegroup and reorder text instead of using OCR engine order
-f, --furigana_filterFilter furigana from Japanese text (requires -rt)
-of, --output_formatOutput format: text (default) or json (includes coordinates)

Other Options

OptionDescription
-p, --pause_at_startupStart paused
-d, --delete_imagesDelete images after processing (when reading from directory)
-n, --notificationsShow OS notification with detected text
-a, --auto_pauseAuto-pause after N seconds of no recognition. 0 to disable
-cp, --combo_pauseHotkey combo for pause (e.g., <ctrl>+<shift>+p)
-cs, --combo_engine_switchHotkey combo for switching engines
-wp, --websocket_portWebSocket port (default: 7331)
-ds, --delay_secondsDelay between clipboard/directory checks
-v, --verbosityOutput verbosity: -2 (full text), -1 (timestamps only), 0 (errors only), or character limit

Tips

  • Use Google Lens for best accuracy in most cases
  • Avoid hotkey conflicts with game controls
  • Mouse buttons work great as hotkeys if your mouse has extra buttons
  • Test your setup on some Japanese text before starting a VN
  • Config file: You can store settings in C:\Users\YourUsername\.config\owocr_config.ini (Linux/macOS: ~/.config/owocr_config.ini)

For more details, see the OwOCR GitHub page.

Created
Last updated
Edit on GitHub