A tray-resident OCR / translation tool for Windows, built with WinUI 3.
The project started as a WPF app (rewritten from NPCDW/WindowsFormsOCR), in branch 'wpf', and has now been ported to WinUI 3 (Windows App SDK) with a shared platform-agnostic core library.
It calls cloud platform open APIs for text recognition and translation, and currently only supports the platforms listed below.
Free Quota:
- OCR
- Tencent Cloud https://cloud.tencent.com/document/product/866/35945
- Baidu Cloud https://cloud.baidu.com/doc/OCR/s/fk3h7xu7h
- SpaceOCR https://ocr.space/OCRAPI
- Translate
- Baidu AI https://fanyi-api.baidu.com/product/113
- Google Translate (free and unlimited, but unofficial endpoint)
- Deeplx linux.do or self-host
- AI translate (any OpenAI compatible endpoint, multiple providers with multiple models each)
- Support multi-screenshot text recognition, the default shortcut key is
F4 - Support word translation, the default shortcut key is
F2, first select a piece of text with the mouse, and then press the shortcut key, a window will pop up for translation
Multi-screen OCR capture: only the screen where the mouse is placed will be captured
How to cancel screenshot? Press ESC or right-click
Marking words (taking words from the screen) is to send Ctrl+Insert by analog, and then get words from the clipboard
Keep the background process, the memory usage is about 3-4M
wotool.sln
├─ wotool.Core # net8.0-windows class library: config, cloud services, P/Invoke, shared utils
└─ wotool # WinUI 3 app (Windows App SDK, unpackaged)
├─ Views # Windows: hidden hotkey host / Screenshot / Result / Setting
├─ Pages # Settings pages hosted in the NavigationView frame
├─ Services # Tray icon, theme, window bookkeeping
├─ Util # Hotkeys, screenshot/DPI helpers, i18n accessor
└─ Strings # resx resources (zh-CN, en-US)
Requires .NET 8 SDK and Windows 10 1809+ (Windows App SDK 1.6).
dotnet build wotool.sln -c Release -p:Platform=x64
Configuration file storage path:
- User directory (default), you can directly delete the old version of the program folder, and then decompress and replace it with the new version of the program
- Before replacing an older release, preserve its
Config/Setting.json, then restore that file in the new program folder.
The configuration schema is unchanged; a new Common.theme key is added (defaults to Default = follow system).