ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

GoldenDict-ng 与 OCR 集成实战指南:剪贴板监控、Capture2Text 与 Tesseract 命令行方案

GoldenDict-ng 与 OCR 集成实战指南:剪贴板监控、Capture2Text 与 Tesseract 命令行方案 桌面应用【免费下载链接】goldendict-ngThe 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 中启用剪贴板监控启用方式有两种任选其一工具栏按钮点击工具栏上的 按钮一键切换剪贴板监控的开/关设置界面打开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 程序扮演剪贴板写入者。第三步日常使用流程让 GoldenDict-ng 在后台运行并保持剪贴板监控开启用 OCR 程序截取屏幕区域并识别文字OCR 程序把识别文本写入剪贴板后GoldenDict-ng 自动检测到剪贴板变化弹出翻译浮窗。源码级原理剪贴板变化是如何被捕获的理解这条链路能帮助你更好地排查问题。整个流程的核心实现如下配置项trackClipboardScan是否跟踪剪贴板在 config.cc 中默认值为true并在 config.hh 中声明为bool成员设置界面通过 preferences.cc 的ui.enableClipboardTrack-setChecked(...)读取、通过第 528 行写回事件入口主窗口的MainWindow::clipboardChange( QClipboard::Mode m )槽函数见 mainwindow.cc是剪贴板变化的监听入口。在 X11WITH_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无需配置命令行参数或可执行文件路径集成方式简单、灵活。Capture2TextWindows 上的经典方案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}配置完成后按下WinQ框选屏幕区域。捕获到单词后Capture2Text 会把这个词直接转发给 GoldenDict只要 GoldenDict 的弹窗Popup功能处于开启状态翻译弹窗就会立即出现热键配置Capture2Text 的热键可以在其设置界面中自由调整以便贴合你的使用习惯免框选取词Forward Text Line Capture除了框选区域Capture2Text 还支持Forward Text Line Capture文本行捕获无需框选直接按WinW即可捕获鼠标光标附近的整行文字。如果你只想翻译一个单词建议启用First word only仅取第一个单词选项这样只会捕获单个词翻译结果更精准。在 Linux 上使用 Capture2TextCapture2Text 官方并没有 Linux 版本但已有社区移植版Linux port。GoldenDict-ng 维护者本人也维护了一个可用于 Linux 的分支https://github.com/xiaoyifang/Capture2Text该移植工作参考了 GSam 的 Capture2Text Linux 移植版以及 goldendict 官方 issue 讨论#1445。在 Linux 桌面上使用 Capture2Text 移植版的界面效果如下Shortcuts.app 与 Apple 原生 OCRmacOS这是剪贴板监控模式在 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脚本逻辑拆解如下依据$DESKTOP_SESSION判断桌面环境选择对应的截屏工具SwayWayland用grim -g $(slurp)交互框选区域PlasmaKDE用spectacle --region区域截屏--nonotify关闭通知、--background后台执行把截屏写入临时文件/tmp/tmp.just_random_name.png调用tesseract对图片做 OCR--oem 1指定 OCR 引擎模式LSTM 引擎-l eng指定识别语言为英语。注意Tesseract 会在输出文件后自动追加.txt扩展名因此识别结果落在/tmp/tmp.just_random_name.txt用goldendict $(cat ...)把识别出的文本作为命令行参数传给 GoldenDict——GoldenDict-ng 支持命令行传词直接发起翻译这也是 clipboardChange 注释中提到的取词来源之一最后清理临时文件。使用步骤Step 1安装依赖软件按你的系统安装以下工具OCR 引擎tesseract 及其语言包截屏工具按桌面环境选择KDEPlasmaspectacleSwayWaylandgrim 和 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.shnano ~/ocr_translate.sh把上面的脚本代码复制进去或手动输入保存并退出Nano 中按CtrlO、回车再按CtrlX。Step 3赋予执行权限chmod x ~/ocr_translate.shStep 4运行脚本先启动 GoldenDict让它后台运行执行脚本./ocr_translate.sh操作体验如果你使用 KDE鼠标会变成十字准星拖拽框选想翻译的文字区域。脚本会自动完成识别GoldenDict 随即在弹窗中显示该词的释义。进阶优化技巧设置全局快捷键最推荐的使用方式在系统设置 → 快捷键Shortcuts中添加一个全局快捷键例如CtrlAltG指向脚本的绝对路径如/home/your_username/ocr_translate.sh。此后遇到不认识的单词只需按下快捷键即可完成框选、识别、翻译整个流程。支持中文识别如需识别中文把脚本中的 tesseract 一行修改为tesseract /tmp/tmp.just_random_name.png /tmp/tmp.just_random_name --oem 1 -l engchi_sim即把-l eng改为-l engchi_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-ngThe Next Generation GoldenDict项目地址https://gitcode.com/gh_mirrors/go/goldendict-ng点击查看免费下载相关推荐GoldenDict Next 弹窗取词Scan Popup完全指南剪贴板监控、选区取词与 OCR 联动GoldenDict Next 弹窗取词Scan Popup完全指南剪贴板监控、选区取词与 OCR 联动 弹窗取词Scan Popup / Popup桌面应用Goldendict-ng 剪贴板监听器实现解析跨平台差异处理与 macOS 轮询方案Goldendict ng 剪贴板监听器实现解析跨平台差异处理与 macOS 轮询方案 导读 Goldendict ngThe Next Generatio桌面应用fish-shell 剪贴板粘贴函数 fish_clipboard_paste 完全指南系统剪贴板与命令行输入的桥接fish shell 剪贴板粘贴函数 fish_clipboard_paste 完全指南系统剪贴板与命令行输入的桥接 导读 fish_clipboard_paCLI开发工具上一篇终极指南3个高效方法让你轻松保存抖音高清无水印视频下一篇B站缓存视频合并工具如何突破离线观看的碎片化限制创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表