ScreTran v1.2 - ДЕЙСТВИТЕЛЬНО Экранный переводчик в реальном времени
Простая настройка, маленькая нагрузка на систему, высокая точность определения текста! Многие знают, что экранные переводчики не справляются с текстом на светлом и пестром фоне. Но я нашел отличное решение этой проблемы. Обзор глобального обновления приложения ScreTran.
Коротко
Скачать можно по ссылке ниже. Там же вы найдете описание как настроить приложение.
ВАЖНО!
1. Игра должны быть запущена либо в оконном режиме, либо в borderless-режиме.
2. Чем меньше область захвата текста, тем меньше нагрузка на CPU.
Чуть по длиннее
Я уже писал статью, как я будучи в отпуске захотел составить конкуренцию Translumo и написать экранный переводчик для прохождения Yakuza, почитать можно ниже:
Я добавил демонстрацию работы приложения в сложных условиях, например как это работает в Final Fantasy, в статье о Translumo говорилось, что с этой игрой ни один OCR не справится, как видите всё работает:
Кроме этого теперь есть возможность выбрать из нескольких переводчиков: Google, Yandex, Bing
Добавил чисто экспериментальную функцию по выбору модели распознавания. Теперь приложение может распознавать японские, китайские и корейские иероглифы. Функция экспериментальная потому, что тестировалось достаточно мало и добавлено больше по просьбе пользователей.
Так как при обращении к переводчикам используется автоопределение языка распознанного текста, то в теории (ВОЗМОЖНО) переводится будет не только с английского языка, а например с испанского или другого языка использующего латинский алфавит.
А теперь совсем длинно или о моих сладостных страданиях
Первая версия приложения работала хорошо, но не обходилось и без казусов.
Всё таки Tesseract, используемый для распознавания текста, явно давал знать, что он используется для распознавания текста документов, хотя очень хотелось, что бы он работал везде (или хотя бы в Yakuza). Как решить?
Решение 1. Обучить Tesseract шрифтам Yakuza.
Я сделал более 400 скринов диалогов из игры и начал обучать модель:
Обучил и начал проверять, по ощущениям стало чуть лучше, но стало ЗНАЧИТЕЛЬНО больше опечаток. Может быть надо модель обучить конкретно шрифту? Порывшись в Discord-е мододелов Yakuza, я нашел способ вытащить шрифт из игры:
Кстати, а вы знали, что в Yakuza 4 Remastered вшит русский шрифт, хотя по факту официального русского перевода никогда не было?
Обучил, но и эта попытка не дала хорошего результата. Нужно другое решение.
Решение 2. Использовать OpenCV для выделения текста.
OpenCV это такая библиотека компьютерного зрения позволяющая обрабатывать изображение и помогающая выделять на ней объекты.
Я хотел, что бы захватываемое изображение преобразовывалось в более документоподобный вид понятный Tesseract. Долго экспериментируя накладывая разные фильтры и преобразования, я добился изображения похожего на документ.
Tesseract стал лучше понимать текст, но всё равно давал осечки и пропускал реплики. Можно ли сделать лучше?
Решение 3. Использовать Решение 2, но с Windows OCR
На удивление где Tesseract не справляется, Windows OCR спокойно переваривает выделенный текст. Но он имеет урезанную функциональность относительно Tesseract - нельзя узнать, точность распознавания, допускает ошибки, которые не делает Tesseract. Вроде бы меня устраивает, приложение станет работать намного круче. А можно что бы еще лучше?
Решение 4. Найти другой OCR движок
Плюнуть и как в Translumo попробовать EasyOCR? Но он требовательный к ресурсам. Почитав документацию EasyOCR и глянув в исходный код Translumo, я понял, что EasyOCR работает на Python и автор Translumo связал между собой Python и C# код. А что если OCR движок нужно искать не для C#, на котором я пишу, а для Python? И тут я натыкаюсь на PaddleOCR - это обученный нейросеткой китайский мощный OCR движок для распознавания текста на абсолютно разных фотографиях + имеет фичу распознавания иероглифов.
Примеры с которыми справляется PaddleOCR меня удивили и я понял, что мне стоит попробовать проверить этот движок.
Целый день мучаясь с попытками запустить это Python решение на C#, я случайно натыкаюсь на готовую китайскую библиотеку PaddleSharp! И уже через час у меня начинает работать PaddleOCR. Результаты распознавания меня очень сильно порадовали, это не стоит рядом с Tesseract и Windows OCR! Единственное, что потребление ресурсов CPU 15 - 20%, Tesseract же грузил процессор всего на 10% (проц. AMD Ryzen 2600). Правда что бы добиться этих 15-20%, пришлось немного подкрутить настройки библиотеки, но я думаю качественное распознавание того стоит.
А так как этот OCR еще умеет и в иероглифы, я могу добавить распознавание китайского, корейского и японского языка.
Выбираем PaddleOCR и точка.
Не Гуглом единым
Меня тяготило качество перевода Google Translate, я хотел добавить альтернативных переводчиков. Раз на Python много всяких нейросетевых моделей, может есть модели переводчиков? И действительно есть!
Для проверки качества перевода я снова взял кусок описания самой лучшей хостес серии Yakuza Гороми:
Goromi wears a pink snakeskin bodycon dress and matching hotpants, along with a pair of fishnet stockings and hot pink pumps. She wears a large bow made of the same material to tie up her blonde hair. She also has an assortment of bangles and other gaudy jewelery, including a necklace and hoop earrings. Her nails are painted pink with a glittery floral pattern.
SeamlessM4T
Умеет не только в текстовый перевод но и в TTS, обещает даже что может из голоса на одном языке перевести в голос на другом языке.
Комментарии я думаю излишни.
NLLB
Типа очень крутая модель от запрещенной в Российской Федерации организации Facebook, которую я часто видел в рекомендациях:
EasyNMT
Эта библиотека Python, ассоциирует себя с альтернативой NLLB.
Вывод на Python нет хороших нейросетевых переводчиков на русский язык.
По моему мнению самым лучшим переводчиком является DeepL - но у него есть лимиты. Надо искать, что то безлимитное и потратив еще денёк на поиски я наткнулся на очень хорошую библиотеку, которая без особых для меня усилий, позволила мне добавить перевод от Bing и Yandex.
Причем перевод от Yandex с английского на русский, мне понравился намного больше чем перевод от Google.
Спасибо всем тем кто дочитал до сюда. Буду рад вашим комментариям, вопросам и пожеланиям!
Теги: Перевод, Локализация, Экранный переводчик, Screen Translator