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: полезные изменения проходили слепое сравнение, неудачные идеи не скрывались. Для проекта, который ведёт один человек с одним внешним контрибьютором, это нетривиальная прозрачность.