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