☰
GoldenDict-ng 与 OCR 集成实战指南:剪贴板监控、Capture2Text 与 Tesseract 命令行方案
2026/10/5 2:06:33 网站建设 项目流程
  • 桌面应用

【免费下载链接】goldendict-ng

The Next Generation GoldenDict

项目地址:https://gitcode.com/gh_mirrors/go/goldendict-ng
点击查看免费下载

本文是一篇面向 GoldenDict-ng 用户的 OCR 取词集成指南,系统讲解如何在 Windows、macOS、Linux 三个平台上,让外部 OCR 程序把屏幕上的文字识别结果无缝转发给 GoldenDict-ng,实现"看到即翻译"的跨平台取词体验。读完本文,你将掌握剪贴板监控模式的通用配置方法、Capture2Text 的捕获后动作(post-capture actions)接入、macOS 快捷指令(Shortcuts)方案,以及一条完整的 Linux 命令行截屏 + Tesseract + GoldenDict 自动化流水线,并理解其背后的源码实现原理。

现状与背景:为什么需要 OCR 取词方案

GoldenDict 早期在 Windows 上提供过"鼠标悬停翻译"(word-under-cursor translation)功能,但正如 OCR 指南 所说明的,这套传统技术已经过时,且不具备跨平台兼容性。

更通用、更现代化的思路是:任何支持"捕获后动作"(post-capture actions)的 OCR 程序都可以与 GoldenDict-ng 无缝集成。OCR 程序负责"看见"文字,GoldenDict-ng 负责"解释"文字,二者通过剪贴板或命令行参数完成交接。以下方案虽然以 Capture2Text 等工具为例,但同类工具只要具备剪贴板输出或外部程序调用能力,均可套用同一套思路。

剪贴板监控模式:最通用的集成方式

剪贴板监控模式是一种通用方案,适用于任何支持"把识别结果复制到剪贴板"的 OCR 程序,跨平台(Windows、macOS、Linux)均可工作。

第一步:在 GoldenDict-ng 中启用剪贴板监控

启用方式有两种,任选其一:

  1. 工具栏按钮:点击工具栏上的 📋 按钮,一键切换剪贴板监控的开/关;
  2. 设置界面:打开Edit→Preferences(编辑 → 偏好设置),进入Scan Popup(扫描弹窗)设置区:
    • 勾选Track Clipboard change(跟踪剪贴板变化)——这是剪贴板取词的开关;
    • 可选勾选Start with clipboard monitoring turned on(启动时开启剪贴板监控),让程序启动后自动启用该功能。

从界面定义文件 preferences.ui 可以看到,Scan Popup 设置区中enableClipboardTrack复选框的提示文本为:

"Track clipboard changes when Scanning is enabled. Notice! You should always enable this unless you are on Linux."

即:启用扫描时应始终开启此选项,除非你处于 Linux 平台(Linux 下通常优先使用文本选择(Selection)取词,而不是剪贴板变化)。而startWithScanPopupOn复选框则控制"启动时即开启剪贴板监控"。

第二步:配置 OCR 程序

使用任意 OCR 软件(例如 Capture2Text、OCRSpace、ScreenTranslate 等),并在其设置中把"识别结果复制到系统剪贴板"作为识别后的默认动作。这一步的目的是让 OCR 程序扮演"剪贴板写入者"。

第三步:日常使用流程

  1. 让 GoldenDict-ng 在后台运行,并保持剪贴板监控开启;
  2. 用 OCR 程序截取屏幕区域并识别文字;
  3. OCR 程序把识别文本写入剪贴板后,GoldenDict-ng 自动检测到剪贴板变化,弹出翻译浮窗。

源码级原理:剪贴板变化是如何被捕获的

理解这条链路能帮助你更好地排查问题。整个流程的核心实现如下:

  • 配置项:trackClipboardScan(是否跟踪剪贴板)在 config.cc 中默认值为true,并在 config.hh 中声明为bool成员;设置界面通过 preferences.cc 的ui.enableClipboardTrack->setChecked(...)读取、通过第 528 行写回;
  • 事件入口:主窗口的MainWindow::clipboardChange( QClipboard::Mode m )槽函数(见 mainwindow.cc)是剪贴板变化的监听入口。在 X11(WITH_X11)环境下,当m == QClipboard::Clipboard时,它先检查cfg.preferences.trackClipboardScan,若为 false 直接返回;否则调用scanPopup->translateWordFromPrimaryClipboard();
  • 取词动作:ScanPopup::translateWordFromPrimaryClipboard()最终调用ScanPopup::translateWordFromClipboard( QClipboard::Clipboard )(见 scanpopup.cc),该函数读取剪贴板纯文本内容(非空才继续),随后调用translateWord( str )发起翻译并显示弹窗。

需要注意的是,translateWordFromClipboard对 Linux Wayland 会话下的QClipboard::Selection模式会直接返回(见 scanpopup.cc),这是平台差异带来的限制,配置时需要注意。

剪贴板监控模式的优点

  • 与任何支持剪贴板输出的 OCR 工具兼容;
  • 跨平台(Windows、macOS、Linux);
  • 无需配置命令行参数或可执行文件路径;
  • 集成方式简单、灵活。

Capture2Text:Windows 上的经典方案

Capture2Text 是一款老牌 OCR 取词工具,支持在捕获完成后调用外部可执行程序,因此可以直接把 GoldenDict 设为它的后处理程序。

下载与基本配置

  • 官方使用文档:Capture2Text 官方站点(本文写作时项目主页为https://capture2text.sourceforge.net/);
  • 下载地址:GoldenDict-ng 维护者提供的预编译版本(https://github.com/xiaoyifang/Capture2Text/releases/tag/prerelease-20220806)。

配置方法非常直观:在 Capture2Text 的 Output action(输出动作)中,把Call Executable(调用可执行程序)设为 GoldenDict 可执行文件路径,并附上捕获文本占位符:

path_to_the_GD_executable\GoldenDict.exe "${capture}"

配置完成后,按下Win+Q框选屏幕区域。捕获到单词后,Capture2Text 会把这个词直接转发给 GoldenDict;只要 GoldenDict 的弹窗(Popup)功能处于开启状态,翻译弹窗就会立即出现:

热键配置

Capture2Text 的热键可以在其设置界面中自由调整,以便贴合你的使用习惯:

免框选取词:Forward Text Line Capture

除了框选区域,Capture2Text 还支持Forward Text Line Capture(文本行捕获):无需框选,直接按Win+W即可捕获鼠标光标附近的整行文字。如果你只想翻译一个单词,建议启用"First word only"(仅取第一个单词)选项,这样只会捕获单个词,翻译结果更精准。

在 Linux 上使用 Capture2Text

Capture2Text 官方并没有 Linux 版本,但已有社区移植版(Linux port)。GoldenDict-ng 维护者本人也维护了一个可用于 Linux 的分支(https://github.com/xiaoyifang/Capture2Text),该移植工作参考了 GSam 的 Capture2Text Linux 移植版以及 goldendict 官方 issue 讨论(#1445)。在 Linux 桌面上使用 Capture2Text 移植版的界面效果如下:

Shortcuts.app 与 Apple 原生 OCR(macOS)

这是剪贴板监控模式在 macOS 上的专属实现,依赖 macOS 自带的"快捷指令"(Shortcuts.app)能力。

先按上文说明在 GoldenDict-ng 中启用剪贴板监控,然后在 Shortcuts.app 中创建一个快捷指令(Shortcut),让它在交互式截屏之后修改剪贴板内容——即把系统 OCR 识别出的文字写入剪贴板。GoldenDict-ng 检测到剪贴板变化后即弹出翻译:

在这个快捷指令里,你还可以追加额外的处理能力,比如"只取第一个词",让识别结果更聚焦于单个单词:

Tesseract 命令行方案(Linux)

在 Linux 上,可以把"命令行截屏 → Tesseract OCR → 结果传给 goldendict"串成一条脚本流水线。官方文档以 KDE 的 spectacle 和 Wayland/wlroots 的 grim 为例,给出如下完整脚本:

#!/usr/bin/env bash set -e case $DESKTOP_SESSION in sway) grim -g "$(slurp)" /tmp/tmp.just_random_name.png ;; plasmawayland | plasma) spectacle --region --nonotify --background \ --output /tmp/tmp.just_random_name.png ;; *) echo "Failed to know desktop type" exit 1 ;; esac # note that tesseract will apppend .txt to output file tesseract /tmp/tmp.just_random_name.png /tmp/tmp.just_random_name --oem 1 -l eng goldendict "$(cat /tmp/tmp.just_random_name.txt)" rm /tmp/tmp.just_random_name.png rm /tmp/tmp.just_random_name.txt

脚本逻辑拆解如下:

  1. 依据$DESKTOP_SESSION判断桌面环境,选择对应的截屏工具:Sway(Wayland)用grim -g "$(slurp)"交互框选区域;Plasma(KDE)用spectacle --region区域截屏,--nonotify关闭通知、--background后台执行;
  2. 把截屏写入临时文件/tmp/tmp.just_random_name.png;
  3. 调用tesseract对图片做 OCR,--oem 1指定 OCR 引擎模式(LSTM 引擎),-l eng指定识别语言为英语。注意:Tesseract 会在输出文件后自动追加.txt扩展名,因此识别结果落在/tmp/tmp.just_random_name.txt;
  4. 用goldendict "$(cat ...)"把识别出的文本作为命令行参数传给 GoldenDict——GoldenDict-ng 支持命令行传词直接发起翻译(这也是 clipboardChange 注释中提到的取词来源之一);
  5. 最后清理临时文件。

使用步骤

Step 1:安装依赖软件

按你的系统安装以下工具:

  • OCR 引擎:tesseract 及其语言包;
  • 截屏工具(按桌面环境选择):
    • KDE(Plasma):spectacle;
    • Sway(Wayland):grim 和 slurp;
  • 其他:bash 运行环境。

Ubuntu/Debian 示例安装命令:

sudo apt update sudo apt install tesseract-ocr tesseract-ocr-eng tesseract-ocr-chi-sim spectacle

说明:chi-sim是简体中文语言包。示例脚本只用了英语eng,但建议一并安装中文包,便于后续扩展中文识别。

Step 2:创建脚本文件

在主目录下新建脚本文件,例如ocr_translate.sh:

nano ~/ocr_translate.sh

把上面的脚本代码复制进去(或手动输入),保存并退出(Nano 中按Ctrl+O、回车,再按Ctrl+X)。

Step 3:赋予执行权限
chmod +x ~/ocr_translate.sh
Step 4:运行脚本
  1. 先启动 GoldenDict(让它后台运行);
  2. 执行脚本:
./ocr_translate.sh

操作体验:如果你使用 KDE,鼠标会变成十字准星,拖拽框选想翻译的文字区域。脚本会自动完成识别,GoldenDict 随即在弹窗中显示该词的释义。

进阶优化技巧

设置全局快捷键(最推荐的使用方式)

在系统设置 → 快捷键(Shortcuts)中添加一个全局快捷键(例如Ctrl+Alt+G),指向脚本的绝对路径(如/home/your_username/ocr_translate.sh)。此后遇到不认识的单词,只需按下快捷键即可完成框选、识别、翻译整个流程。

支持中文识别

如需识别中文,把脚本中的 tesseract 一行修改为:

tesseract /tmp/tmp.just_random_name.png /tmp/tmp.just_random_name --oem 1 -l eng+chi_sim

即把-l eng改为-l eng+chi_sim(前提是已安装tesseract-ocr-chi-sim中文语言包)。

GNOME 桌面用户

脚本里的case分支不会匹配 GNOME 桌面,可以追加一条 GNOME 截屏命令,或使用更通用的写法:

gnome-screenshot -a -f /tmp/tmp.just_random_name.png

将这一行放入case的 GNOME 分支,即可在 GNOME 下同样实现框选截屏。

方案对比与选型建议

方案适用平台集成方式特点
剪贴板监控模式Windows / macOS / LinuxOCR 程序写剪贴板,GoldenDict-ng 自动监听最通用,不依赖命令行参数,任何支持剪贴板输出的 OCR 工具均可接入
Capture2TextWindows(有 Linux 移植版)"Call Executable" 捕获后动作直传 GoldenDict交互体验好,支持免框选的行捕获和"仅取首词"
Shortcuts.app + Apple OCRmacOS快捷指令截屏后写剪贴板系统原生能力,可叠加文本处理步骤
Tesseract 命令行Linuxshell 脚本串联截屏 → OCR → goldendict完全可控,无图形界面依赖,适合进阶用户自动化

选型时只需抓住一条主线:OCR 负责识别,GoldenDict-ng 负责翻译,二者之间的"接口"要么是剪贴板,要么是命令行参数。据此,几乎任何"支持复制识别结果"或"支持调用外部程序"的 OCR 工具(如 OCRSpace、ScreenTranslate 等)都可以通过本文介绍的模式与 GoldenDict-ng 集成,实现跨平台的"看到即翻译"体验。

  • 桌面应用

【免费下载链接】goldendict-ng

The Next Generation GoldenDict

项目地址:https://gitcode.com/gh_mirrors/go/goldendict-ng
点击查看免费下载
上一篇:终极指南:3个高效方法让你轻松保存抖音高清无水印视频
下一篇:B站缓存视频合并工具:如何突破离线观看的碎片化限制?

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询