29 сентября вышла вторая версия формата .tbook — офлайн-читалки, где нажатие на слово показывает перевод всего предложения с подсветкой нужного фрагмента. За четыре месяца вокруг формата появились Android-приложение, десктопный клиент, офлайн-словари и веб-конвертер. Разбираем, что реально изменилось и где ещё есть шероховатости.

Что такое tbook и почему автор переделал формат

tbook — это формат электронной книги, в котором уже зашиты переводы с пословным выравниванием. Нажимаешь на слово в оригинале — видишь перевод предложения, нужное слово подсвечено. Всё работает без интернета: переводы хранятся внутри файла.

Проблема первой версии была не очевидной: файл проходил валидацию, но при тапе на слово читалка подсвечивала в переводе совсем другой фрагмент. Формально ссылки заполнены, фактически смысл потерян. Именно такие случаи, по словам автора, стали главным поводом для переработки.

Читалки: Android 1.14 и десктоп на Tauri

Android-приложение TReader дошло до версии 1.14. Из новых функций — режим для e-ink без анимаций, транскрипция английских слов с выбором американского или британского произношения, озвучка через TTS. Билингвальный режим показывает оригинал и перевод одновременно: в двух колонках или строка за строкой. Интерфейс и справка доступны на девяти языках.

Десктопный TReader собирается для Windows, macOS и Linux. Стек — Tauri v2: Rust обрабатывает книгу, поиск и словари, Svelte 5 рисует интерфейс через системный WebView. Бинарь весит около 6 МБ. Функционально клиент не уступает мобильному: тот же перевод по нажатию, транскрипция, билингвальный режим, сноски, изображения, таблицы, поиск.

На Linux доступны пакеты .deb, .rpm и .AppImage. Обе читалки открывают книги v1 и v2 — переносить старую библиотеку не нужно.

Офлайн-словари: .tdict поверх тапа

Перевод по тапу отвечает на вопрос «что слово значит в этом предложении». Для изучающих язык этого мало: нужны часть речи, произношение, словоформы, другие значения. Для этого появился формат .tdict — SQLite-файл, который читалки скачивают отдельно и используют офлайн.

Внутри три таблицы: метаданные, словарные записи и словоформы. При поиске лемма (начальная форма слова) приоритетнее совпадения по форме — чтобы точное слово не терялось среди похожих. Данные берутся из Wiktionary через kaikki.org, лицензия CC BY-SA 4.0.

Языковые парыКоличество
Уже собранывсе 20 направленных пар между EN, RU, DE, ES, IT
Загрузкатолько нужная пара, из приложения

Глоссарий имён: с 45% до 97% правильного согласования

Раньше один персонаж за несколько глав мог стать «Айрин», «Ирин» и «Ирен» — конвертер обрабатывал текст небольшими порциями и не помнил прежний выбор. Теперь перед переводом собирается глоссарий имён и терминов, который передаётся с каждым запросом к модели.

Глоссарий можно построить отдельно и отредактировать вручную через флаг --only-glossary — это добавил первый внешний контрибьютор Никита Пимкин. Измерения показали: 40 записей покрывают 61,9% упоминаний терминов в тестовой книге, 300 записей — 97,2%.

Для персонажей добавлены теги рода. На тексте, который модель не знала заранее, правильное согласование выросло с 45,2% до 97,6%. Глоссарий собирается отдельно для каждого языка перевода — иначе русские варианты имён могут попасть в немецкий текст.

Выравнивание: гибрид LaBSE и LLM вместо чистого LLM

Выравнивание — это то, какое слово оригинала к какому слову перевода привязано. В первой версии это делал LLM целиком, что было медленно и давало пробелы.

Теперь локальная модель LaBSE на CPU разбирает основную массу предложений, LLM дорабатывает примерно 4% сложных случаев. Гибридный режим работает в 5–8 раз быстрее чистого LLM-выравнивания при лучшем покрытии слов.

Отдельно появилась обработка идиом. Раньше gave up могло разбиться на две независимые части — формально подсветка есть, но смысл потерян. После доработки алайнер связывает gave up с «бросил» целиком. На проверенном романе доля работающих тапов выросла с 79% до 96%.

Конвертер стал доступнее: веб-версия и GUI

Открытый локальный конвертер никуда не делся, но для его запуска нужны Go, Python и модель LaBSE весом около 1,8 ГБ. Для тех, кому это лишнее, появился веб-конвертер: загружаете EPUB или FB2, выбираете язык и модель, получаете .tbook. За ним работает тот же открытый конвертер.

В октябре вышел GUI-конвертер на Wails: мастер настройки ключей, оценка книги до конвертации, очередь и живой прогресс. Готовые бинарники есть для основных ОС, хотя за пределами Linux пока мало тестировался.

Добавились новые провайдеры моделей: gonka, Claude через локальный CLI, Ollama и llama.cpp. Можно выбирать между облачными и локальными моделями, качество у них разное.

Где это пока не дотягивает

Несколько вещей в источнике названы прямо. macOS-версия без нотаризации — неудобный первый запуск для большинства пользователей. GUI-конвертер слабо протестирован вне Linux. Качество локальных моделей уступает облачным — это оговорка самого автора.

Общая библиотека переведённых книг существует, рядом с ней появился Telegram-бот для поиска по каталогу. Автор упоминает его, но отдельно оговаривает, что бот создан сторонними пользователями и вопрос об этичности такого распространения он для себя не закрыл.

Около двадцати отчётов об экспериментах опубликованы как issues на GitHub: полезные изменения проходили слепое сравнение, неудачные идеи не скрывались. Для проекта, который ведёт один человек с одним внешним контрибьютором, это нетривиальная прозрачность.

Источники