Привет. Это пост про небольшое приложение, которое я сделал для себя. Скажу сразу: писал я его в паре с нейронкой. Как Хабр сейчас относится к таким проектам, не знаю, но вдруг кому-то пригодится.
Захотелось мне читать больше книг на иностранном языке – на электронной книге, разумеется. Но удобного словаря для читалки, который сразу переводил бы слово или фразу поверх страницы, а при наличии сети ещё и объяснял грамматику, я не нашёл: AI-плагины к KOReader перегружены, а словари для FBReader выглядят как привет из начала двухтысячных. Поэтому сделал свой.
Работает на читалках вроде Boox: подключается к FBReader, CoolReader или KOReader как внешний словарь и вызывается из меню выделения текста, онлайн и офлайн. Изначально это был эксперимент, но у меня оно прижилось, поэтому решил поделиться.
Суть функционала в следующем:
-
приложение регистрируется в системе по протоколу “ColorDict 3” и различные читаки могут дергать его как внешний словарь;
-
приложение при вызове открывает окошко поверх читалки (у меня FBReader);
-
позволяет переводить отдельные слова и фразы офлайн:
-
перевод каждого слова по скачанным языковым пакетам: словари мы собираем сами из Викисловаря (выгрузки kaikki.org) + WikDict – там, где в Викисловаре нет статьи. Сейчас это два десятка пар: книги на 8 языках с ответами на английском, на 5 – с ответами на русском, плюс английский: французский, испанский, итальянский, португальский, польский в качестве эксперимента. Готовые словари не подошли: качество у всех разное, формы слов находятся через раз. Поэтому собираю свои, и перед публикацией каждый пак проверяется тестами;
-
перевод фраз – с использованием translation-моделей от Firefox: напрямую, если один из языков английский, иначе через английский (de -> en -> ru), на движке Bergamot прямо на устройстве (через английский оттенки вроде ты/вы могут теряться);
-
для определения исходного языка используется легкая модель определения языка фразы из проекта fastText – для уточнения с какого языка должен идти офлайн-перевод;
-
для слов подсказывает грамматику: der/die/das и множественное число для немецких существительных, основные формы глаголов (gehen — ging — ist gegangen), сильные и неправильные глаголы; любая форма слова в тексте ведёт к словарной: Häusern → das Haus, went → go.
-
-
при наличии подключения к сети доступны доп фишки с AI:
-
интеграция с разными провайдерами по API (нужен свой ключ API), в том числе OpenRouter где есть даже бесплатные модельки/лимиты по API, и свой сервер (LM Studio, Ollama);
-
AI перевод фраз, зависит от выбранной модели и провайдера;
-
AI «Разбор»: грамматика фразы и трудные слова;
-
AI «Контекст»: что значит здесь, стиль, идиомы, плюс примеры с переводом;
-
по нажатию на любую AI-вкладку все запросы уходят разом и кэшируются, остальные вкладки потом открываются мгновенно.
-
-
Также есть стандартные фишки типа истории (у каждой записи — короткий перевод), избранных слов и фраз итд.
Немного цифр:
-
Boox Go 6 (Snapdragon 662, 2 ГБ): офлайн-перевод предложения за 0,1–0,9 с;
-
языковой пак – 25–60 МБ на пару, качаешь только нужные;
-
пара публикуется, только если её словарь знает не меньше 85% из 5000 самых частых слов языка (с формами);
-
20 пар, интерфейс на 8 языках, без интернета работает всё, кроме AI-вкладок.
Удивило меня в итоге не то, что с нейронкой можно быстро собрать приложение, — к этому уже привыкаешь. Удивило, сколько всего готового и открытого уже лежит под рукой. Модель fastText размером около мегабайта за миллисекунды определяет язык текста среди 176 языков. Весь Викисловарь доступен в виде структурированных данных (kaikki.org), и из него можно собрать свои словари с родом, формами слов и спряжениями. У Mozilla есть открытые модели офлайн-перевода, которые на слабенькой Boox Go 6 переводят предложение меньше чем за секунду. А AI поверх всего этого прикручивается за вечер, через любого провайдера или даже свой сервер. Пять лет назад для такого понадобилась бы команда, а сейчас это пет-проект на пару дней.
В итоге получился проект InkPeek (https://github.com/kafeg/inkpeek) где я с нейронкой на пару реализовал то что нужно именно мне: можно читать литературу на интересующем языке, без сети получать удобный перевод слов (+грамматика +глаголы) и целых фраз (разумеется качество не сравнимо с онлайн версиями), а при наличии сети – еще и получать доп объяснения по грамматическим конструкциям, примеры итд.
Как подключить: ставите APK из Releases, во вкладке «Языки» отмечаете нужные пары и скачиваете. В FBReader: Настройки -> Словарь и переводчик -> «ColorDict 3» и для слов, и для фраз. Для KOReader, Cool Reader и Moon+ инструкция есть в README.
У меня все работает на Boox Go 6, довольно слабой книжке, так что проблем на любой читалке быть не должно. В README на GitHub есть технические подробности. Возможно, кому-то такое приложение-словарь для читалки будет полезно, как и мне.
Код под MIT, словари под CC BY-SA (Викисловарь), модели под MPL-2.0 (Mozilla).
Автор: vitaly_KF


