Pot (派了个萌的翻译器)
🌈 一个跨平台的划词翻译软件 (QQ 频道)
使用说明
划词翻译 | 输入翻译 | 外部调用 |
---|---|---|
鼠标选中需要翻译的文本,按下设置的划词翻译快捷键即可 | 按下输入翻译快捷键呼出翻译窗口,输入待翻译文本后按下 回车 翻译 | 通过被其他软件调用实现更加方便高效的功能, 详见 外部调用 |
剪切板监听模式 | 截图 OCR | 截图翻译 |
---|---|---|
在任意翻译面板上点击左上角图标启动剪切板监听默认,复制文字即可完成翻译 | 按下截图 OCR 快捷键后框选需要识别区域即可完成识别 | 按下截图翻译快捷键后框选需要识别区域即可完成翻译 |
特色功能
- 多接口并行翻译 (支持接口)
- 多接口文字识别 (支持接口)
- 多接口语音合成 (支持接口)
- 导出到生词本 (支持接口)
- 外部调用 (详情)
- 支持插件系统 (插件系统)
- 支持所有 PC 平台 (Windows, macOS, Linux)
- 支持 Wayland (在 KDE、Gnome 以及 Hyprland 上测试)
- 多语言支持
支持接口
翻译
- OpenAI
- 智谱 AI
- Gemini Pro
- Ollama (离线)
- 阿里翻译
- 百度翻译
- 彩云小译
- 腾讯翻译君
- 腾讯交互翻译
- 火山翻译
- 小牛翻译
- Bing
- Bing 词典
- DeepL
- 有道翻译
- 剑桥词典
- Yandex
- Lingva (插件)
- Tatoeba (插件)
- ECDICT (插件)
更多接口支持见 插件系统
文字识别
- [x] 系统 OCR (离线)
- [x] [Windows.Media.OCR](https://learn.microsoft.com/en-us/uwp/api/windows.media.ocr.ocrengine?view=winrt-22621) 在 Windows 上
- [x] [Apple Vision Framework](https://developer.apple.com/documentation/vision/recognizing_text_in_images) 在 MacOS 上
- [x] [Tesseract OCR](https://github.com/tesseract-ocr) 在 Linux 上
- [x] [Tesseract.js](https://tesseract.projectnaptha.com/) (离线)
- [x] [百度](https://ai.baidu.com/tech/ocr/general)
- [x] [腾讯](https://cloud.tencent.com/product/ocr-catalog)
- [x] [火山](https://www.volcengine.com/product/OCR)
- [x] [迅飞](https://www.xfyun.cn/services/common-ocr)
- [x] [腾讯图片翻译](https://cloud.tencent.com/document/product/551/17232)
- [x] [百度图片翻译](https://fanyi-api.baidu.com/product/22)
- [x] [Simple LaTeX](https://simpletex.cn/)
- [x] [OCRSpace](https://ocr.space/) ([插件](https://github.com/pot-app/pot-app-recognize-plugin-template))
- [x] [Rapid](https://github.com/RapidAI/RapidOcrOnnx) (离线 [插件](https://github.com/pot-app/pot-app-recognize-plugin-rapid))
- [x] [Paddle](https://github.com/hiroi-sora/PaddleOCR-json) (离线 [插件](https://github.com/pot-app/pot-app-recognize-plugin-paddle))
更多接口支持见 [插件系统](#插件系统)
## 语音合成
- [x] [Lingva](https://github.com/thedaviddelta/lingva-translate)
更多接口支持见 [插件系统](#插件系统)
## 生词本
- [x] [Anki](https://apps.ankiweb.net/)
- [x] [欧路词典](https://dict.eudic.net/)
- [x] [有道](https://www.youdao.com/) ([插件](https://github.com/pot-app/pot-app-collection-plugin-youdao))
- [x] [扇贝](https://web.shanbay.com/web/main) ([插件](https://github.com/pot-app/pot-app-collection-plugin-shanbay))
更多接口支持见 [插件系统](#插件系统)
<div align="center">
# 插件系统
</div>
软件内置接口数量有限,但是您可以通过插件系统来扩展软件的功能。
## 插件安装
你可以在 [Plugin List](https://pot-app.com/plugin.html) 查找你需要的插件,然后前往插件仓库下载插件。
pot 插件的扩展名为 `.potext`, 下载得到`.potext`文件之后, 在 偏好设置-服务设置-添加外部插件-安装外部插件 选择对应的 `.potext` 即可安装成功,添加到服务列表中即可像内置服务一样正常使用了。
### 故障排除
- 找不到指定的模块 (Windows)
出现类似这样的报错是因为系统缺少 C++库,前往[这里](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2015-2017-2019-and-2022)安装即可解决问题。
- 不是有效的 Win32 应用程序 (Windows)
出现类似这样的报错说明你没有下载对应系统或者架构的插件,前往插件仓库下载正确的插件即可解决问题。
## 插件开发
在 [Plugin List](https://pot-app.com/plugin.html) 中的 [模板](https://pot-app.com/plugin.html#%E6%A8%A1%E6%9D%BF) 章节提供了各种插件的开发模板,具体的开发文档请查看对应的模板仓库。
<div align="center">
# 安装指南
</div>
## Windows
### 通过 Winget 安装
```powershell
winget install Pylogmon.pot
手动安装
-
在 Release 页面下载最新
exe
安装包。- 64 位机器下载
pot_{version}_x64-setup.exe
- 32 位机器下载
pot_{version}_x86-setup.exe
- arm64 机器下载
pot_{version}_arm64-setup.exe
- 64 位机器下载
-
双击安装包进行安装。
故障排除
-
启动后没有界面,点击托盘图标没有反应
检查是否卸载/禁用了 WebView2,如果卸载/禁用了 WebView2,请手动安装 WebView2 或将其恢复。
如果是企业版系统不方便安装或无法安装 WebView2,请尝试在 Release 下载内置 WebView2 的版本
pot_{version}_{arch}_fix_webview2_runtime-setup.exe
若问题仍然存在请尝试使用 Windows7 兼容模式启动。
MacOS
通过 Brew 安装
- 添加我们的 tap:
brew tap pot-app/homebrew-tap
- 安装 pot:
brew install --cask pot
- 更新 pot
brew upgrade --cask pot
手动安装
- 从 Release 页面下载最新的
dmg
安装包。(如果您使用的是 M1 芯片,请下载名为pot_{version}_aarch64.dmg
的安装包,否则请下载名为pot_{version}_x64.dmg
的安装包) - 双击下载的文件后将 pot 拖入 Applications 文件夹即可完成安装。
故障排除
-
由于开发者无法验证,“pot”无法打开。
点击 取消 按钮,然后去 设置 -> 隐私与安全性 页面,点击 仍要打开 按钮,然后在弹出窗口里点击 打开 按钮即可,以后打开 pot 就再也不会有任何弹窗告警了
如果在 隐私与安全性 中找不到以上选项,或启动时提示文件损坏。打开 Terminal.app,并输入以下命令,然后重启 pot 即可:
sudo xattr -d com.apple.quarantine /Applications/pot.app
-
如果每次打开时都遇到辅助功能权限提示,或者无法进行划词翻译,请前往设置 -> 隐私与安全 -> 辅助功能,移除 “pot”,并重新添加 “pot”。
Linux
Debian/Ubuntu
-
从 Release 页面下载最新的对应架构的
deb
安装包。 -
使用
apt-get
进行安装sudo apt-get install ./pot_{version}_amd64.deb
Arch/Manjaro
[!WARNING] 在最新版本的 Webkit2Gtk (2.42.0) 中,由于 Nvidia 专有驱动未完全实现 DMABUF,将导致无法启动和崩溃的情况发生。
请降级或在/etc/environment
(或者其他设置环境变量的地方)中加入WEBKIT_DISABLE_DMABUF_RENDERER=1
环境变量关闭 DMABUF 的使用。
- 在 AUR 查看
使用 AUR helper
安装:
yay -S pot-translation # 或 pot-translation-bin
# paru -S pot-translation # 或 pot-translation-bin
- 如果你使用
archlinuxcn
源,可以直接使用 pacman 安装
sudo pacman -S pot-translation
Flatpak
[!WARNING] Flatpak 版本缺失托盘图标。
外部调用
API Documentation:
POST "/" => Translate the specified text (the body is the text to be translated),
GET "/config" => Open settings,
POST "/translate" => Translate the specified text (same as "/"),
GET "/selection_translate" => Selection translation,
GET "/input_translate" => Input translation,
GET "/ocr_recognize" => Screenshot OCR,
GET "/ocr_translate" => Screenshot translation,
GET "/ocr_recognize?screenshot=false" => Screenshot OCR (without using the built-in screenshot tool),
GET "/ocr_translate?screenshot=false" => Screenshot translation (without using the built-in screenshot tool),
GET "/ocr_recognize?screenshot=true" => Screenshot OCR,
GET "/ocr_translate?screenshot=true" => Screenshot translation,
Examples:
-
Invoke selection translation:
To invoke Pot's selection translation, simply send a request to
127.0.0.1:port
.For example, send a request using curl:
curl "127.0.0.1:60828/selection_translate"
Without using the built-in screenshot tool
This feature allows you to invoke screenshot OCR/screenshot translation without using the built-in screenshot tool, so you can use your preferred screenshot tool to capture, or solve the issue where Pot's built-in screenshot tool cannot be used on some platforms.
Call process
- Use another screenshot tool to capture
- Save the screenshot to
$CACHE/com.pot-app.desktop/pot_screenshot_cut.png
- Send a request to
127.0.0.1:port/ocr_recognize?screenshot=false
to successfully invoke
$CACHE
is the system cache directory, for example, on Windows, it'sC:\Users\{Username}\AppData\Local\com.pot-app.desktop\pot_screenshot_cut.png
Example
Invoke Flameshot for screenshot OCR on Linux:
rm ~/.cache/com.pot-app.desktop/pot_screenshot_cut.png && flameshot gui -s -p ~/.cache/com.pot-app.desktop/pot_screenshot_cut.png && curl "127.0.0.1:60828/ocr_recognize?screenshot=false"
Existing Usage (Quick Selection Translation)
SnipDo (Windows)
- Download and install SnipDo from the Microsoft Store.
- Download the SnipDo extension for Pot (pot.pbar) from the Release.
- Double-click the downloaded extension file to complete the installation.
- Select text, and you will see the SnipDo toolbar pop up, click the translate button to translate.
PopClip (MacOS)
- Download and install PopClip from the App Store.
- Download the PopClip extension for Pot (pot.popclipextz) from the Release.
- Double-click the downloaded extension file to complete the installation.
- Enable the Pot extension in PopClip's extensions, select text, and click to translate.
Starry (Linux)
Starry is still in development, so you can only compile it manually.
Github: ccslykx/Starry
Wayland Support
Due to varying levels of support for Wayland across major distributions, Pot itself cannot achieve perfect support. Here are some common solutions that can be provided. With reasonable configuration, Pot can also run perfectly on Wayland.
Hotkeys Not Working
Because Tauri's hotkey scheme doesn't support Wayland, the hotkey settings within the Pot application cannot be used under Wayland. You can set system hotkeys to send requests via curl to trigger Pot, see External Invocation.
Screenshot Not Working
In some pure Wayland desktop environments/window managers (such as Hyprland), the built-in screenshot tool in Pot cannot be used. At this time, you can replace it with other screenshot tools, see Without Using the Built-in Screenshot Tool.
Below is a configuration example under Hyprland (achieved through grim and slurp):
bind = ALT, X, exec, grim -g "$(slurp)" ~/.cache/com.pot-app.desktop/pot_screenshot_cut.png && curl "127.0.0.1:60828/ocr_recognize?screenshot=false"
bind = ALT, C, exec, grim -g "$(slurp)" ~/.cache/com.pot-app.desktop/pot_screenshot_cut.png && curl "127.0.0.1:60828/ocr_translate?screenshot=false"
Other desktop environments/window managers have similar operations.
Selection Translation Window Follows Mouse Position
Since Pot currently cannot obtain the correct mouse coordinates under Wayland, the internal implementation does not work. For some desktop environments/window managers, you can achieve the window following the mouse position by setting window rules. Here is an example with Hyprland:
windowrulev2 = float, class:(pot), title:(Translator|OCR|PopClip|Screenshot Translate) # Translation window floating
windowrulev2 = move cursor 0 0, class:(pot), title:(Translator|PopClip|Screenshot Translate) # Translation window follows the mouse position.
Contributors
Manual Compilation
Environment Requirements
Node.js >= 18.0.0
pnpm >= 8.5.0
Rust >= 1.79.0
Start Compilation
-
Clone the repository
git clone https://github.com/pot-app/pot-desktop.git
-
Install dependencies
cd pot-desktop pnpm install
-
Install dependencies (Linux only)
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libayatana-appindicator3-dev librsvg2-dev patchelf libxdo-dev libxcb1 libxrandr2 libdbus-1-3
-
Develop and Debug
pnpm tauri dev # Run the app in development mode
-
Build Package
pnpm tauri build # Build into installation package
Thanks
- Bob for inspiration
- bob-plugin-openai-translator for OpenAI interface reference
- @uiYzzi for implementation ideas
- @Lichenkass for maintaining Pot in the Deepin App Store
- Tauri for the excellent GUI framework