Skip to content

wd041216-bit/paper-reader

Repository files navigation

SelectTranslate

macOS 划词翻译 — 读论文、看文档必备

macOS Python 3.10+ Ollama License: MIT

读论文时选中专业术语 → 一键获取中文翻译 + 权威解释

支持联网搜索,遇到不熟悉的术语自动查资料,给出准确释义。

SelectTranslate 是一款 macOS 划词翻译工具,通过 Accessibility API 无损读取选区文本,调用 Ollama Cloud 大语言模型(联网搜索增强)生成翻译和多术语解释,结果以原生浮动面板呈现在光标旁。核心设计原则:不修改剪贴板、不切换窗口、不抢焦点。


它解决什么问题

读英文论文/文档时,经常遇到不熟悉的专业术语:

  • "world model" 到底是什么?跟 "world knowledge" 有什么区别?
  • "reinforcement learning from human feedback" 怎么翻译?
  • "diffusion transformer" 是什么架构?

传统做法:切到浏览器 → 搜索 → 看几个结果 → 回来继续读。打断思路。

SelectTranslate:选中文字 → 按 ⌥⇧T → 光标旁弹出翻译和解释 → 点击任意位置关闭。

整个过程不超过 2 秒,不离开当前窗口。

效果

选中 reinforcement learning from human feedback,按 ⌥⇧T

┌─────────────────────────────────────────┐
│  reinforcement learning from...     ✕   │
│─────────────────────────────────────────│
│  基于人类反馈的强化学习                    │
│                                          │
│  • RLHF — 一种训练方法,通过人类偏好数据   │
│    对模型进行微调,使输出更符合人类期望     │
│  • reinforcement learning — 智能体通过    │
│    与环境交互获得奖励来学习策略的机器学习   │
│    范式                                   │
│  • human feedback — 人类对模型输出的质量   │
│    评价,作为奖励信号指导模型优化           │
└─────────────────────────────────────────┘

核心特性

  • 一键翻译 — 选中文字按 ⌥⇧T,翻译 + 解释同时出现
  • 多术语解析 — 自动识别并解释选区内所有专业术语和关键概念
  • 联网搜索 — 遇到专业术语自动搜索,给出准确释义而非字面翻译
  • 动态面板 — 面板高度自动适应内容长度,长文本不再被截断
  • 不干扰工作 — 不修改剪贴板、不切换窗口、不抢焦点,点击任意位置即关闭
  • 任意应用通用 — 浏览器、PDF 阅读器、终端、VS Code、Obsidian 等均可使用
  • 淡入淡出 — 面板带动画效果,出现在光标旁边,不遮挡选中的文字
  • 基于 Ollama Cloud — 使用 deepseek-v4-flash 模型,响应快,质量高

快速开始

# 1. 安装(只需一次)
pip install git+https://github.com/wd041216-bit/select-translate.git

# 2. 注入 API Key(只需一次,永久保存)
select-translate --key 你的API_KEY

# 3. 以后随时一行启动
select-translate

API Key 获取:https://ollama.com/settings/keys (免费注册)

或从源码安装
git clone https://github.com/wd041216-bit/select-translate.git
cd select-translate
pip install -e .

# 注入 key
select-translate --key 你的API_KEY

# 启动
select-translate

使用

  1. 在任意应用中选中文字
  2. ⌥⇧T(Option + Shift + T)
  3. 光标旁弹出翻译窗口
  4. 点击任意位置或按 Esc 关闭

自动检测模式

点击菜单栏 🌐 图标 → 勾选 "Auto-detect Selection",选中文字后自动弹出翻译。

首次运行

需要授予终端辅助功能权限(仅首次):

  • 系统设置 → 隐私与安全性 → 辅助功能
  • 添加你使用的终端应用(Terminal / iTerm2 / Warp 等)

工作原理

选中文字 → Accessibility API 读取选区(不修改剪贴板)
        ↓
    联网搜索术语上下文
        ↓
    搜索结果拼入 prompt → deepseek-v4-flash (no-think)
        ↓
    提取翻译 + 所有关键术语解释
        ↓
    动态调整面板高度 → 光标旁弹出结果

不修改剪贴板:优先通过 macOS Accessibility API 直接读取选区文本(AXSelectedText → AXSelectedTextRange + AXStringForRange 两级降级),仅在少数不支持的 app(如某些终端)才使用剪贴板方案。

项目结构

select_translate/
├── __init__.py        # 包入口
├── __main__.py        # python -m select_translate
├── app.py             # 主应用(菜单栏、全局快捷键、选区捕获)
├── panel.py           # 原生浮动面板(NSPanel、淡入淡出、点击外部关闭)
├── translator.py      # Ollama 翻译引擎(联网搜索 + 多术语解析)
└── config.py          # YAML 配置管理

兼容性

应用类型 AXSelectedText AXSelectedTextRange 剪贴板降级
Safari / Chrome / Firefox
Preview / PDF Expert
VS Code / Cursor
Obsidian / Notion
Terminal / iTerm2 / Warp
Zed (GPUI) ⚠️ ⚠️

⚠️ = 部分支持,取决于编辑区域类型

故障排除

症状 原因 解决方法
快捷键不响应 未授予辅助功能权限 系统设置 → 隐私与安全性 → 辅助功能 → 添加终端
翻译结果为空 API Key 未配置 编辑 ~/.select_translate.yaml 填入 Ollama API Key
面板不出现 终端无辅助功能权限 重新授权或重启终端
翻译速度慢 网络延迟或模型响应时间长 检查网络连接;可切换到更快的模型
Zed 中快捷键失效 GPUI 框架消费所有按键事件 已知限制,需使用剪贴板方式或切换到其他编辑器

技术栈

  • macOS 原生 UI — pyobjc (NSPanel, NSStatusBar, CGEventTap)
  • 全局快捷键 — QuickMacHotKey (Carbon Event Manager)
  • 翻译引擎 — Ollama Cloud (deepseek-v4-flash) + web_search
  • 选区捕获 — Accessibility API (AXSelectedText → AXSelectedTextRange → pbpaste 三级降级)

常见问题

Q: 支持哪些应用? A: 几乎所有 macOS 应用:Safari、Chrome、Firefox、Preview、PDF Expert、VS Code、iTerm2、Obsidian、Notion 等。

Q: 翻译速度如何? A: 普通词汇约 2 秒,需要联网搜索的专业术语约 3 秒。

Q: 费用? A: Ollama Cloud 有免费额度,日常阅读论文完全够用。也可以切换到本地 Ollama 模型(零费用)。

Q: 可以翻译其他语言吗? A: 可以,修改配置中的 target_language 即可,如 "ja"(日语)、"en"(英语)等。

License

MIT

About

macOS 论文阅读闭环 — 划词翻译 + 论文术语感知 | 读论文 → 浓缩 PDF + 术语表 → 选中即获上下文翻译 | AX 三级降级 · 动态面板 · 联网搜索 · Glossary 集成

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors