# doc-html-translate
**Мови README:** [English](README.md) · [Русский](README_RU.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.