# doc-html-translate **Языки README:** [English](README.md) · **Русский** · [Українська](README_UK.md) Преобразует EPUB, PDF, MOBI, AZW3, FB2, RTF, TXT, Markdown, HTML и комиксы CBZ/CBR/CB7/CBT в чистый локальный HTML под Windows - с необязательным переводом через Google Cloud или локальную модель Ollama. Аккаунт в облаке не нужен, лишних церемоний нет, и да, это по-прежнему работает на обычной Windows в 2026 году. ## Ссылки проекта - Сайт: https://serzhyale.github.io/doc-html-translate/ - Репозиторий: https://github.com/SerZhyAle/doc-html-translate - Последний релиз: https://github.com/SerZhyAle/doc-html-translate/releases/latest - Расширение для браузера: https://chromewebstore.google.com/detail/nmcckamdocainafmmompkbmelkpbnmic - Страница автора: https://sza.od.ua - Почта: sza@ukr.net ## Издания doc-html-translate существует в нескольких видах - берите тот, что удобнее; конвертер у всех один: - **CLI** - `doc-html-translate.exe`, конвертер командной строки и обработчик файловых ассоциаций Windows. - **Настольное приложение (GUI)** - `doc-html-ui.exe`, окно поверх того же конвертера, открывающее все параметры CLI (выбор файла, перетаскивание, диалог настроек, переключатель обработчика по умолчанию - строго по желанию, выключен по умолчанию). - **Приложение из Microsoft Store** - то же настольное приложение (GUI + CLI) в виде пакета MSIX: подписано Store, обновляется само, скачивать вручную ничего не нужно. Под MSIX флаг `-register` ничего не делает (ассоциации приходят из манифеста пакета). Подробности упаковки: [`msix/README.md`](msix/README.md). - **Расширение для браузера** - расширение Chromium MV3, которое перерисовывает документы (PDF, EPUB, MOBI, AZW3, FB2, RTF, TXT, Markdown, локальный HTML и комиксы CBZ/CBT) в чистый HTML прямо в браузере, чтобы встроенный **перевод страницы** работал на них без установки приложения. Установка - [Chrome Web Store](https://chromewebstore.google.com/detail/nmcckamdocainafmmompkbmelkpbnmic); исходный код и документация - в [`extension/`](extension/). - **Сайт и документация** - [лендинг](https://serzhyale.github.io/doc-html-translate/), многоязычная документация и отдельная [страница расширения](https://serzhyale.github.io/doc-html-translate/extension.html). Настольное приложение и расширение независимы и дополняют друг друга: приложение превращает файл в локальную папку с HTML, которая остаётся у вас; расширение делает ту же переверстку прямо во вкладке. Оба опираются на одну «бесплатную» идею - отдать браузеру чистый HTML и позволить его встроенному переводчику сделать остальное. ## Возможности - Конвертация: EPUB, PDF, TXT, Markdown, FB2, RTF, HTML, MOBI, AZW3 - Чтение комиксов: архивы CBZ / CBR / CB7 / CBT открываются постранично, текст в репликах распознаётся (OCR) и накладывается на страницу переводимыми плашками - так что «Перевести страницу» в Chrome работает и на репликах. OCR включается автоматически (иначе в комиксе просто нечего переводить) - Перевод отдельного изображения: передайте PNG/JPG/JPEG/WebP/GIF/BMP/TIFF - приложение распознает текст и положит переводимые плашки поверх картинки (дальше работает встроенный перевод страницы Chrome - то же поведение, что и у расширения). Для OCR нужен движок `tesseract` (см. `-ocr-lang`) - Локальный HTML с созданной навигацией и оглавлением - Настоящее многоуровневое оглавление: берётся авторское `toc.ncx` (EPUB2), `nav.xhtml` (EPUB3) или закладки PDF; при их отсутствии сканируются заголовки (`h1`-`h6`) и расставляются якоря. Отображается сворачиваемым деревом с глубокими ссылками; глубина настраивается (`-toc-depth`) - Необязательный перевод: - Google Cloud Translation API (`-google`) - Локальная Ollama (`-ollama`) - Жёсткий ограничитель расходов для платных движков: `-max-cost N` отменяет отправку, если оценка в долларах превышает `N` - Удобство чтения встроено в готовый HTML (без сервера, работает по `file://`): - Темы чтения - Light / Sepia / Dark / Night, выбор запоминается - Размер шрифта и гарнитура (с засечками / без засечек / моноширинная) - Продолжение с того места, где остановились - Интерфейс на 13 языках: `en ru uk de it es fr pt ar hi bn ur zh` - флаг `-ui-lang <код>` в CLI, переключатель языка в GUI и в расширении. По умолчанию берётся язык системы (в расширении - язык браузера). Язык интерфейса не меняет язык документа: атрибут `` готовой страницы остаётся языком книги, иначе Chrome перестал бы предлагать перевод страницы. ## Установка Сборка из исходников: ```powershell go build -o build/doc-html-translate.exe ./cmd/doc-html-translate ``` Или скриптами проекта: ```powershell ./scripts/build.ps1 ``` ## Загрузка приложения Готовые сборки для Windows x64 публикуются на странице релизов: - https://github.com/SerZhyAle/doc-html-translate/releases/latest В каждом релизе есть: - `doc-html-translate-setup-<версия>.exe` - **универсальный установщик** (x86 + x64, для текущего пользователя, без прав администратора) - самый простой путь: ставит GUI + CLI, с необязательными пунктами «Открыть с помощью», «Преобразовать в HTML» в контекстном меню и задачей для расширения - `doc-html-translate-<версия>-windows-x64.exe` - консольная утилита (portable) - `doc-html-ui-<версия>-windows-x64.exe` - настольное приложение (portable) - `doc-html-translate-<версия>-windows-x64.zip` - полный архив (обе программы + LICENSE + README) Установщик работает и на 32-, и на 64-битной Windows и не требует прав администратора (ставит в профиль пользователя). Portable-варианты остаются для работы без установки. Установка через winget (portable-сборка): ```powershell winget install SerZhyAle.DocHtmlTranslate ``` ## Быстрый старт ```powershell # Обычный сценарий: конвертировать и открыть в браузере (без перевода, пока не заданы -google или -ollama) doc-html-translate.exe "book.epub" # Конвертация + перевод Google doc-html-translate.exe -google "book.epub" # Конвертация + перевод Ollama doc-html-translate.exe -ollama -ollama-model gemma3:12b "book.epub" # Явное направление перевода doc-html-translate.exe -src en -dst ru "book.epub" # Свой каталог для результата doc-html-translate.exe -folder "D:\out" "book.pdf" # Полная пересборка, даже если результат уже есть doc-html-translate.exe -force "book.epub" # Ограничить платный перевод: отменить, если оценка превышает $2.00 doc-html-translate.exe -google -max-cost 2 "book.epub" # Интерфейс на другом языке doc-html-translate.exe -ui-lang de "book.epub" # Стать обработчиком поддерживаемых типов по умолчанию (по умолчанию выключено) doc-html-translate.exe -register # Отменить это - отпустить ассоциацию (пункт контекстного меню и «Открыть с помощью» остаются) doc-html-translate.exe -unregister ``` ## Самый быстрый бесплатный сценарий (рекомендуется) Для многих самый удобный путь такой: 1. Откройте файл приложением или выполните команду по умолчанию: ```powershell doc-html-translate.exe "book.epub" ``` 2. Дайте программе открыть `index.html` в Chrome. 3. Используйте встроенный перевод страницы Chrome на свой язык. Флаг `-notranslate` по-прежнему есть, но это лишь явная запись того же поведения по умолчанию. Почему так делают чаще всего: - Бесплатно (никакого биллинга Google Cloud и счетов, которых ждёшь с содроганием) - Быстро начать (одна команда, без церемоний) - Удобное чтение в браузере с навигацией по страницам ## Флаги | Флаг | По умолчанию | Описание | |------|--------------|----------| | `-register` | `false` | Стать обработчиком по умолчанию в HKCU для всех поддерживаемых типов (выключено; при первом запуске добавляется только пункт контекстного меню и предлагается этот режим) | | `-unregister` | `false` | Отпустить ассоциацию по умолчанию (пункт «Преобразовать в HTML» и «Открыть с помощью» остаются) | | `-register-openwith` | `false` | Добавить программу в список «Открыть с помощью» и пункт «Преобразовать в HTML», не делая её обработчиком по умолчанию (GUI `doc-html-ui` делает это сам при запуске) | | `-notranslate` | `false` | Только конвертация, без перевода | | `-noopen` | `false` | Не открывать браузер после конвертации | | `-google` | `false` | Перевод через Google Cloud Translation API | | `-ollama` | `false` | Перевод через локальную Ollama | | `-free` | `false` | Синоним `-ollama` | | `-ollama-model` | `gemma3:12b` | Имя модели Ollama | | `-ollama-parallel` | `1` | Число параллельных запросов | | `-ollama-ctx` | `8192` | Размер контекста Ollama | | `-max-cost` | `0` | Отменить платный перевод до отправки, если оценка в долларах превышает N (`0` - без ограничения) | | `-ocr` | `false` | Распознавать текст на изображениях документа и накладывать его переводимым HTML (нужен Tesseract) | | `-ocr-lang` | (из `-src`) | Язык(и) OCR, например `eng` или `eng+rus` (по умолчанию из `-src`, иначе `eng`) | | `-ocr-langs` | `false` | Показать установленные и доступные языки OCR и выйти | | `-ocr-download` | пусто | Скачать языковой пакет OCR (например, `-ocr-download rus`) и выйти | | `-split` | `5000` | Делить страницы каждые N символов (`0` отключает деление) | | `-toc-depth` | `0` | Глубина вложенности оглавления в `index.html` (`0` - без ограничения, `1` - только главы) | | `-multipage` | `false` | Делать несколько HTML-страниц с оглавлением вместо одной страницы по умолчанию | | `-folder` | пусто | Родительский каталог для результата | | `-force` | `false` | Извлекать и переводить заново, даже если результат уже есть | | `-ui-lang` | пусто | Язык интерфейса: `en ru uk de it es fr pt ar hi bn ur zh` (пусто - язык системы) | | `-v` | `false` | Подробный вывод | | `-src` | `en` | Исходный язык | | `-dst` | `ru` | Язык перевода | | `-version` | `false` | Показать версию и выйти | ## Ключ Google API Для `-google` ключ берётся из первого доступного источника: 1. `google_api.key` рядом с исполняемым файлом (обычная сборка), затем 2. `%LOCALAPPDATA%\doc-html-translate\google_api.key` (доступный на запись путь пользователя, который работает и при установке из Microsoft Store/MSIX, где каталог программы только для чтения). Пример содержимого файла: ```text AIzaSy...ваш_ключ... ``` В `doc-html-ui` отметьте **Google Translate**, чтобы появилось поле ключа - вставьте ключ и нажмите **Save**, он будет записан по пути выше (править файлы вручную не нужно). Если пригодного ключа нет, приложение пишет предупреждение и пропускает перевод - лучше сказать прямо, чем гадать. ## Наложение OCR (`-ocr`) Текст, впечатанный в изображения документа (сканы, комиксы, скриншоты), не виден ни одному переводчику текста. С флагом `-ocr` приложение распознаёт этот текст и накладывает его настоящим, переводимым HTML поверх каждой картинки - так что и собственный перевод (`-google` / `-ollama`), и «Перевести страницу» в браузере переводят и картинки тоже. Работает для форматов, чьи изображения доходят до этапа HTML. Для OCR нужен внешний движок `tesseract`. Если его нет, конвертация не прерывается - просто изображения остаются без текстового слоя. ## Особенности поведения - Запуск без аргументов открывает сценарий регистрации, а не конвертацию. - Если рядом уже есть `index.html`, результат переиспользуется - пока не передан `-force`. - Язык интерфейса не влияет на язык готового документа. ## Разработка Скрипты в `scripts/`: `build.ps1`, `build-ui.ps1`, `test.ps1`, `lint.ps1`, `check.ps1`. Руководство для агентов и участников - [AGENTS.md](AGENTS.md). ## Лицензия MIT - см. [LICENSE](LICENSE). --- **О переводах интерфейса.** Интерфейс доступен на 13 языках. Английский, русский и украинский вычитаны автором; остальные десять переведены машинно и не вычитаны - исправления присылайте на sza@ukr.net.