LunaTranslator 基本用法指南:HOOK 模式、OCR 模式与快捷启动游戏全流程详解
发布时间:2026/9/14 14:45:15 作者:尧图编辑部 阅读量:1,286

LunaTranslator 基本用法指南HOOK 模式、OCR 模式与快捷启动游戏全流程详解【免费下载链接】LunaTranslator视觉小说翻译器 / Visual Novel Translator项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslator本文是 LunaTranslator视觉小说翻译器的基本使用教程系统讲解三种最常用的文本获取方式HOOK 模式注入游戏进程读取文本、OCR 模式识别图像文字以及快捷启动游戏并自动 HOOK的拖拽玩法。阅读完本文你将掌握从选择进程、注入游戏、筛选文本行到开始翻译的完整操作链路并能区分 HOOK 与 OCR 各自的适用场景理解为什么某些游戏会出现内嵌翻译按钮而另一些没有。LunaTranslator 是一款面向视觉小说Visual Novel的翻译软件其核心工作链路是先获取游戏文本再调用翻译引擎输出译文。文本获取环节决定了翻译体验的上限而docs/cht/basicuse.md正是围绕这一环节撰写的入门指南。本文以该文档为骨架结合仓库源码深入解释每一步操作背后的实现原理。一、HOOK 模式注入游戏进程读取文本HOOK 模式是 LunaTranslator 最常用的文本获取方式适用于已经启动的游戏进程。其原理是通过注入动态链接库DLL到游戏进程中挂钩Hook游戏内部文本输出相关的 API 调用从而窃听游戏渲染文本时的数据流。1.1 选择游戏进程打开 LunaTranslator 主界面后点击工具列中的选择游戏进程按钮弹出进程选择窗口AttachProcessDialog从列表中选取目标游戏的进程即可。进程选择窗口的实现位于 attachprocessdialog.py窗口标题会实时显示当前权限状态选择进程_当前权限_管理员/非管理员提示你是否拥有注入所需权限如果进程列表中没有看到想附加的进程窗口内提供了点击此按钮后点击游戏窗口的交互按钮可以直接用鼠标点击游戏窗口来定位其进程对应selectwindowcallback回调内部通过mouseselectwindow实现若仍然失败源码中的提示文案明确建议尝试使用管理员权限运行本软件。1.2 确认注入与弹出选择文本窗口点击确认后游戏会被添加到软件的游戏列表中同时注入动作开始执行。此时会自动弹出选择文本窗口hookselectdialog如果之后想再次打开也可以通过工具列对应按钮随时调出。从源码看注入与文本回调的底层接口定义在 texthook.py 中texthook类在initdll()中加载LunaHost32.dll/LunaHost64.dll根据目标进程位数自动选择并通过Luna_ConnectProcess、Luna_InsertHookCode、Luna_FindHooks等原生函数完成进程连接、Hook 代码插入和候选地址搜索。文本数据通过OutputCallbackhandle_output回调回传这正是选择文本窗口中出现候选文本行的数据来源。关联阅读HOOK 设置详解如文本编码、偏移量等高级参数1.3 让游戏显示文本并挑选文本行注入完成后让游戏运行一下以显示一些文字。此时选择文本界面中会涌现出若干候选文本行——这些来自游戏内部不同线程或不同 API 的输出。你需要从中选中符合游戏文本的那一行翻译随即开始。这里有一个常见困惑为什么会有多个候选因为一个游戏进程内部往往有多个可能输出文本的调用点例如日志输出、对话框渲染、系统消息等HOOK 会尽可能多地捕获它们再由用户人工筛选出真正对应游戏剧情文本的那一行。选中后该文本行会随游戏对话推进持续更新并送入翻译管线。1.4 内嵌与显示两列按钮的区别选择文本窗口的每一行候选文本后面会出现操作按钮列若游戏支持内嵌翻译会出现「内嵌」按钮——即直接把译文渲染进游戏窗口内部相当于游戏自带汉化/翻译显示效果否则只有「显示」按钮即译文在 LunaTranslator 自身的翻译界面中显示。是否支持内嵌取决于游戏文本渲染引擎是否可被内嵌式挂钩。texthook源码中通过Luna_CheckIsUsingEmbed检测当前文本线程是否已启用内嵌并使用Luna_UseEmbed、Luna_EmbedCallback实现内嵌文本的注入与回读在嵌入式渲染接口层面还有专门的渲染实现参见 rendertext 目录下的textbrowser.py、webview.py等模块。若游戏无法安全内嵌则只提供「显示」模式。二、OCR 模式识别图像中的文字部分游戏无法通过 HOOK 获取文本例如使用了加密/自绘文本引擎或 HOOK 点难以定位此时可以改用OCR 模式让 LunaTranslator 直接看图识字。2.1 切换到 OCR 模式在主界面上将文本来源切换为 OCR 模式sourcestatus2中的ocr文本源然后框选一个识别区域。之后软件会对该区域进行持续自动识别只要区域内出现文字变化就自动截取图像、运行 OCR、识别出文本并翻译。OCR 文本源的实现位于 ocrtext.py区域框选通过rangeadjust区域调整控件完成每个区域对应一个rangemanger实例截图与预处理在imageCutEx中完成若开启了use_ocr_preprocess配置还会先加载用户自定义的ocr_preprocess.py预处理脚本再送入识别识别调用ocr_run执行具体识别引擎由 ocrengines 目录下的实现提供本地引擎与云端 API 均可。关联阅读OCR 参数配置、OCR 引擎接入 API2.2 易错点临时识别按钮 vs 持续识别按钮文档特别强调了一个新手极易踩坑的细节OCR 模式下后一个默认图标相同的按钮只用于临时选取并识别一次图像而不是自动持续识别。也就是说界面上存在两个外观相近的按钮按钮行为适用场景OCR 模式按钮框选区域后持续自动识别并翻译正常游玩、文字不断更新的场景临时识别按钮只框选并识别一次该图像临时看一句静态文字、菜单说明等不要用错按钮否则你会发现游戏剧情推进时翻译文本并不会自动更新。三、快捷启动游戏并自动 HOOK拖拽一步到位前两种方式都要求游戏先启动而快捷启动则把启动与注入合并成一步启动软件后将游戏程序.exe用鼠标直接拖拽到 LunaTranslator 的窗口中松开鼠标游戏就会被自动添加到软件的游戏列表中。拖拽支持在源码中有多处实现例如 dialog.py 中的dragEnterEvent/dropEvent接受含 URL 的拖拽事件并批量添加游戏以及 v3.py 中对图片素材的拖拽添加。拖入后发生三件事自动添加到游戏列表通过addgamebatch_x将拖入的路径规范化并加入游戏列表自动转区启动软件会根据游戏所属区域调用转区工具Locale Emulator 等以正确区域设置启动游戏避免日文游戏在中文系统下出现乱码。该逻辑在 localetools.py 的localeswitchedrun中实现先通过windows.GetBinaryType判断游戏位数再依据游戏的launch_method配置选择启动器Launcher最终以le_internal内置 Locale Emulator等方式拉起进程自动 HOOK 游戏游戏启动后立刻执行注入流程。随后同样会弹出选择文本窗口后续操作与 HOOK 模式完全一致运行游戏显示文本 → 挑选候选文本行 → 开始翻译。关联阅读模拟器游戏支持拖拽方式同样适用于模拟器场景的扩展用法四、两种模式的选择建议与实战小结维度HOOK 模式OCR 模式前置条件游戏已启动或拖拽快捷启动游戏已启动并可见文本获取注入 DLL 挂钩文本 API截屏 OCR 识别文本质量原始文本准确无噪声受字体、背景干扰可能有识别误差速度快实时回调较慢需截图与识别适用场景绝大多数可注入游戏无法 HOOK 的加密/自绘引擎游戏完整上手流程回顾启动游戏与 LunaTranslator选择HOOK 模式选中游戏进程并确认注入游戏显示文本后在选择文本窗口勾选正确的文本行支持内嵌的游戏可开启「内嵌」翻译否则使用「显示」模式阅读译文无法 HOOK 时切换到OCR 模式框选识别区域注意别用成临时识别按钮想一步到位时直接把游戏 .exe 拖进软件窗口等待自动转区启动与自动 HOOK。若想进一步优化翻译体验可继续阅读 文本处理、翻译优化 与 HOOK 设置 等进阶文档。【免费下载链接】LunaTranslator视觉小说翻译器 / Visual Novel Translator项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslator创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考