mirror of
https://github.com/HIllya51/LunaTranslator.git
synced 2024-12-28 08:04:13 +08:00
fix
This commit is contained in:
parent
0eeca2fe8a
commit
0c763f1a83
@ -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):
|
||||
|
@ -842,5 +842,8 @@
|
||||
"按键": "",
|
||||
"事件": "",
|
||||
"按下": "",
|
||||
"松开": ""
|
||||
"松开": "",
|
||||
"v0.10pre1(支持gpt词典)": "",
|
||||
"prompt格式(需要根据模型版本决定)": "",
|
||||
"英文": ""
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
## 极大改善OCR模式体验的设置
|
||||
## OCR模式绑定游戏窗口
|
||||
|
||||
一个非常重要,能极大改善OCR体验的设置:**绑定窗口**
|
||||
默认已激活`选取OCR范围后自动绑定窗口`,当范围框的四个顶点同属于某个窗口HWND时,会自动绑定到该窗口上。
|
||||
|
||||
一般来说,用其他OCR软件时,一个很折磨人的地方就是,经常需要留个神注意游戏窗口和翻译窗口的位置。可能翻译窗口和截图区域相交,或者有时游戏窗口要切到后台,这时候都很烦
|
||||
|
||||
@ -32,6 +32,4 @@
|
||||
|
||||
以及一些其他记不太住的优化,都需要绑定窗口才能使用。
|
||||
|
||||
所以,当绑定了游戏窗口,哪怕是仅使用OCR不使用HOOK,其实也是能比一般的其他软件有更好的体验的。
|
||||
|
||||
但不绑定窗口,那这个OCR模式不就和别的OCR软件没区别了吗?我专门为此做了非常多的优化,但可能是因为这个设置似乎从来没有在其他同类OCR软件上看到过,所以没太有人注意这个功能的意义,对此我感到非常痛心。因此特地说一下。
|
||||
所以,当绑定了游戏窗口,哪怕是仅使用OCR不使用HOOK,其实也是能比一般的其他软件有更好的体验的。
|
@ -107,7 +107,7 @@
|
||||
|
||||
<!-- tabs:end -->
|
||||
|
||||
### 不兼容的专用接口
|
||||
### 特定平台的专用接口
|
||||
|
||||
#### 外国大模型接口
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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)
|
||||
|
@ -30,7 +30,7 @@
|
||||
|
||||
该方法仅支持sakura大模型v0.10版本以上。
|
||||
|
||||
使用该方法时,需要在sakura大模型的设置中,切换`prompt version`为`v0.10pre1`
|
||||
使用该方法时,需要在sakura大模型的设置中,切换`prompt格式(需要根据模型版本决定)`为`v0.10pre1(支持gpt词典)`
|
||||
|
||||
<details>
|
||||
<summary>示例</summary>
|
||||
|
@ -43,7 +43,7 @@
|
||||
整个流程是:
|
||||
|
||||
1. 提取文本
|
||||
1. 文本处理/文本预处理
|
||||
1. 文本处理-文本预处理
|
||||
1. 语音指定
|
||||
1. 语音修正
|
||||
1. -> 执行语音合成
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user