diff --git a/LunaTranslator/LunaTranslator/gui/translatorUI.py b/LunaTranslator/LunaTranslator/gui/translatorUI.py index 86f5a463..5c050d61 100644 --- a/LunaTranslator/LunaTranslator/gui/translatorUI.py +++ b/LunaTranslator/LunaTranslator/gui/translatorUI.py @@ -1283,21 +1283,18 @@ class TranslatorWindow(resizableframeless): hwnd = windows.GetForegroundWindow() hwndpid = windows.GetWindowThreadProcessId(hwnd) ismyprocbutnotmainuiforeground = hwndpid == os.getpid() and hwnd != self.winid - onlychecktitle = ( - globalconfig["mousetransparent"] or ismyprocbutnotmainuiforeground - ) - if onlychecktitle: - usegeo = self.titlebar.geometry() - btn: QWidget = self.titlebar.buttons["mousetransbutton"] - if ( - globalconfig["mousetransparent"] - and (not btn.isVisible()) - and (btn.reflayout is not None) - ): - usegeo = self.mousetranscheckrect - return usegeo.contains(self.mapFromGlobal(QCursor.pos())) - else: - return self.geometry().contains(QCursor.pos()) + + if ismyprocbutnotmainuiforeground: + return False + usegeo = self.titlebar.geometry() + btn: QWidget = self.titlebar.buttons["mousetransbutton"] + if ( + globalconfig["mousetransparent"] + and (not btn.isVisible()) + and (btn.reflayout is not None) + ): + usegeo = self.mousetranscheckrect + return usegeo.contains(self.mapFromGlobal(QCursor.pos())) def __betterenterevent(self): if self._isentered: @@ -1307,6 +1304,14 @@ class TranslatorWindow(resizableframeless): self._isentered = True self.enterfunction() + def leaveEvent(self, e): + super().leaveEvent(e) + self.dodelayhide(None) + + def enterEvent(self, e: QEvent): + super().enterEvent(e) + self.enterfunction(delay=-1) + @threader def dodelayhide(self, delay): enter_sig = uuid.uuid4() @@ -1327,7 +1332,8 @@ class TranslatorWindow(resizableframeless): def enterfunction(self, delay=None): self.titlebar.show() self.set_color_transparency() - + if delay == -1: + return self.dodelayhide(delay) def resizeEvent(self, e: QResizeEvent): diff --git a/LunaTranslator/files/lang/zh.json b/LunaTranslator/files/lang/zh.json index 6d00aec5..b4f3344c 100644 --- a/LunaTranslator/files/lang/zh.json +++ b/LunaTranslator/files/lang/zh.json @@ -842,5 +842,8 @@ "按键": "", "事件": "", "按下": "", - "松开": "" + "松开": "", + "v0.10pre1(支持gpt词典)": "", + "prompt格式(需要根据模型版本决定)": "", + "英文": "" } \ No newline at end of file diff --git a/docs/zh/gooduseocr.md b/docs/zh/gooduseocr.md index 4c6f0fbc..01427297 100644 --- a/docs/zh/gooduseocr.md +++ b/docs/zh/gooduseocr.md @@ -1,6 +1,6 @@ -## 极大改善OCR模式体验的设置 +## OCR模式绑定游戏窗口 -一个非常重要,能极大改善OCR体验的设置:**绑定窗口** +默认已激活`选取OCR范围后自动绑定窗口`,当范围框的四个顶点同属于某个窗口HWND时,会自动绑定到该窗口上。 一般来说,用其他OCR软件时,一个很折磨人的地方就是,经常需要留个神注意游戏窗口和翻译窗口的位置。可能翻译窗口和截图区域相交,或者有时游戏窗口要切到后台,这时候都很烦 @@ -32,6 +32,4 @@ 以及一些其他记不太住的优化,都需要绑定窗口才能使用。 -所以,当绑定了游戏窗口,哪怕是仅使用OCR不使用HOOK,其实也是能比一般的其他软件有更好的体验的。 - -但不绑定窗口,那这个OCR模式不就和别的OCR软件没区别了吗?我专门为此做了非常多的优化,但可能是因为这个设置似乎从来没有在其他同类OCR软件上看到过,所以没太有人注意这个功能的意义,对此我感到非常痛心。因此特地说一下。 \ No newline at end of file +所以,当绑定了游戏窗口,哪怕是仅使用OCR不使用HOOK,其实也是能比一般的其他软件有更好的体验的。 \ No newline at end of file diff --git a/docs/zh/guochandamoxing.md b/docs/zh/guochandamoxing.md index 9e28ec1b..7f1e50f9 100644 --- a/docs/zh/guochandamoxing.md +++ b/docs/zh/guochandamoxing.md @@ -107,7 +107,7 @@ -### 不兼容的专用接口 +### 特定平台的专用接口 #### 外国大模型接口 diff --git a/docs/zh/ocrparam.md b/docs/zh/ocrparam.md index 67816fee..17b63bd1 100644 --- a/docs/zh/ocrparam.md +++ b/docs/zh/ocrparam.md @@ -1,18 +1,8 @@ ## OCR自动化执行方法的参数含义 -![img](https://image.lunatranslator.org/zh/ocrauto.png) - -#### 文本相似度阈值 - -OCR的结果是不稳定的,经常对于图片的微小扰动会使文本发生微小变化,导致翻译也会连带重新翻译。 - -不管使用哪种自动化方法,每次调用OCR后,都会比较本次OCR的结果和上一次OCR的结果(编辑距离),当编辑距离大于阈值时,才会输出文本。 - -## 自动化执行方法 - ### 分析图像更新 -这个方法会使用参数“图像稳定性阈值”“图像一致性阈值” +这个方法会使用参数“图像稳定性阈值”“图像一致性阈值”“文本相似度阈值” #### 1. 图像稳定性阈值 @@ -30,14 +20,21 @@ OCR的结果是不稳定的,经常对于图片的微小扰动会使文本发 如果OCR频率过快,可以适当提高该值;反之如果太过迟钝,可以适当降低该值。 +#### 3. 文本相似度阈值 + +OCR的结果是不稳定的,经常对于图片的微小扰动会使文本发生微小变化,导致翻译也会连带重新翻译。 + +每次调用OCR后,都会比较本次OCR的结果和上一次OCR的结果(编辑距离),当编辑距离大于阈值时,才会输出文本。 + + ### 周期执行 -这个方法会依据“执行周期”来周期执行 +这个方法会依据“执行周期”来周期执行,并采用“文本相似度阈值”来避免翻译相同的文本。 ### 分析图像更新+周期执行 -结合上述两种方法,当根据至少每“执行周期”的时间间隔都会执行一次OCR。且也会根据“分析图像更新”在间隔内进行OCR,间隔内的OCR会重置间隔的计时。 +结合上述两种方法,当根据至少每“执行周期”的时间间隔都会执行一次OCR,并采用“文本相似度阈值”来避免翻译相同的文本。且也会根据“分析图像更新”在间隔内进行OCR,间隔内的OCR会重置间隔的计时。 ### 鼠标键盘触发+等待稳定 @@ -47,10 +44,11 @@ OCR的结果是不稳定的,经常对于图片的微小扰动会使文本发 默认以下鼠标键盘事件将触发该方法:按下鼠标左键、按下Enter、松开Ctrl、松开Shift、松开Alt。如果绑定了游戏窗口,则仅当游戏窗口为前台窗口时,才会触发方法。 - 触发该方法后,由于需要等待游戏渲染新的文本,或文本可能不是立即出现(文本速度不是最快),因此需要稍微等待一小段时间,直到显示的文本稳定。 -如果文本速度是最快的,则可以将两个参数都设置为0。否则,判断需要等待的时间需要以下参数: +触发该方法并稳定后,一定会进行翻译,不会考虑文本的相似度。 + +如果文本速度是最快的,则可以将以下两个参数都设置为0。否则,判断需要等待的时间需要以下参数: #### 2. 延迟(s) diff --git a/docs/zh/qa1.md b/docs/zh/qa1.md index 2d01263e..c3fa30e1 100644 --- a/docs/zh/qa1.md +++ b/docs/zh/qa1.md @@ -1,14 +1,12 @@ ## 如何使用Mecab分词&词性颜色标注 -首先需要下载mecab词典,任选其一下载,解压 - -![img](https://image.lunatranslator.org/zh/mecab_download.png) +首先需要下载mecab词典。下载[默认版本](https://lunatranslator.org/Resource/dictionary/Mecab.zip),或者[官方最新版本](https://clrd.ninjal.ac.jp/unidic/),解压。 然后在辞书设置中激活mecab,并设置词典路径 ![img](https://image.lunatranslator.org/zh/mecab.png) -然后,在显示设置->显示内容中,激活分词注音显示和语法加亮 +然后,在显示设置->文本设置中,激活分词->注音显示(默认已激活)和语法加亮 ![img](https://image.lunatranslator.org/zh/fenci.png) diff --git a/docs/zh/sidebar.md b/docs/zh/sidebar.md index a4ade421..be386303 100644 --- a/docs/zh/sidebar.md +++ b/docs/zh/sidebar.md @@ -17,7 +17,7 @@ - [OCR自动化执行方法的参数含义](/zh/ocrparam.md) - [WindowsOCR如何安装额外的语言支持](/zh/windowsocr.md) - [mangaocr整合包无法启动怎么办](/zh/mangaocr.md) - - [如何改善OCR模式体验](/zh/gooduseocr.md) + - [OCR模式绑定游戏窗口](/zh/gooduseocr.md) - [翻译源设置](/zh/guochandamoxing.redirect) - [如何使用大模型API翻译](/zh/guochandamoxing.md) - [如何使用大模型离线翻译](/zh/offlinellm.md) diff --git a/docs/zh/transoptimi.md b/docs/zh/transoptimi.md index 7ab76d16..d94e174c 100644 --- a/docs/zh/transoptimi.md +++ b/docs/zh/transoptimi.md @@ -30,7 +30,7 @@ 该方法仅支持sakura大模型v0.10版本以上。 -使用该方法时,需要在sakura大模型的设置中,切换`prompt version`为`v0.10pre1` +使用该方法时,需要在sakura大模型的设置中,切换`prompt格式(需要根据模型版本决定)`为`v0.10pre1(支持gpt词典)`
示例 diff --git a/docs/zh/ttsofname.md b/docs/zh/ttsofname.md index 848bd236..6c57718b 100644 --- a/docs/zh/ttsofname.md +++ b/docs/zh/ttsofname.md @@ -43,7 +43,7 @@ 整个流程是: 1. 提取文本 -1. 文本处理/文本预处理 +1. 文本处理-文本预处理 1. 语音指定 1. 语音修正 1. -> 执行语音合成 diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index cbe83d31..9981eaf4 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -29,7 +29,7 @@ include(generate_product_version) set(VERSION_MAJOR 5) set(VERSION_MINOR 30) -set(VERSION_PATCH 2) +set(VERSION_PATCH 3) add_library(pch pch.cpp) target_precompile_headers(pch PUBLIC pch.h)