mirror of
https://github.com/HIllya51/LunaTranslator.git
synced 2025-01-15 00:43:59 +08:00
docs
This commit is contained in:
parent
bb6c0f7efd
commit
50d2550511
@ -4,7 +4,7 @@
|
||||
|
||||
This method utilizes parameters such as “Image Stability Threshold,” “Image Consistency Threshold,” and “Text Similarity Threshold.”
|
||||
|
||||
#### 1. Image Stability Threshold
|
||||
1. #### Image Stability Threshold
|
||||
|
||||
When game text does not appear immediately (text speed is not the fastest), or when the game has a dynamic background or live2D elements, the captured images will continuously change.
|
||||
|
||||
@ -12,7 +12,7 @@ Each time a screenshot is taken, it is compared to the previous screenshot to ca
|
||||
|
||||
If it can be confirmed that the game is completely static, this value can be set to 0. Conversely, if it isn't, this value should be appropriately increased.
|
||||
|
||||
#### 2. Image Consistency Threshold
|
||||
1. #### Image Consistency Threshold
|
||||
|
||||
This parameter is the most important one.
|
||||
|
||||
@ -20,7 +20,7 @@ After the image stabilizes, the current image is compared to the image at the la
|
||||
|
||||
If the OCR frequency is too high, this value can be appropriately increased; conversely, if it is too sluggish, it can be appropriately decreased.
|
||||
|
||||
#### 3. Text Similarity Threshold
|
||||
1. #### Text Similarity Threshold
|
||||
|
||||
The results of OCR are unstable, and minor disturbances in the image can cause slight changes in the text, leading to repeated translations.
|
||||
|
||||
@ -39,7 +39,7 @@ Combining the above two methods, OCR is executed at least once every “Executio
|
||||
|
||||
### Mouse/Keyboard Trigger + Wait for Stability
|
||||
|
||||
#### 1. Trigger Events
|
||||
1. #### Trigger Events
|
||||
|
||||
By default, the following mouse/keyboard events trigger this method: pressing the left mouse button, pressing Enter, releasing Ctrl, releasing Shift, and releasing Alt. If the game window is bound, the method is triggered only when the game window is the foreground window.
|
||||
|
||||
@ -49,11 +49,11 @@ Once the method is triggered and stability is achieved, a translation is always
|
||||
|
||||
If the text speed is the fastest, both of the following parameters can be set to 0. Otherwise, the time needed to wait is determined by the following parameters:
|
||||
|
||||
#### 2. Delay (s)
|
||||
1. #### Delay (s)
|
||||
|
||||
Wait for a fixed delay time (there is an inherent delay of 0.1 seconds built-in to accommodate the internal logic handling of game engines).
|
||||
|
||||
#### 3. Image Stability Threshold
|
||||
1. #### Image Stability Threshold
|
||||
|
||||
This value is similar to the previously mentioned parameter with the same name. However, this is used solely to determine whether the text rendering is complete, and thus it does not share the configuration with the similarly named parameter above.
|
||||
|
||||
|
@ -4,35 +4,35 @@
|
||||
|
||||
> If there are very complex error forms, you can activate multiple processing methods and adjust their execution order to obtain a rich combination of processing methods.
|
||||
|
||||
**1. Filter Non-Japanese Character Set Characters in Text**
|
||||
1. #### Filter Non-Japanese Character Set Characters in Text
|
||||
|
||||
Sometimes, garbled text is hooked. Since this problem usually occurs in Japanese games, this method is preset to filter out **characters that cannot be encoded using the shift-jis character set**, for example:
|
||||
|
||||
`エマさんԟのイԠラストは全部大好き!` will be processed into `エマさんのイラストは全部大好き!`
|
||||
|
||||
**2. Filter Control Characters**
|
||||
1. #### Filter Control Characters
|
||||
|
||||
This method will filter out ASCII control characters in the text, such as `` etc.
|
||||
|
||||
**3. Filter English Punctuation**
|
||||
1. #### Filter English Punctuation
|
||||
|
||||
This method will filter out ```!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~``` in the text.
|
||||
|
||||
**4. Filter Other Garbled Text**
|
||||
1. #### Filter Other Garbled Text
|
||||
|
||||
This requires setting the allowed character encoding or Unicode range in the settings. Characters not allowed will be filtered out.
|
||||
|
||||
**5. Filter Characters Outside「」**
|
||||
1. #### Filter Characters Outside「」
|
||||
|
||||
For example: `こなみ「ひとめぼれってやつだよね……」` will be processed into `「ひとめぼれってやつだよね……」`
|
||||
|
||||
**6. Remove Curly Braces {}**
|
||||
1. #### Remove Curly Braces {}
|
||||
|
||||
This is not exactly as it seems; it is mainly used to filter Japanese furigana. Many game scripts use {} and some other characters to add furigana to kanji. It supports two furigana formats: `{汉字/注音}` and `{汉字:注音}`, for example:
|
||||
|
||||
`「{恵麻/えま}さん、まだ{起き/おき}てる?」` or `「{恵麻:えま}さん、まだ{起き:おき}てる?」` will be processed into `「恵麻さん、まだ起きてる?」`
|
||||
|
||||
**7. Filter or Truncate by Word Count**
|
||||
1. #### Filter or Truncate by Word Count
|
||||
|
||||
This method determines how to handle the text based on its word count.
|
||||
|
||||
@ -42,7 +42,7 @@ If the text length exceeds the maximum word count, if **Truncate instead of Filt
|
||||
|
||||
If **Reverse Truncation when Truncating** is activated, when truncating, it will keep the last `maximum word count` words; otherwise, it will keep the first `maximum word count` words.
|
||||
|
||||
**8. Filter or Truncate by Line Count**
|
||||
1. #### Filter or Truncate by Line Count
|
||||
|
||||
This is similar to the above, but it determines based on the number of lines in the text. It can be mainly used to truncate the first three lines of the text, or the last line of the text, or to filter out lines that are too many or too few.
|
||||
|
||||
@ -52,55 +52,55 @@ If the number of lines in the text exceeds the maximum line count, if **Truncate
|
||||
|
||||
If **Reverse Truncation when Truncating** is activated, when truncating, it will keep the last `maximum line count` lines; otherwise, it will keep the first `maximum line count` lines.
|
||||
|
||||
**9. Remove Duplicate Characters _AAAABBBBCCCC->ABC**
|
||||
1. #### Remove Duplicate Characters _AAAABBBBCCCC->ABC
|
||||
|
||||
This is the most commonly used filter.
|
||||
|
||||
Due to the way games sometimes draw text (e.g., drawing text, then shadow, then outline), HOOK mode may extract the same characters multiple times. For example, `恵恵恵麻麻麻さささんんんははは再再再びびび液液液タタタブブブへへへ視視視線線線ををを落落落とととすすす。。。` will be processed into `恵麻さんは再び液タブへ視線を落とす。`. The default repetition count is `1`, which automatically analyzes the number of repeated characters, but there may be inaccuracies, so it is recommended to specify a definite repetition count.
|
||||
|
||||
**10. Filter Historical Duplicates LRU**
|
||||
1. #### Filter Historical Duplicates LRU
|
||||
|
||||
Sometimes, the way the game redraws text is not character by character but line by line, and it continuously redraws the current displayed text in a static state. For example, if the current display is two lines of text `你好` and `哈哈`, without using this method, it will repeatedly output `你好哈哈你好哈哈你好哈哈你好哈哈……`. Using this method, it caches several recently output texts, and when the cache is full and new text appears, it removes the earliest text in the cache, thus preventing recent texts from repeatedly refreshing.
|
||||
|
||||
**11. Remove Duplicate Lines _ABCDABCDABCD->ABCD**
|
||||
1. #### Remove Duplicate Lines _ABCDABCDABCD->ABCD
|
||||
|
||||
This is also common, similar to the above, but generally does not refresh repeatedly, but quickly refreshes multiple times. The effect is `恵麻さんは再び液タブへ視線を落とす。恵麻さんは再び液タブへ視線を落とす。恵麻さんは再び液タブへ視線を落とす。` will become `恵麻さんは再び液タブへ視線を落とす。`. Similarly, the default repetition count is `1`, which automatically analyzes the number of repeated characters, but there may be inaccuracies, so it is recommended to specify a definite repetition count.
|
||||
|
||||
**12. Remove Duplicate Lines _S1S1S1S2S2S2->S1S2**
|
||||
1. #### Remove Duplicate Lines _S1S1S1S2S2S2->S1S2
|
||||
|
||||
This is relatively complex; sometimes, the refresh count of each sentence is not exactly the same, so the program must analyze how to deduplicate. For example, `恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。なんてニヤニヤしていると、恵麻さんが振り返った。私は恵麻さんの目元を優しくハンカチで拭う。私は恵麻さんの目元を優しくハンカチで拭う。` where `恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。` repeats 3 times, `なんてニヤニヤしていると、恵麻さんが振り返った。` does not repeat, and `私は恵麻さんの目元を優しくハンカチで拭う。` repeats 2 times, the final analysis will get `恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。なんてニヤしていると、恵麻さんが振り返った。私は恵麻さんの目元を優しくハンカチで拭う。`, where due to the complexity, there may be a few analysis errors, which is unavoidable, but generally, it can get the correct result.
|
||||
|
||||
**13. Filter Angle Brackets <>**
|
||||
1. #### Filter Angle Brackets <>
|
||||
|
||||
This is actually filtering HTML tags, but the name is written this way to avoid confusion for beginners. For example, `<div>`, `</div>`, and `<div id="dsds">` will be filtered. This is mainly used in TyranoScript games where the HOOK extracts the text as innerHTML, usually containing many such tags.
|
||||
|
||||
**14. Filter Newline Characters**
|
||||
1. #### Filter Newline Characters
|
||||
|
||||
Originally named **Filter Newline Characters Language Adaptive**, the old **Filter Newline Characters** has been deprecated.
|
||||
|
||||
If the source language is not Japanese, when filtering newline characters, they will be replaced with spaces instead of being filtered out to avoid multiple words being connected together.
|
||||
|
||||
**15. Filter Numbers**
|
||||
1. #### Filter Numbers
|
||||
|
||||
N/A
|
||||
|
||||
**16. Filter English Letters**
|
||||
1. #### Filter English Letters
|
||||
|
||||
N/A
|
||||
|
||||
**17. Remove Duplicate Lines _ABCDBCDCDD->ABCD**
|
||||
1. #### Remove Duplicate Lines _ABCDBCDCDD->ABCD
|
||||
|
||||
This is also common. The reason for this is that sometimes the function HOOKed to display text has the displayed text as a parameter, which is called every time a character is displayed, and each time the parameter string points to the next character, resulting in the fact that the first call has already obtained the complete text, and subsequent calls output the remaining substring until the length decreases to 0. For example, `恵麻さんは再び液タブへ視線を落とす。麻さんは再び液タブへ視線を落とす。さんは再び液タブへ視線を落とす。んは再び液タブへ視線を落とす。は再び液タブへ視線を落とす。再び液タブへ視線を落とす。び液タブへ視線を落とす。液タブへ視線を落とす。タブへ視線を落とす。ブへ視線を落とす。へ視線を落とす。視線を落とす。線を落とす。を落とす。落とす。とす。す。。` will be analyzed to determine that the real text should be `恵麻さんは再び液タブへ視線を落とす。`
|
||||
|
||||
**18. Remove Duplicate Lines _AABABCABCD->ABCD**
|
||||
1. #### Remove Duplicate Lines _AABABCABCD->ABCD
|
||||
|
||||
This is also common. The reason for this is that every time a character is drawn, the previous characters are redrawn when the next character is drawn. For example, `恵麻恵麻さ恵麻さん恵麻さんは恵麻さんは再恵麻さんは再び恵麻さんは再び液恵麻さんは再び液タ恵麻さんは再び液タブ恵麻さんは再び液タブへ恵麻さんは再び液タブへ視恵麻さんは再び液タブへ視線恵麻さんは再び液タブへ視線を恵麻さんは再び液タブへ視線を落恵麻さんは再び液タブへ視線を落と恵麻さんは再び液タブへ視線を落とす恵麻さんは再び液タブへ視線を落とす。` will be analyzed to determine that the real text should be `恵麻さんは再び液タブへ視線を落とす。`
|
||||
|
||||
**19. Remove Duplicate Lines _AABABCABCDEEFEFG->ABCDEFG**
|
||||
1. #### Remove Duplicate Lines _AABABCABCDEEFEFG->ABCDEFG
|
||||
|
||||
This is similar to the above, but when there are multiple lines of text, each line is processed separately according to the above logic, which brings more complexity. Due to the complexity, this processing often fails to handle correctly. If encountered, it is recommended to write a custom Python script to solve it.
|
||||
|
||||
**20. Custom Python Processing**
|
||||
1. #### Custom Python Processing
|
||||
|
||||
Write a Python script for more complex processing. When the processing script does not exist, it will automatically generate a `mypost.py` file and the following template in the userconfig directory:
|
||||
|
||||
@ -109,7 +109,7 @@ def POSTSOLVE(line):
|
||||
return line
|
||||
```
|
||||
|
||||
**21. String Replacement**
|
||||
1. #### String Replacement
|
||||
|
||||
Not only replacement but also mainly used for filtering. For example, fixed garbled characters, repeatedly refreshed inverted triangle characters, etc., can be filtered by replacing them with blanks.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
## Functions of Various Translation Optimizations
|
||||
|
||||
#### **1. Proper Noun Translation - Direct Replacement**
|
||||
1. #### Proper Noun Translation - Direct Replacement
|
||||
|
||||
This method directly replaces the original text with the translated text before translation. It supports using `Regex` and `Escape` for more complex replacements.
|
||||
|
||||
@ -11,7 +11,7 @@ When the game loads metadata from VNDB, it queries the game's character names as
|
||||
<img src="https://image.lunatranslator.org/zh/transoptimi/1.png">
|
||||
</details>
|
||||
|
||||
#### **2. Proper Noun Translation**
|
||||
1. #### Proper Noun Translation
|
||||
|
||||
If using the `sakura large model` and setting the prompt format to support the gpt dictionary prompt, it will be converted into the gpt dictionary format. Otherwise, it will refer to the VNR approach, replacing the original text with the placeholder `ZX?Z` (ps: I don't know what this means), and after the source translation, the placeholder is generally not destroyed. Then, after the translation, the placeholder will be replaced with the translation.
|
||||
|
||||
@ -32,7 +32,7 @@ The last column `Comment` is only used for the `Sakura Large Model`; other trans
|
||||
<img src="https://image.lunatranslator.org/zh/transoptimi/4.png">
|
||||
</details>
|
||||
|
||||
#### **3. Translation Result Correction**
|
||||
1. #### Translation Result Correction
|
||||
|
||||
This method allows for certain corrections to the translation result after translation and can use the entire expression for complex corrections.
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
Этот метод использует параметры "Порог стабильности изображения", "Порог согласованности изображения" и "Порог сходства текста".
|
||||
|
||||
#### 1. Порог стабильности изображения
|
||||
1. #### Порог стабильности изображения
|
||||
|
||||
Когда текст игры не появляется сразу (скорость текста не самая высокая) или игра имеет динамическое фоновое изображение или live2d, захваченное изображение постоянно меняется.
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
|
||||
Если можно утверждать, что игра полностью статична, этот параметр можно установить в 0, в противном случае его можно увеличить.
|
||||
|
||||
#### 2. Порог согласованности изображения
|
||||
1. #### Порог согласованности изображения
|
||||
|
||||
Этот параметр является наиболее важным.
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
|
||||
Если частота OCR слишком высока, этот параметр можно увеличить; наоборот, если он слишком медленный, его можно уменьшить.
|
||||
|
||||
#### 3. Порог сходства текста
|
||||
1. #### Порог сходства текста
|
||||
|
||||
Результаты OCR не являются стабильными, часто малые изменения в изображении могут вызвать незначительные изменения в тексте, что, в свою очередь, приводит к повторному переводу.
|
||||
|
||||
@ -36,7 +36,7 @@
|
||||
|
||||
### Триггер мыши и клавиатуры + Ожидание стабильности
|
||||
|
||||
#### 1. Событие триггера
|
||||
1. #### Событие триггера
|
||||
|
||||
По умолчанию следующие события мыши и клавиатуры активируют этот метод: нажатие левой кнопки мыши, нажатие клавиши Enter, отпускание клавиши Ctrl, отпускание клавиши Shift, отпускание клавиши Alt. Если окно игры привязано, метод активируется только тогда, когда окно игры находится в фокусе.
|
||||
|
||||
@ -46,11 +46,11 @@
|
||||
|
||||
Если скорость текста является максимальной, следующие два параметра можно установить в 0. В противном случае, для определения времени ожидания необходимы следующие параметры:
|
||||
|
||||
#### 2. Задержка (с)
|
||||
1. #### Задержка (с)
|
||||
|
||||
Ждет фиксированное время задержки (встроенная задержка составляет 0,1 с для удовлетворения внутренней логики обработки игрового движка).
|
||||
|
||||
#### 3. Порог стабильности изображения
|
||||
1. #### Порог стабильности изображения
|
||||
|
||||
Этот параметр аналогичен вышеупомянутому с同名 параметру. Но он используется только для определения завершения рендеринга текста, поэтому не используется совместно с вышеупомянутым параметром.
|
||||
|
||||
|
@ -4,35 +4,35 @@
|
||||
|
||||
> Если есть очень сложные формы ошибок, можно активировать несколько методов обработки и настроить их порядок выполнения, чтобы получить богатый набор методов обработки.
|
||||
|
||||
**1. Фильтрация символов, не входящих в японский набор символов в тексте**
|
||||
1. #### Фильтрация символов, не входящих в японский набор символов в тексте
|
||||
|
||||
Иногда считывается текст с глифами. Поскольку эта проблема обычно возникает в японских играх, этот метод заранее фильтрует **символы, которые не могут быть закодированы с использованием набора символов shift-jis**, например:
|
||||
|
||||
`エマさんԟのイԠラストは全部大好き!` будет обработан в `エマさんのイラストは全部大好き!`
|
||||
|
||||
**2. Фильтрация управляющих символов**
|
||||
1. #### Фильтрация управляющих символов
|
||||
|
||||
Этот метод фильтрует управляющие символы ASCII в тексте, такие как `` и т.д.
|
||||
|
||||
**3. Фильтрация пунктуации на английском языке**
|
||||
1. #### Фильтрация пунктуации на английском языке
|
||||
|
||||
Этот метод фильтрует ```!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~``` в тексте.
|
||||
|
||||
**4. Фильтрация других глифов**
|
||||
1. #### Фильтрация других глифов
|
||||
|
||||
Это требует настройки разрешенных кодировок символов или диапазонов Unicode в настройках. Символы, которые не разрешены, будут отфильтрованы.
|
||||
|
||||
**5. Фильтрация символов вне「」**
|
||||
1. #### Фильтрация символов вне「」
|
||||
|
||||
Например: `こなみ「ひとめぼれってやつだよね……」` будет обработан в `「ひとめぼれってやつだよね……」`
|
||||
|
||||
**6. Удаление фигурных скобок {}**
|
||||
1. #### Удаление фигурных скобок {}
|
||||
|
||||
Это не совсем соответствует буквальному значению, на самом деле это в основном используется для фильтрации японского фуриганы. Многие игровые сценарии используют {} и некоторые другие символы для добавления фуриганы к иероглифам. Поддерживаются два формата фуриганы: `{汉字/注音}` и `{汉字:注音}`, например:
|
||||
|
||||
`「{恵麻/えま}さん、まだ{起き/おき}てる?」` или `「{恵麻:えま}さん、まだ{起き:おき}てる?」` будет обработан в `「恵麻さん、まだ起きてる?」`
|
||||
|
||||
**7. Фильтрация или усечение по количеству слов**
|
||||
1. #### Фильтрация или усечение по количеству слов
|
||||
|
||||
Этот метод определяет, как обрабатывать текст, основываясь на его количестве слов.
|
||||
|
||||
@ -42,7 +42,7 @@
|
||||
|
||||
Если активирована опция **Обратное усечение при усечении**, при усечении будут сохранены последние `максимальное количество слов` слов; в противном случае будут сохранены первые `максимальное количество слов` слов.
|
||||
|
||||
**8. Фильтрация или усечение по количеству строк**
|
||||
1. #### Фильтрация или усечение по количеству строк
|
||||
|
||||
Это похоже на предыдущий метод, но определяется на основе количества строк в тексте. Он может использоваться для усечения первых трех строк текста или последней строки текста, а также для фильтрации строк, которых слишком много или слишком мало.
|
||||
|
||||
@ -52,65 +52,64 @@
|
||||
|
||||
Если активирована опция **Обратное усечение при усечении**, при усечении будут сохранены последние `максимальное количество строк` строк; в противном случае будут сохранены первые `максимальное количество строк` строк.
|
||||
|
||||
**9. Удаление повторяющихся символов _AAAABBBBCCCC->ABC**
|
||||
1. #### Удаление повторяющихся символов _AAAABBBBCCCC->ABC
|
||||
|
||||
Это самый часто используемый фильтр.
|
||||
|
||||
Из-за того, что игры иногда рисуют текст, затем тень, затем контур и т.д., режим HOOK может несколько раз извлекать повторяющиеся символы. Например, `恵恵恵麻麻麻さささんんんははは再再再びびび液液液タタタブブブへへへ視視視線線線ををを落落落とととすすす。。。` будет обработан в `恵麻さんは再び液タブへ視線を落とす。`. По умолчанию количество повторений равно `1`, автоматически анализирует количество повторяющихся символов, но также есть случаи неточного анализа, рекомендуется указать определенное количество повторений.
|
||||
|
||||
**10. Фильтрация исторических повторений LRU**
|
||||
1. #### Фильтрация исторических повторений LRU
|
||||
|
||||
Иногда способ повторного рисования игры не по одному символу, а по строкам, и, что еще более извращенно, в статическом состоянии непрерывно перерисовывается текущий отображаемый текст. Например, предположим, что текущий отображаемый текст - две строки `你好` и `哈哈`, если не использовать этот метод, будет повторяться вывод `你好哈哈你好哈哈你好哈哈你好哈哈……`. Используя этот метод, кэшируется несколько недавно выведенных текстов, когда кэш заполнен и появляется новый текст, удаляется самая старая запись в кэше, чтобы недавний текст не повторялся.
|
||||
|
||||
**11. Удаление повторяющихся строк _ABCDABCDABCD->ABCD**
|
||||
1. #### Удаление повторяющихся строк _ABCDABCDABCD->ABCD
|
||||
|
||||
Это тоже довольно распространено, похоже на вышеупомянутое, но обычно не повторяется, а быстро обновляется несколько раз. Эффект: `恵麻さんは再び液タブへ視線を落とす。恵麻さんは再び液タブへ視線を落とす。恵麻さんは再び液タブへ視線を落とす。` станет `恵麻さんは再び液タブへ視線を落とす。`. Аналогично, по умолчанию количество повторений равно `1`, автоматически анализирует количество повторяющихся символов, но также есть случаи неточного анализа, рекомендуется указать определенное количество повторений.
|
||||
|
||||
**12. Удаление повторяющихся строк _S1S1S1S2S2S2->S1S2**
|
||||
1. #### Удаление повторяющихся строк _S1S1S1S2S2S2->S1S2
|
||||
|
||||
Это относительно сложно, иногда количество обновлений каждого предложения не одинаково, в этом случае только программа может полностью решить, как удалить дубликаты. Например, `恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。なんてニヤニヤしていると、恵麻さんが振り返った。私は恵麻さんの目元を優しくハンカチで拭う。私は恵麻さんの目元を優しくハンカチで拭う。`, где `恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。` повторяется 3 раза, `なんてニヤニヤしていると、恵麻さんが振り返った。` не повторяется, `私は恵麻さんの目元を優しくハンカチで拭う。` повторяется 2 раза, в конечном итоге анализ даст `恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。なんてニヤしていると、恵麻さんが振り返った。私は恵麻さんの目元を優しくハンカチで拭う。`, где из-за сложности может быть небольшая ошибка анализа, это неизбежно, но обычно можно получить правильный результат.
|
||||
|
||||
**13. Фильтрация угловых скобок <>**
|
||||
1. #### Фильтрация угловых скобок <>
|
||||
|
||||
Это на самом деле фильтрация HTML-тегов, название написано так, чтобы избежать путаницы для новичков. Например, `<div>`, `</div>` и `<div id="dsds">` и т.д. будут отфильтрованы. Это в основном используется в играх TyranoScript, где извлеченный текст - innerHTML, обычно содержит много таких тегов.
|
||||
|
||||
**14. Фильтрация символов новой строки**
|
||||
1. #### Фильтрация символов новой строки
|
||||
|
||||
Первоначально называлось **Фильтрация символов новой строки адаптивная к языку**, старая версия **Фильтрация символов новой строки** была упразднена.
|
||||
|
||||
Если исходный язык не японский, то при фильтрации символов новой строки они будут заменены на пробелы, а не отфильтрованы, чтобы избежать соединения нескольких слов вместе.
|
||||
|
||||
**15. Фильтрация цифр**
|
||||
1. #### Фильтрация цифр
|
||||
|
||||
Пропущено
|
||||
|
||||
**16. Фильтрация английских букв**
|
||||
1. #### Фильтрация английских букв
|
||||
|
||||
Пропущено
|
||||
|
||||
**17. Удаление повторяющихся строк _ABCDBCDCDD->ABCD**
|
||||
1. #### Удаление повторяющихся строк _ABCDBCDCDD->ABCD
|
||||
|
||||
Это тоже довольно распространено. Причина этого в том, что иногда функция HOOK для отображения текста имеет параметр текста для отображения, эта функция вызывается каждый раз при отображении символа, и каждый раз параметр строки указывает на следующий символ, что приводит к тому, что первый вызов уже получил полный текст, а последующие вызовы выводят оставшуюся подстроку до тех пор, пока длина не уменьшится до 0. Например, `恵麻さんは再び液タブへ視線を落とす。麻さんは再び液タブへ視線を落とす。さんは再び液タブへ視線を落とす。んは再び液タブへ視線を落とす。は再び液タブへ視線を落とす。再び液タブへ視線を落とす。び液タブへ視線を落とす。液タブへ視線を落とす。タブへ視線を落とす。ブへ視線を落とす。へ視線を落とす。視線を落とす。線を落とす。を落とす。落とす。とす。す。。` анализ определит, что реальный текст должен быть `恵麻さんは再び液タブへ視線を落とす。`
|
||||
|
||||
**18. Удаление повторяющихся строк _AABABCABCD->ABCD**
|
||||
1. #### Удаление повторяющихся строк _AABABCABCD->ABCD
|
||||
|
||||
Это тоже довольно распространено. Причина этого в том, что каждый раз при рисовании символа, а затем при рисовании следующего символа, все предыдущие символы рисуются снова. Например, `恵麻恵麻さ恵麻さん恵麻さんは恵麻さんは再恵麻さんは再び恵麻さんは再び液恵麻さんは再び液タ恵麻さんは再び液タブ恵麻さんは再び液タブへ恵麻さんは再び液タブへ視恵麻さんは再び液タブへ視線恵麻さんは再び液タブへ視線を恵麻さんは再び液タブへ視線を落恵麻さんは再び液タブへ視線を落と恵麻さんは再び液タブへ視線を落とす恵麻さんは再び液タブへ視線を落とす。` анализ определит, что реальный текст должен быть `恵麻さんは再び液タブへ視線を落とす。`
|
||||
|
||||
**19. Удаление повторяющихся строк _AABABCABCDEEFEFG->ABCDEFG**
|
||||
1. #### Удаление повторяющихся строк _AABABCABCDEEFEFG->ABCDEFG
|
||||
|
||||
Это похоже на вышеупомянутое, но когда есть несколько строк текста, каждая строка обрабатывается отдельно по вышеупомянутой логике, что приводит к большей сложности. Из-за сложности эта обработка часто не может быть правильно обработана, если встретите, рекомендуется написать пользовательскую обработку на python для решения.
|
||||
|
||||
**20. Пользовательская обработка на python**
|
||||
1. #### Пользовательская обработка на python
|
||||
|
||||
Напишите скрипт на python для более сложной обработки, когда скрипт обработки не существует, он автоматически сгенерирует файл `mypost.py` и следующий шаблон в каталоге userconfig:
|
||||
|
||||
|
||||
```
|
||||
def POSTSOLVE(line):
|
||||
return line
|
||||
```
|
||||
|
||||
**21. Замена строки**
|
||||
1. #### Замена строки
|
||||
|
||||
Не только замена, но и в основном можно использовать для фильтрации. Например, можно отфильтровать фиксированные несколько глифов, повторяющиеся символы в виде перевернутого треугольника и т.д., заменив их на пустоту.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
## Роль различных методов оптимизации перевода
|
||||
|
||||
#### **1. Перевод собственных названий - Прямое замещение**
|
||||
1. #### Перевод собственных названий - Прямое замещение
|
||||
|
||||
Этот метод заменяет исходный текст на перевод непосредственно перед переводом. Поддерживает использование `регулярных выражений` и `экранирования` для более сложных замен.
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
<img src="https://image.lunatranslator.org/zh/transoptimi/1.png">
|
||||
</details>
|
||||
|
||||
#### **2. Перевод собственных названий**
|
||||
1. #### Перевод собственных названий
|
||||
|
||||
Если использовать `sakura большую модель` и установить формат подсказки для поддержки подсказки словаря gpt, она будет преобразована в формат словаря gpt. В противном случае будет использоваться подход VNR, заменяя исходный текст заполнителем `ZX?Z` (ps: я тоже не знаю, что это значит), и после перевода источника заполнитель обычно не разрушается. Затем после перевода заполнитель будет заменен на перевод.
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
<img src="https://image.lunatranslator.org/zh/transoptimi/4.png">
|
||||
</details>
|
||||
|
||||
#### **3. Исправление результатов перевода**
|
||||
1. #### Исправление результатов перевода
|
||||
|
||||
Этот метод позволяет внести некоторые коррективы в результаты перевода после его завершения и использовать целые выражения для более сложных исправлений.
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
这个方法会使用参数“图像稳定性阈值”“图像一致性阈值”“文本相似度阈值”
|
||||
|
||||
#### 1. 图像稳定性阈值
|
||||
1. #### 图像稳定性阈值
|
||||
|
||||
当游戏文本不是立即出现(文本速度不是最快),或者游戏有动态背景或live2d时,截取的图片是会不停的发生变化的。
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
|
||||
如果可以确定游戏是完全静态的,可以将这个值设置为0,反之可以适当提高该值。
|
||||
|
||||
#### 2. 图像一致性阈值
|
||||
1. #### 图像一致性阈值
|
||||
|
||||
这个参数是最重要的。
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
|
||||
如果OCR频率过快,可以适当提高该值;反之如果太过迟钝,可以适当降低该值。
|
||||
|
||||
#### 3. 文本相似度阈值
|
||||
1. #### 文本相似度阈值
|
||||
|
||||
OCR的结果是不稳定的,经常对于图片的微小扰动会使文本发生微小变化,导致翻译也会连带重新翻译。
|
||||
|
||||
@ -40,7 +40,7 @@ OCR的结果是不稳定的,经常对于图片的微小扰动会使文本发
|
||||
### 鼠标键盘触发+等待稳定
|
||||
|
||||
|
||||
#### 1. 触发事件
|
||||
1. #### 触发事件
|
||||
|
||||
默认以下鼠标键盘事件将触发该方法:按下鼠标左键、按下Enter、松开Ctrl、松开Shift、松开Alt。如果绑定了游戏窗口,则仅当游戏窗口为前台窗口时,才会触发方法。
|
||||
|
||||
@ -50,12 +50,11 @@ OCR的结果是不稳定的,经常对于图片的微小扰动会使文本发
|
||||
|
||||
如果文本速度是最快的,则可以将以下两个参数都设置为0。否则,判断需要等待的时间需要以下参数:
|
||||
|
||||
|
||||
#### 2. 延迟(s)
|
||||
1. #### 延迟(s)
|
||||
|
||||
等待一个固定的延迟时间(内置有0.1s的固有延迟时间,以满足游戏引擎的内部逻辑处理)。
|
||||
|
||||
#### 3. 图像稳定性阈值
|
||||
1. #### 图像稳定性阈值
|
||||
|
||||
这个值和上面的同名参数类似。不过这个仅用来判定文本是否绘制完毕,因此和上面的同名参数不共用配置。
|
||||
|
||||
|
@ -4,37 +4,35 @@
|
||||
|
||||
>如果有非常复杂的错误形式,可以通过激活多种处理方式,并调整他们的执行顺序来得到丰富的处理方法组合
|
||||
|
||||
**1. 过滤文本中的非日语字符集字符**
|
||||
1. #### 过滤文本中的非日语字符集字符
|
||||
|
||||
有时,会hook到一些乱码文本。由于一般是日语游戏会出现这个问题,因此预设了这个方法,来过滤掉**无法使用shift-jis字符集编码的字符**,例如:
|
||||
|
||||
`エマさんԟのイԠラストは全部大好き!` 会被处理成 `エマさんのイラストは全部大好き!`
|
||||
|
||||
**2. 过滤控制字符**
|
||||
1. #### 过滤控制字符
|
||||
|
||||
这个方法会过滤掉文本中的ascii码控制符,例如``等
|
||||
|
||||
|
||||
**3. 过滤英文标点**
|
||||
1. #### 过滤英文标点
|
||||
|
||||
这个方法会过滤掉文本中```!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~```
|
||||
|
||||
|
||||
**4. 过滤其他乱码**
|
||||
1. #### 过滤其他乱码
|
||||
|
||||
这个需要在设置中,设置允许通过的字符编码,或Unicode范围。不被允许的字符将均被过滤
|
||||
|
||||
**5. 过滤「」以外的字符**
|
||||
1. #### 过滤「」以外的字符
|
||||
|
||||
例如:`こなみ「ひとめぼれってやつだよね……」` 将被处理为 `「ひとめぼれってやつだよね……」`
|
||||
|
||||
**6. 去除花括号{}**
|
||||
1. #### 去除花括号{}
|
||||
|
||||
这个和字面意思不太一样,其实主要是用来过滤日语注音的,许多游戏脚本使用{}和一些其他字符来给汉字加注音。支持两种注音格式:`{汉字/注音}`和`{汉字:注音}`,例如:
|
||||
|
||||
`「{恵麻/えま}さん、まだ{起き/おき}てる?」` 或 `「{恵麻:えま}さん、まだ{起き:おき}てる?」` 将被处理成 `「恵麻さん、まだ起きてる?」`
|
||||
|
||||
**7. 按字数过滤或截断**
|
||||
1. #### 按字数过滤或截断
|
||||
|
||||
这个方法会根据当前文本的字数来决定如何处理。
|
||||
|
||||
@ -44,7 +42,7 @@
|
||||
|
||||
如果激活了**截断时反向截断**,则当截断时,会保留后`最大字数`个字,否则则会保留前`最大字数`个字。
|
||||
|
||||
**8. 按行数过滤或截断**
|
||||
1. #### 按行数过滤或截断
|
||||
|
||||
这个和上面的类似,只不过是根据文本行数来判定。主要可以用来截取文本的前三行或者截取文本的最后一行,或者过滤行数过多过少的行。
|
||||
|
||||
@ -54,58 +52,55 @@
|
||||
|
||||
如果激活了**截断时反向截断**,则当截断时,会保留后`最大行数`个行,否则则会保留前`最大行数`个行。
|
||||
|
||||
**9. 去除重复字符_AAAABBBBCCCC->ABC**
|
||||
1. #### 去除重复字符_AAAABBBBCCCC->ABC
|
||||
|
||||
这个是最常用的过滤器。
|
||||
|
||||
由于游戏的文字有时会绘制一遍文字在绘制一遍阴影再绘制一遍描边等之类的原因,Hook模式会多次提取到被重复绘制的字符。例如`恵恵恵麻麻麻さささんんんははは再再再びびび液液液タタタブブブへへへ視視視線線線ををを落落落とととすすす。。。`,这个方法会将他处理成`恵麻さんは再び液タブへ視線を落とす。`。默认的重复次数是`1`会自动分析重复的字数,但也有分析的不准确的情况,建议指定一个确定的重复字数。
|
||||
|
||||
**10. 过滤历史重复LRU**
|
||||
1. #### 过滤历史重复LRU
|
||||
|
||||
有时,游戏重复绘制的方式不是逐个字符的,而是逐行一起绘制,而且同时很变态的是会在静态的情况下不停的重新绘制当前显示的文本。例如假设当前显示的是两行文本`你好`和`哈哈`,如果不使用这个方法,将会反复输出`你好哈哈你好哈哈你好哈哈你好哈哈……`。使用这个方法,缓存若干条近期输出过的文本,当有缓存满时且出现新的文本时,剔除掉缓存中最早的那条文本,从而使近期的文本不会反复刷新。
|
||||
|
||||
**11. 去除重复行_ABCDABCDABCD->ABCD**
|
||||
1. #### 去除重复行_ABCDABCDABCD->ABCD
|
||||
|
||||
这个也比较常见,和上面的类似,只不过一般不会反复刷新,而是快速的一次刷新多次。效果为 `恵麻さんは再び液タブへ視線を落とす。恵麻さんは再び液タブへ視線を落とす。恵麻さんは再び液タブへ視線を落とす。` 会变成`恵麻さんは再び液タブへ視線を落とす。`。同样,默认的重复次数是`1`会自动分析重复的字数,但也有分析的不准确的情况,建议指定一个确定的重复字数。
|
||||
|
||||
**12. 去除重复行_S1S1S1S2S2S2->S1S2**
|
||||
1. #### 去除重复行_S1S1S1S2S2S2->S1S2
|
||||
|
||||
这个相对比较复杂,有时每个句子的刷新次数是不完全一样的,这时只能完全由程序分析来决定如何去重。例如`恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。なんてニヤニヤしていると、恵麻さんが振り返った。私は恵麻さんの目元を優しくハンカチで拭う。私は恵麻さんの目元を優しくハンカチで拭う。`, 其中`恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。`重复了3次,`なんてニヤニヤしていると、恵麻さんが振り返った。`没有重复,`私は恵麻さんの目元を優しくハンカチで拭う。`重复了2次,最终经过分析将得到`恵麻さん……ううん、恵麻ははにかむように私の名前を呼ぶ。なんてニヤしていると、恵麻さんが振り返った。私は恵麻さんの目元を優しくハンカチで拭う。`,其中因为过于复杂,会存在少许的分析错误,这也是无法避免的,但一般都能基本正确的得到结果。
|
||||
|
||||
**13. 过滤尖括号<>**
|
||||
1. #### 过滤尖括号<>
|
||||
|
||||
这个实际上是过滤HTML标签,怕小白不知道是什么意思所以这么写的名字。例如`<div>`和`</div>`和`<div id="dsds">`等都会被过滤。这个主要用在TyranoScript游戏中,HOOK提取的文本是innerHTML,一般都会带有许多这个标签。
|
||||
|
||||
|
||||
**14. 过滤换行符**
|
||||
1. #### 过滤换行符
|
||||
|
||||
原名为**过滤换行符 语言自适应**,旧版**过滤换行符**已被废弃。
|
||||
|
||||
如果源语言不是日语,那么当过滤换行符时,将会把换行符替换成空格而非过滤掉,来避免多个单词连到一起。
|
||||
|
||||
**15. 过滤数字**
|
||||
1. #### 过滤数字
|
||||
|
||||
略
|
||||
|
||||
**16. 过滤英文字母**
|
||||
1. #### 过滤英文字母
|
||||
|
||||
略
|
||||
|
||||
|
||||
**17. 去除重复行_ABCDBCDCDD->ABCD**
|
||||
1. #### 去除重复行_ABCDBCDCDD->ABCD
|
||||
|
||||
这个也比较常见。这个出现的原因是,有时HOOK的某个显示文本的函数,其参数是显示的文本,这个函数会再每显示一个字符时都会调用,且每次会把参数的字符串指向下一个字符,从而导致其实第一次调用其实就已经得到完整的文本了,后续每次又输出了剩下的子串,直到长度递减为0。例如`恵麻さんは再び液タブへ視線を落とす。麻さんは再び液タブへ視線を落とす。さんは再び液タブへ視線を落とす。んは再び液タブへ視線を落とす。は再び液タブへ視線を落とす。再び液タブへ視線を落とす。び液タブへ視線を落とす。液タブへ視線を落とす。タブへ視線を落とす。ブへ視線を落とす。へ視線を落とす。視線を落とす。線を落とす。を落とす。落とす。とす。す。。` 经过分析将判断真实的文本应该是`恵麻さんは再び液タブへ視線を落とす。`
|
||||
|
||||
|
||||
**18. 去除重复行_AABABCABCD->ABCD**
|
||||
1. #### 去除重复行_AABABCABCD->ABCD
|
||||
|
||||
这个也比较常见,出现的原因是,每次绘制一个字符,然后绘制下一个字符时都会把前面的字符都再绘制一遍。例如`恵麻恵麻さ恵麻さん恵麻さんは恵麻さんは再恵麻さんは再び恵麻さんは再び液恵麻さんは再び液タ恵麻さんは再び液タブ恵麻さんは再び液タブへ恵麻さんは再び液タブへ視恵麻さんは再び液タブへ視線恵麻さんは再び液タブへ視線を恵麻さんは再び液タブへ視線を落恵麻さんは再び液タブへ視線を落と恵麻さんは再び液タブへ視線を落とす恵麻さんは再び液タブへ視線を落とす。`经过分析将判断真实的文本应该是`恵麻さんは再び液タブへ視線を落とす。`
|
||||
|
||||
**19. 去除重复行_AABABCABCDEEFEFG->ABCDEFG**
|
||||
1. #### 去除重复行_AABABCABCDEEFEFG->ABCDEFG
|
||||
|
||||
这个和上面的类似,只不过当有多行文本时,会每行单独按照上面的逻辑来重复,从而带来了更多的复杂性。由于过于复杂,这个处理经常难以正确处理,如果遇到了,建议写自定义python处理来解决
|
||||
|
||||
**20. 自定义python处理**
|
||||
1. #### 自定义python处理
|
||||
|
||||
撰写一个python脚本来进行更加复杂的处理,当处理脚本不存在时,将自动在userconfig目录下生成`mypost.py`文件和以下模板:
|
||||
|
||||
@ -115,7 +110,7 @@ def POSTSOLVE(line):
|
||||
return line
|
||||
```
|
||||
|
||||
**21. 字符串替换**
|
||||
1. #### 字符串替换
|
||||
|
||||
不止是替换,主要也可以用来过滤。例如可以将固定的若干乱码字符、反复刷新的倒三角字符等通过替换成空白来进行过滤。
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
## 各种翻译优化的作用
|
||||
|
||||
#### **1. 专有名词翻译 直接替换**
|
||||
1. #### 专有名词翻译 直接替换
|
||||
|
||||
这种方法会在翻译之前,直接用译文将原文进行替换。支持使用`正则` `转义`进行更复杂的替换。
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
<img src="https://image.lunatranslator.org/zh/transoptimi/1.png">
|
||||
</details>
|
||||
|
||||
#### **2. 专有名词翻译**
|
||||
1. #### 专有名词翻译
|
||||
|
||||
如果使用`sakura大模型`并设置prompt格式为支持gpt词典的prompt,则会转换成gpt词典格式,否则会参考的VNR的做法,将原文替换为占位符`ZX?Z` (ps:我也不知道这是什么意思),翻译源翻译后一般不会将占位符破坏,然后在翻译后将占位符替换成翻译。
|
||||
|
||||
@ -26,14 +26,12 @@
|
||||
而不是:
|
||||
<img src="https://image.lunatranslator.org/zh/transoptimi/3.png">
|
||||
</details>
|
||||
|
||||
|
||||
<details>
|
||||
<summary>sakura大模型设置prompt格式为v0.10pre1(支持gpt词典)</summary>
|
||||
<img src="https://image.lunatranslator.org/zh/transoptimi/4.png">
|
||||
</details>
|
||||
|
||||
#### **3. 翻译结果修正**
|
||||
1. #### 翻译结果修正
|
||||
|
||||
这个方法是,在翻译完毕后,可以对翻译的结果进行一定的修正,并可以使用整个表达式进行复杂的修正。
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user