mirror of
https://github.com/HIllya51/LunaTranslator.git
synced 2025-11-28 17:10:22 +08:00
62 lines
6.1 KiB
Markdown
62 lines
6.1 KiB
Markdown
# OCR Метод автоматического выполнения
|
||
|
||
Для адаптации к различным способам обновления текста в разных играх, программа предлагает четыре различных метода автоматического создания скриншотов из игры с определенной частотой.
|
||
|
||
## Периодическое выполнение
|
||
|
||
::: tip
|
||
Если вы не понимаете параметры других настроек, используйте этот метод - он самый простой.
|
||
:::
|
||
|
||
Этот метод будет выполняться циклически в соответствии с "периодом выполнения".
|
||
|
||
## Анализ обновления изображения
|
||
|
||
Этот метод использует параметры "Порог стабильности изображения" и "Порог согласованности изображения"
|
||
|
||
1. #### Порог стабильности изображения
|
||
|
||
Когда игровой текст появляется не сразу (скорость текста не максимальна) или в игре есть динамический фон или live2d, сделанные скриншоты будут постоянно изменяться.
|
||
|
||
При каждом скриншоте происходит сравнение с предыдущим и вычисление степени сходства. Если сходство превышает пороговое значение, изображение считается стабильным и переходит к следующему этапу проверки.
|
||
|
||
Если вы уверены, что игра полностью статична, можно установить это значение на 0, в противном случае можно немного увеличить его.
|
||
|
||
1. #### Порог согласованности изображения
|
||
|
||
Этот параметр является наиболее важным.
|
||
|
||
После стабилизации изображения сравнивается текущее изображение с изображением, использованным для OCR в предыдущий раз (а не с последним скриншотом). Если сходство меньше порогового значения, считается, что игровой текст изменился, и выполняется OCR.
|
||
|
||
Если OCR выполняется слишком часто, можно немного увеличить это значение; если же реакция слишком медленная, можно немного уменьшить его.
|
||
|
||
## Триггер мыши/клавиатуры + ожидание стабилизации
|
||
|
||
|
||
1. #### Триггерное событие
|
||
|
||
По умолчанию следующие события мыши и клавиатуры будут вызывать метод: нажатие левой кнопки мыши, нажатие Enter, отпускание Ctrl, отпускание Shift, отпускание Alt. Если привязано к игровому окну, метод будет вызываться только когда игровое окно активно.
|
||
|
||
После активации метода, поскольку необходимо дождаться рендеринга нового текста игрой, или текст может появиться не сразу (если скорость текста не максимальна), требуется немного подождать до стабилизации отображаемого текста.
|
||
|
||
После активации метода и стабилизации, перевод будет выполнен обязательно, без учета схожести текста.
|
||
|
||
Если скорость текста максимальна, оба следующих параметра можно установить на 0. В противном случае, для определения времени ожидания требуются следующие параметры:
|
||
|
||
1. #### Задержка (с)
|
||
|
||
Ожидание фиксированного времени задержки (имеется встроенная задержка 0.1с для обработки внутренней логики игрового движка).
|
||
|
||
1. #### Порог стабильности изображения
|
||
|
||
Этот параметр похож на одноименный выше. Однако он используется только для определения завершения отрисовки текста, поэтому не делит настройки с одноименным параметром выше.
|
||
|
||
Так как время отрисовки медленного текста не фиксировано, использование заданной фиксированной задержки может быть недостаточным. Когда сходство изображения с предыдущим скриншотом превышает порог, выполняется текущее событие активации.
|
||
|
||
|
||
## Порог схожести текста
|
||
|
||
Результаты OCR нестабильны - даже небольшие изменения изображения могут вызвать незначительные изменения текста, что приводит к повторному переводу.
|
||
|
||
После каждого вызова OCR сравниваются результаты текущего OCR с результатами предыдущего OCR (расстояние Левенштейна), и текст выводится только когда это расстояние превышает пороговое значение.
|
||
|