[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-82849":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":9,"pushedAt":9,"updatedAt":36,"readmeContent":37,"aiSummary":38,"trendingCount":15,"starSnapshotCount":15,"syncStatus":39,"lastSyncTime":40,"discoverSource":41},82849,"WinLens","marco-beltrame\u002FWinLens","marco-beltrame","Google Lens for your Windows desktop - translate any on-screen text, in place.",null,"C#",168,21,1,4,0,7,29,45,26,77.03,"MIT License",false,"main",true,[26,27,28,29,30,31,32,33,34,35],"csharp","csharp-wpf","desktop-app","dotnet","google-lens","ocr","screen-translator","translation","windows","wpf","2026-06-12 04:01:39","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"assets\u002Flogo.png\" alt=\"WinLens logo\" width=\"120\" \u002F>\n\n# WinLens\n\n**Translate any text on your Windows screen, in place.**\nA desktop take on Google Lens translate.\n\nEnglish · [简体中文](README.zh-CN.md)\n\n[Explore the docs »](#usage)\n\n[Report Bug](https:\u002F\u002Fgithub.com\u002Fmarco-beltrame\u002FWinLens\u002Fissues\u002Fnew?template=bug_report.yml) ·\n[Request Feature](https:\u002F\u002Fgithub.com\u002Fmarco-beltrame\u002FWinLens\u002Fissues\u002Fnew?template=feature_request.yml) ·\n[Discussions](https:\u002F\u002Fgithub.com\u002Fmarco-beltrame\u002FWinLens\u002Fdiscussions)\n\n[![Build](https:\u002F\u002Fgithub.com\u002Fmarco-beltrame\u002FWinLens\u002Factions\u002Fworkflows\u002Fbuild.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fmarco-beltrame\u002FWinLens\u002Factions\u002Fworkflows\u002Fbuild.yml)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fmarco-beltrame\u002FWinLens?color=8b5cf6)](LICENSE)\n[![Platform](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatform-Windows%2010%2F11-0078D6?logo=windows&logoColor=white)](#installation)\n[![.NET](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F.NET-8.0-512BD4?logo=dotnet&logoColor=white)](https:\u002F\u002Fdotnet.microsoft.com\u002F)\n[![Release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fmarco-beltrame\u002FWinLens?color=8b5cf6)](https:\u002F\u002Fgithub.com\u002Fmarco-beltrame\u002FWinLens\u002Freleases)\n[![Downloads](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002Fmarco-beltrame\u002FWinLens\u002Ftotal?color=8b5cf6)](https:\u002F\u002Fgithub.com\u002Fmarco-beltrame\u002FWinLens\u002Freleases)\n[![Stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fmarco-beltrame\u002FWinLens?style=flat&color=8b5cf6)](https:\u002F\u002Fgithub.com\u002Fmarco-beltrame\u002FWinLens\u002Fstargazers)\n\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"assets\u002Fdemo.gif\" alt=\"WinLens translating on-screen text to English in place\" width=\"860\"\u002F>\n\u003C\u002Fdiv>\n\n## Overview\n\nWinLens translates the text on your screen and draws the translation right over the original,\nmatching the background and font so it reads as if the app had always been in your language.\nIt's the Google Lens *translate* idea, but for the Windows desktop.\n\nBrowser translators only touch web pages. WinLens reads whatever is rendered on screen, so it\nalso works on native apps, games, chat clients, PDFs and foreign software. It uses OCR, so the\ntext doesn't need to be selectable.\n\nIt sits in the system tray and is triggered by a global hotkey. Press the hotkey, read the\ntranslation, press \u003Ckbd>Esc\u003C\u002Fkbd> to dismiss it.\n\n## Why WinLens?\n\nBrowser extensions translate text *inside a web page*. They can't read anything else on your\nscreen. WinLens runs OCR on the actual pixels, so it translates things they can't:\n\n- **Text inside images:** photos, screenshots, memes, infographics, scanned documents.\n- **Games:** menus and dialogue, including imported titles.\n- **Desktop apps:** installers, error dialogs, foreign software UIs.\n- **PDFs and documents** in any reader.\n- **Video frames and subtitles.**\n- **Anything you can't select or copy.**\n\nIf a browser tab already translates it, you don't need WinLens. For everything else on screen, you do.\n\n## Features\n\n- Translates on-screen text in place: the translation replaces the original, with a matching background and font, instead of appearing in a separate box.\n- Works on any window (apps, games, chats, documents), not just the browser.\n- Reads Latin and CJK (Chinese, Japanese, Korean) on the same screen.\n- Global hotkey, default \u003Ckbd>Ctrl\u003C\u002Fkbd> + \u003Ckbd>Alt\u003C\u002Fkbd> + \u003Ckbd>T\u003C\u002Fkbd>.\n- Upscales the screenshot before OCR and picks the best recognizer per text block, which helps accuracy on small text.\n- Dark control panel. You can change the target language straight from the overlay.\n- Right-click a block to copy the original text or the translation.\n- Optional \"launch at startup\". Otherwise it stays out of the way in the tray.\n\n## Control panel\n\nA small tray app with a dark control panel. Pick the target language, set the hotkey,\nchoose the OCR source language, and toggle launch-at-startup.\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"assets\u002Fsettings.png\" alt=\"WinLens control panel\" width=\"330\"\u002F>\n\u003C\u002Fdiv>\n\n## Installation\n\n### Download\n\nOpen the [Releases](https:\u002F\u002Fgithub.com\u002Fmarco-beltrame\u002FWinLens\u002Freleases) page and pick the\nbuild for your CPU (`win-x64` for most PCs, `win-arm64` for Snapdragon \u002F ARM devices). Two\nflavours are offered:\n\n| Download | Size | Needs a runtime? |\n| --- | --- | --- |\n| `WinLens-win-x64.exe` | ~25 MB | Yes — the [.NET 10 Desktop Runtime](https:\u002F\u002Fdotnet.microsoft.com\u002Fdownload\u002Fdotnet\u002F10.0) |\n| `WinLens-win-x64-standalone.zip` | ~75 MB | No — the runtime is bundled |\n\nPick the small `.exe` if you already have (or don't mind installing) the .NET 10 Desktop\nRuntime. Pick the standalone `.zip` if you want it to run with no install — extract the folder\nanywhere and run `WinLens.exe` inside (keep the files together; the `.exe` needs the DLLs\nnext to it).\n\nThe executable isn't code-signed yet, so on first launch Windows SmartScreen may show\n\"Windows protected your PC\". Click **More info > Run anyway**. If you'd rather verify the\ndownload instead, compare its checksum against the SHA256 listed on the release page:\n\n```powershell\nGet-FileHash .\\WinLens-win-x64.exe -Algorithm SHA256\n```\n\n### OCR language packs\n\nWinLens uses the Windows OCR engine, so it can only read languages whose OCR pack is installed.\nMost systems already have your display language. To add more (for example Chinese or Japanese):\n\n> Settings > Time & Language > Language & region > (your language) > Language options > Optional features > add the OCR feature.\n\nThe \"Add OCR languages in Windows\" link in the control panel opens that page for you. Newly\ninstalled languages show up automatically.\n\n## Usage\n\n1. Launch WinLens. The control panel opens the first time, then it minimizes to the tray.\n2. Pick a target language in the control panel.\n3. Press the hotkey (\u003Ckbd>Ctrl\u003C\u002Fkbd> + \u003Ckbd>Alt\u003C\u002Fkbd> + \u003Ckbd>T\u003C\u002Fkbd>) anywhere in Windows.\n4. The screen is translated in place. Press \u003Ckbd>Esc\u003C\u002Fkbd> or Close to dismiss.\n\n| Action | How |\n| --- | --- |\n| Translate now | Hotkey, tray menu, or the control panel button |\n| Open the control panel | Double-click the tray icon, or tray menu > Open WinLens |\n| Change target language | Control panel, or the overlay's top bar (re-translates live) |\n| Change the hotkey | Control panel > Change, then press your combination |\n| Pick the source (OCR) language | Control panel > Detect text in (leave on Auto unless you need speed) |\n| Copy text | Right-click a translated block > Copy original \u002F Copy translation |\n| Launch at startup | Control panel toggle |\n| Quit | Tray menu > Exit |\n\nLeaving \"Detect text in\" on Auto is usually best: WinLens runs every installed recognizer and\nkeeps the text each one reads well, so a mixed-language screen still works. Forcing a single\nlanguage only saves a little time.\n\n## How it works\n\n```\nHotkey > capture screen > upscale > OCR (per script) > translate > overlay in place\n```\n\n1. Capture the whole virtual screen (DPI-accurate, all monitors).\n2. Upscale the image about 2x so small UI text is recognized more reliably.\n3. Run every installed OCR recognizer and keep from each only the blocks whose script matches\n   it (Latin from the Latin engine, CJK from the CJK engine), then drop overlapping duplicates.\n4. Translate each line (Google endpoint, with a MyMemory fallback), cached per session.\n5. Draw an opaque, color- and font-matched box over each original line.\n\n## Roadmap\n\nThe [issues](https:\u002F\u002Fgithub.com\u002Fmarco-beltrame\u002FWinLens\u002Fissues) and\n[project board](https:\u002F\u002Fgithub.com\u002Fmarco-beltrame\u002FWinLens\u002Fprojects) have the full list.\n\n- [ ] Offline translation (Argos \u002F NLLB): no network, no rate limits, more privacy.\n- [ ] PaddleOCR \u002F ONNX engine: stronger CJK and small-text accuracy, no OS language packs.\n- [ ] Cross-platform (Avalonia): macOS and Linux.\n- [ ] Region capture: translate a selected area instead of the whole screen.\n- [x] Animated demo (GIF) in the README.\n\n## Building from source\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fmarco-beltrame\u002FWinLens.git\ncd WinLens\ndotnet build -c Release\ndotnet run\n```\n\nRequirements: Windows 10 (build 19041 or later) \u002F 11, the\n[.NET 10 SDK](https:\u002F\u002Fdotnet.microsoft.com\u002Fdownload\u002Fdotnet\u002F10.0), and the Windows Desktop\nworkload (WPF).\n\n| Flag | Effect |\n| --- | --- |\n| `--settings` | Open the control panel on launch |\n| `--translate` | Run one capture-and-translate on launch |\n\n## Contributing\n\nContributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) and the\n[Code of Conduct](CODE_OF_CONDUCT.md). Issues tagged\n[good first issue](https:\u002F\u002Fgithub.com\u002Fmarco-beltrame\u002FWinLens\u002Fissues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)\nare a good place to start.\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n\n## Acknowledgements\n\n- Translation through the Google Translate endpoint, with a [MyMemory](https:\u002F\u002Fmymemory.translated.net\u002F) fallback.\n- Tray integration with [Hardcodet.NotifyIcon.Wpf](https:\u002F\u002Fgithub.com\u002Fhardcodet\u002Fwpf-notifyicon).\n- Built with .NET 10 and WPF.\n","WinLens 是一款针对 Windows 桌面的屏幕文本翻译工具，能够在原位置直接翻译屏幕上的任何文本。该项目采用 C# 语言开发，并基于 WPF 技术构建用户界面，通过 OCR 技术识别屏幕上的文字内容，支持多种语言之间的即时转换。其核心功能包括对不可选文本（如图片中的文字、游戏对话框、PDF 文档等）进行精准翻译，并且翻译结果会以与原文相同的样式显示在屏幕上，保持视觉一致性。WinLens 适用于需要频繁处理多语言信息但又不方便复制粘贴或使用传统浏览器插件进行翻译的各种场景，如阅读外语文档、玩进口游戏或者观看外语视频时。",2,"2026-06-11 04:09:25","CREATED_QUERY"]