尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

LunaTranslator 在 HOOK 模式下临时使用 OCR:一次OCR与再次OCR按钮/快捷键完全指南

LunaTranslator 在 HOOK 模式下临时使用 OCR:一次OCR与再次OCR按钮/快捷键完全指南 LunaTranslator 在 HOOK 模式下临时使用 OCR一次OCR与再次OCR按钮/快捷键完全指南【免费下载链接】LunaTranslator视觉小说翻译器 / Visual Novel Translator项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslatorLunaTranslator 是一款面向视觉小说Visual Novel / Galgame的实时翻译工具。在实际游玩中HOOK文本钩子模式偶尔会漏掉游戏里的菜单、选择肢选项、系统提示等非对话类文本而为此频繁地在 HOOK 模式与 OCR 模式之间切换十分繁琐。本文基于官方文档 在HOOK模式下临时使用OCR 展开结合仓库源码系统讲解「进行一次OCR」「再次进行OCR」两个内置按钮与快捷键的原理、用法与注意点帮助你在不中断 HOOK 自动提取的前提下随手完成一次性的屏幕 OCR 识别。为什么要临时使用 OCRHOOK 模式的典型缺漏HOOK 模式通过注入游戏进程、挂钩文本输出函数来截取文字优点是实时、稳定、不依赖截图。但并非游戏中所有文字都经过可挂钩的文本渲染路径菜单游戏主菜单、设置菜单中的文字往往由 UI 系统直接绘制选择肢剧情分支选项常使用独立的控件或图片文字系统提示存档/读档确认框、教程气泡等一次性 UI 文本。这类文字 HOOK 通常无法捕获。如果切到 OCR 模式则会失去 HOOK 模式的持续自动翻译能力且切换过程繁琐。LunaTranslator 为此内置了「只识别一次」的临时 OCR 方案在 HOOK 模式下选取一次屏幕范围对该范围执行一次 OCR识别结果送入既有的文本处理与翻译管线随后无缝回到 HOOK 自动提取状态。按钮与快捷键两个内置动作进行一次OCRocr_once默认在按钮栏激活use: true图标为fa.crop裁剪/选区图标快捷键默认绑定为_26详见下文。点击后进入选区状态拖拽框选屏幕上的文字区域松手即对该区域执行一次OCR然后自动退出 OCR 选区继续由 HOOK 模式接管文本。官方文档特别强调了一个容易踩坑的点由于这个按钮的图标很多原本就想要使用OCR的人误以为这就是OCR的按钮结果仍在HOOK模式下就使用这个按钮选取完范围后却不会进行自动翻译。实际上当切换到OCR模式后OCR模式的按钮才会显示出来。也就是说进行一次OCR与 OCR 模式下「选取OCR范围」按钮selectocrrange的图标完全相同均为fa.crop容易混淆。二者本质不同动作所属模式行为选取OCR范围selectocrrange仅在 OCR 模式下显示belong: [ocr]框选范围后持续对该区域进行循环 OCR 识别并自动翻译进行一次OCRocr_once所有模式可用默认激活框选范围后只执行一次 OCR然后退回原模式在 defaultconfig/config.json 中可以看到两者的定义selectocrrange: { use: true, tip: 选取OCR范围, belong: [ocr], icon: fa.crop, align: 2 }, ocr_once: { use: true, tip: 进行一次OCR, icon: fa.crop, align: 2 }, ocr_once_follow: { use: false, tip: 再次进行OCR, icon: fa.spinner, align: 2 }注意selectocrrange带有belong: [ocr]约束只有切换到 OCR 模式才会显示而ocr_once没有该约束因此在 HOOK 模式下同样可用这正是它存在的意义。再次进行OCRocr_once_follow若选择肢等文本出现在固定位置不想每次都重新框选可以使用再次进行OCR图标fa.spinner默认use: false需在设置中手动开启或通过快捷键_26_1触发。它会沿用上一次「进行一次OCR」框选的范围直接执行一次 OCR无需再次选区。两个按钮的默认快捷键对应关系定义在 gui/setting/hotkey.py_26: gobject.base.translation_ui.ocr_once_signal.emit, ... _26_1: lambda: gobject.base.translation_ui.ocr_once_follow_rect 的使用在 defaultconfig/config.json 的快捷键名称表中分别登记为进行一次OCR_26与再次进行OCR_26_1你可以进入「设置 → 快捷键」为它们绑定自己习惯的按键组合。源码视角一次OCR的执行链路从源码看进行一次OCR的实现位于 gui/translatorUI.pydef ocr_once_function(self): def ocroncefunction(rect, imgNone): self.ocr_once_follow_rect rect self.ocr_do_function(rect, img) rangeselct_function(ocroncefunction, hideshowTrue) threader def ocr_do_function(self, rect, imgNone): if not img: img imageCut(0, rect) result ocr_run(img) result result.maybeerror() if result: gobject.base.textgetmethod(result, is_auto_runFalse)关键链路可拆解为四步选区rangeselct_function(ocroncefunction, hideshowTrue)弹出与 OCR 模式相同的选区控件拖拽确定rect屏幕矩形记忆范围回调函数将本次rect存入self.ocr_once_follow_rect——这正是再次进行OCR无需重新选区、直接沿用上次范围的原因截图与识别ocr_do_function带threader装饰器运行在独立线程避免卡 UI调用imageCut(0, rect)截取指定区域再交给ocr_run(img)调用当前配置的 OCR 引擎本地 OCR 或在线 OCR API 均可接入文本管线识别结果通过gobject.base.textgetmethod(result, is_auto_runFalse)送入与 HOOK 文本相同的处理链——即会经历文本预处理、分词、查词典、翻译、显示等既有环节且不会触发自动运行is_auto_runFalse因此在临时 OCR 后不会改变 HOOK 模式的持续翻译状态。按钮绑定位于 gui/translatorUI.py(ocr_once, self.ocr_once_signal.emit), ( ocr_once_follow, lambda: self.ocr_do_function(self.ocr_once_follow_rect), ),ocr_once按钮发出ocr_once_signalPyQt 信号由ocr_once_function处理ocr_once_follow则直接使用已记忆的self.ocr_once_follow_rect初始为None若此前从未进行过一次 OCR则此功能无可用的范围。信号的定义与连接见 gui/translatorUI.py 与 gui/translatorUI.py。值得一提的是同样的ocr_once_signal机制也存在于查词窗口 gui/showword.py并在快捷键表中登记为OCR_查词39方便在查词窗口中对屏幕任意位置做一次性 OCR 查词与主界面的一次性 OCR 思路一脉相承。推荐使用流程结合上述原理处理「HOOK 模式漏抓选择肢/菜单」的标准操作流程如下保持 HOOK 模式运行确认游戏文字正常自动提取点击按钮栏中的进行一次OCRfa.crop图标或按下对应快捷键_26在游戏画面上框选选择肢/菜单文字区域松手后自动对该区域执行一次 OCR识别文本立即进入翻译管线显示译文游戏继续推进HOOK 模式无缝恢复自动提取若选择肢固定在相同位置后续可直接按再次进行OCR_26_1沿用上次选区重复识别无需再手动框选。注意事项不要混淆两个同名图标按钮进行一次OCR是一次性动作执行完即退回原模式若要持续识别某个区域并自动翻译请切换到 OCR 模式使用选取OCR范围该按钮仅在 OCR 模式下显示。再次进行OCR依赖上一次范围必须先成功执行过一次进行一次OCR源码中会保存ocr_once_follow_rect否则无可用选区。临时识别的文本不会开启自动翻译循环textgetmethod(..., is_auto_runFalse)表明该次识别是一次性投喂不会抢占 HOOK 模式的持续提取状态这是无缝衔接的底层保证。快捷键可自定义_26/_26_1为默认登记可在设置中按个人习惯重新绑定相关定义见 defaultconfig/config.json。小结「进行一次OCR」与「再次进行OCR」是 LunaTranslator 为 HOOK 模式补齐短板的精巧设计它把 OCR 能力以一次性工具的形式无缝嵌入持续翻译流程既免去了频繁切换模式的麻烦又通过记忆选区ocr_once_follow_rect让固定位置的重复文本如选择肢只需一次框选即可反复识别。理解其按钮图标、模式归属与源码执行链路能让你在实战中准确使用这一功能避免把一次性 OCR 误当作持续 OCR 的常见误区。更多相关用法可参考官方文档目录下的 OCR参数说明、常用OCR配置 以及 OCR API 接入指南配合本功能可以构建更完整的HOOK 临时OCR混合翻译工作流。【免费下载链接】LunaTranslator视觉小说翻译器 / Visual Novel Translator项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslator创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表