dodari

vEduardovichApache-2.0活跃维护

用本地或已有的 LLM 整本翻译电子书,支持 EPUB 双语对照输出,省去逐章手工翻译的麻烦。

Translate entire books with AI you already have.

v2.1发布于 2026-10-12 04:48 UTC247star35fork同步于 2026-11-11 00:01 UTC

怎么上手

由 README 提炼,执行前请确认
git clone https://github.com/vEduardovich/dodari.git
cd dodari
sh start_mac.sh
硬件要求按 README 说明

本地模型方案:Mac 需 Apple Silicon M1 起、统一内存 8–16 GB(标准质量),高质量 31b 模型需 M3 Pro/M4 Max 起、32 GB 内存;Windows 标准质量无需 GPU、8 GB 内存,高质量需 24 GB 以上显存、64 GB 内存。存储需 10 GB(标准)或 35 GB SSD(高质量),Python 3.11 以上。

24G 显存可跑支持 Apple Silicon多卡 / 张量并行
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

用你已有的 AI 订阅或本地模型,把整本 EPUB、PDF、TXT 书籍翻译成多语言版本

用本地或已有的 LLM 整本翻译电子书,支持 EPUB 双语对照输出,省去逐章手工翻译的麻烦。

核心能力

  • 支持 EPUB、PDF、TXT 整书翻译,PDF 输出为 EPUB 以保留版式
  • 自动检测源语言与书籍体裁,并可选择翻译语气风格
  • 用 AI 抽取人名等关键术语生成术语表,全书统一译法
  • 同时输出原文对照版和纯译文版,便于逐句比对
  • Claude 与 ChatGPT 订阅用户可通过官方 CLI 用自带额度翻译

容易踩的坑

首次运行要下载 AI 模型并安装依赖,耗时很长;启动后需手动打开 http://127.0.0.1:7860;Windows 上翻译速度明显慢于 Mac,且高质量模型需大显存;出错时可删除 dodari_env 文件夹后重跑启动脚本。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

4 个版本v2.1
  1. v2.1最新正式版2026-10-12 · 2026-10-12 04:48 UTC
    • 2026.10.09 클로드 구독 번역은 Haiku max로 번역
    • 2026.10.12 번역 품질 향상 패치(특수한 상황의 번역누락, 서식보존등)
  2. v2.02026-09-29 · 2026-09-29 10:59 UTC
    查看更新说明
    • 2026.05.04 윈도우 플랫폼 추가, 특수문자관련 번역 오류 수정
    • 2026.05.06 다국어버전 적용
    • 2026.05.20 윈도우 unix줄바꿈 버그 수정 with ultra-vi우분투 awq 번역 모델 추가
    • 2026.05.28 Homebrew가 Python 자동 업데이트시 기존 실행 환경이 깨지는 문제 발생. 명시적 경로 지정으로 수정완료
    • 2026.06.12 우분투 GPU 메모리 설정 최적화. 모니터·데스크탑 환경과 VRAM 충돌로 번역 중 멈추는 문제 수정
    • 2026.06.14 EPUB 번역 대상 태그 확장
    • 2026.06.25 대화체 PDF 번역 시 화자별로 문단을 나눠 줄바꿈 복원
    • 2026.07.31 번역이 중간에 끊겨도 멈춘 지점부터 이어서 번역하는 재개 기능 추가
    • 2026.08.01 클로드·ChatGPT(코덱스) 구독자는 본인 구독 모델로 번역 가능 (공식 CLI 사용)
    • 2026.08.11 텍스트 기반 PDF의 OCR 생략으로 청크속도 크게 향상, Gemma4 번역시 주석추가 오류 수정
    • 2026.08.13 문장분리 라이브러리(NLTK) 보안 취약점 패치 버전으로 업데이트 with Xuuyuan
    • 2026.08.24 우분투 멀티 GPU(텐서 병렬) 지원 추가(VLLM_TP), 양자화 선택 가능(VLLM_QUANT) with polbel11
    • 2026.08.24 브라우저 연결이 끊겨도 재접속하면 번역 진행 상태와 다운로드 목록이 자동 복원되도록 개선
    • 2026.09.12 PDF 변환 실패 시 결과물 없이 번역완료로 표시되던 문제 수정. 첨부파일 경로에 한글이 포함되어 있을경우 에러메시지 띄우고 취소하기 추가. 도다리 시작후 모델선택하도록 변경.
    • 2026.09.29 AI로 설치하기 추가.
  3. v1.12024-05-24 · 2024-05-24 11:11 UTC
    查看更新说明

    srt 자막번역 기능 추가

  4. v1.02024-03-27 · 2024-03-27 07:41 UTC
    查看更新说明
    • 기능요약 txt, epub 파일 한영/영한 자동번역

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Install with AI

    • Required app: Codex or Claude Code
    • Minimum plan: ChatGPT Plus or higher, or Claude Pro or higher
    1. Enter this prompt
    https://github.com/vEduardovich/dodari install Dodari
    
    1. If the AI asks for permission, "Allow"
    2. When the login window opens, sign in, then "Continue"
    3. When the Dodari window opens, installation is complete

    Overview

    Key Features

    1. Translates EPUB (e-books), PDF, and TXT files.
    2. Note: To preserve layout, PDF translation output is saved as EPUB rather than PDF. Complex formulas and tables are embedded as images.
    3. Outputs two files: Translation (Original) and Translation only — allowing sentence-by-sentence comparison with the source.
    4. Automatic language detection.
    5. Cross-translation between Korean · English · Japanese · Chinese · French · Italian · Dutch · Danish · Swedish · Norwegian · Arabic · Persian.
    6. Automatic book genre detection.
    7. Selectable translation tone/style.
    8. Glossary — extract key terms (names, etc.) with AI and apply them consistently throughout.
    9. No file size limit.
    10. Claude and ChatGPT (Codex) subscribers can translate with their own subscription via the official CLI, and pick the model and reasoning effort in the UI. The defaults are built in; you can change them in your own dodari_config.json.

    System Requirements

    Installation & Setup

    For beginners:

    1. Click Download ZIP
    2. Extract the archive, then:
    • Windows: double-click start_windows.bat
    • Mac: run sh start_mac.sh in a terminal window
    • Ubuntu/Linux: run sh start_ubuntu.sh in a terminal window
    1. Open http://127.0.0.1:7860 in your browser — Dodari 2 will be ready.

    On first run, setup and AI model download will take a long time. Please be patient! If you encounter an error, delete the dodari_env folder and run the script again.

    git clone https://github.com/vEduardovich/dodari.git
    cd dodari
    
    • Windows: run start_windows.bat
    • Mac: run sh start_mac.sh
    • Ubuntu/Linux: run sh start_ubuntu.sh

    The Claude (subscription CLI) engine translates with the Haiku model (claude-haiku-5-5) at reasoning effort max. Pick another model or reasoning effort in the UI to translate with that instead. If your claude CLI is too old for Haiku, Dodari updates it automatically.

    Project Structure

    dodari/
    ├── dodari_env         # Folder where runtime dependencies are installed
    ├── dodari.py          # Main application
    ├── start_mac.sh       # Mac launch script
    ├── start_ubuntu.sh    # Ubuntu(vLLM) launch script
    ├── start_windows.bat  # Windows launch script
    ├── dodari_config.json # (optional, you create it) your settings over the built-in defaults (subscription CLI models/reasoning effort, Ubuntu vLLM options) — not tracked by git
    ├── ui_config.local.json # Last UI choices (language, engine, CLI model/effort) — written automatically, not tracked by git
    ├── ui_config.json     # Kept only so older installs update cleanly — do not edit
    └── requirements.txt   # Dependency list
    

    Updating to the Latest Version

    For beginners:

    1. Download the ZIP again and extract it.
    2. Overwrite the existing Dodari folder with the new files.

    For advanced users:

    1. git pull

    Your settings are kept. Dodari saves your UI choices in ui_config.local.json. To change a setting such as the Ubuntu vLLM memory options, create dodari_config.json in the Dodari folder and put in only the values you change (keys and defaults: DODARI_CONFIG_DEFAULTS in dodari.py):

    {"vllm": {"gpu_memory_utilization": 0.85}}
    

    Git does not track these two files, so updates never overwrite them and git pull is not blocked. Do not edit ui_config.json.

    If git pull stops because untracked files such as AGENTS.md or CLAUDE.md would be overwritten (an AI assistant may have created them in the folder), rename or delete those files and run git pull again.

    Translation Speed Reference

    1. The M5 Max is a very high-end machine — the M1 Pro numbers are more representative for most users.
    2. Novels are text-only, so EPUB and PDF translation speeds are similar.
    3. Books with many images or code blocks translate faster as PDF — PDFs skip translating images entirely and embed them as-is, while EPUB translates tables and detailed flags too.
    4. Running ChatGPT Plus's Luna model at max, a 900-page programming book took about 10 hours and used about 28% of the 5-hour limit and about 5% of the weekly limit. That's close to free.
    1. Windows is considerably slower.
    • On a 2020 LG Gram laptop, translating one page of the novel 1984 took 15 minutes for EPUB and 18 minutes for PDF (the first PDF load can take up to 20 minutes)
    • So on a typical Windows laptop, a 100-page EPUB would take roughly 1,500 minutes (25 hours). 200 pages = 50 hours. That said, watching your computer work tirelessly for you is strangely satisfying

    Uninstalling

    1. Remove the program

    Delete the entire dodari folder you downloaded.

    2. Remove the AI model

    Mac

    Delete the folders under ~/.cache/huggingface/hub.

    Windows
    1. Remove Ollama models:
    ollama rm gemma4:e4b
    ollama rm gemma4:31b
    
    1. Uninstall Ollama: Control Panel → Programs → Uninstall Ollama

    Changelog

    • 2026.05.04 — Added Windows support; fixed translation errors related to special characters.
    • 2026.05.06 Implemented Multilingual Support
    • 2026.05.20 Fixed a Unix line ending bug on Windows with ultra-viAdded an AWQ translation model for Ubuntu.
    • 2026.05.28 Fixed an issue where a Homebrew Python auto-update could break the launch environment. Resolved by specifying explicit Python paths.
    • 2026.06.12 Optimized Ubuntu GPU memory settings. Fixed translation crashes caused by VRAM conflicts with monitor/desktop environments.
    • 2026.06.14 Expanded EPUB translation tag coverage.
    • 2026.06.25 PDF dialogue books now split into per-speaker paragraphs, restoring line breaks.
    • 2026.07.31 Interrupted translations now resume from where they left off.
    • 2026.08.01 Claude and ChatGPT (Codex) subscribers can now translate with their own subscription models via the official CLIs.
    • 2026.08.11 Much faster PDF chunk processing by skipping OCR for text-based PDFs. Fixed Gemma4 adding translator notes to translations.
    • 2026.08.13 Updated the sentence-splitting library (NLTK) to a version that patches security advisories with Xuuyuan
    • 2026.08.24 Added multi-GPU tensor parallelism support on Ubuntu (VLLM_TP) and selectable quantization (VLLM_QUANT) with polbel11
    • 2026.08.24 Reconnecting after a dropped browser session now restores translation progress and download list
    • 2026.09.12 Fixed the status showing "translation complete" with no output when PDF conversion failed. Added an error message that cancels the translation when the attached file path contains Korean (non-ASCII) characters. The model is now selected after Dodari starts, inside the UI.
    • 2026.09.29 Added install with AI.
    • 2026.10.09 Claude subscription translation now uses Haiku max.
    • 2026.10.12 Translation quality improvement patch (fixed untranslated text in special cases, better formatting preservation, etc.)

    For AI assistants: how to install Dodari

    Follow this when the user asks you to install, start or stop Dodari. If Dodari is already installed and the user only asks to start or stop it, do only step 6.

    Rules

    • Talk to the user in the user's language. Before every permission prompt or login window, tell the user what to click.
    • Run the commands yourself, in order. Read each output before you go on. Do not invent output.
    • Do not download local AI models, Ollama, MLX or vLLM. Do not translate the user's files yourself.
    • Codex: for every step marked [network] or [outside workspace], request escalated (outside-sandbox) permission and tell the user to approve it. If escalation is not possible, give the user the command to paste into their own terminal and wait.
    • Claude Code: ask the user before installing system tools.
    • Terminal: per step, print one short line in plain words in the user's language (echo "…", PowerShell Write-Host "…") and one result line. Nothing else. Send long output to <install folder>/install.log (before the folder exists: ~/dodari_install.log, Windows %USERPROFILE%\dodari_install.log). On failure print one line with the log path, read the log and explain the cause to the user in simple words.

    1. Check and install the required tools [network] [outside workspace]

    Terminal: [Dodari 1/7] Checking the programs Dodari needs… → while installing one: [Dodari 1/7] Installing Node.js… (a few minutes) → [Dodari 1/7] Programs ready

    • OS: macOS / Linux uname -s (Darwin = macOS, Linux = Linux), Windows echo %OS% in cmd or $env:OS in PowerShell (Windows_NT).
    • Install folder: macOS / Linux ~/dodari, Windows %USERPROFILE%\dodari.
    • Install git, Python and the CLI of the engine (step 3): ChatGPT by default (Node.js + codex CLI), claude CLI only for Claude.
    • Install only what is missing. Check the command itself, also inside the Codex app or Claude Code desktop.
    ToolNeeded forCheckmacOSWindowsLinux (Debian/Ubuntu)
    gitboth enginesgit --versionxcode-select --install (a system dialog opens: tell the user to click Install) or brew install gitwinget install --id Git.Git -esudo apt install -y git
    Python 3.11+both enginesmacOS / Linux: python3.14, python3.13, python3.12, python3.11 or python3 with --version. Windows: python --version or py --versionbrew install [email protected] (Homebrew: https://brew.sh) or the installer from https://www.python.org/downloads/winget install --id Python.Python.3.12 -eUbuntu 24.04+: sudo apt install -y python3.12 python3.12-venv, Ubuntu 22.04: sudo apt install -y python3.11 python3.11-venv
    Node.js + npmcodex-clinode --version and npm --versionbrew install nodewinget install --id OpenJS.NodeJS.LTS -ethe current LTS from https://nodejs.org/en/download
    codex CLIcodex-clicodex --versionnpm install -g @openai/codexnpm install -g @openai/codexnpm install -g @openai/codex
    claude CLIclaude-cliclaude --versioncurl -fsSL https://claude.ai/install.sh | bashpowershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://claude.ai/install.ps1 | iex"curl -fsSL https://claude.ai/install.sh | bash
    • Apple Silicon Mac: use a native (arm64) Python, such as Homebrew's in /opt/homebrew.
    • Windows: if a User Account Control prompt appears, tell the user to click Yes. After installing, open a new terminal and check again.
    • Add >> ~/dodari_install.log 2>&1 to each install command (Windows cmd >> "%USERPROFILE%\dodari_install.log" 2>&1). Add --accept-source-agreements --accept-package-agreements to winget.

    2. Get Dodari [network] [outside workspace]

    Terminal: [Dodari 2/7] Downloading Dodari… → [Dodari 2/7] Download complete (already there: [Dodari 2/7] Dodari is already here)

    • If the install folder already contains dodari.py, skip this step.
    • macOS / Linux: git clone https://github.com/vEduardovich/dodari.git ~/dodari >> ~/dodari_install.log 2>&1
    • Windows: git clone https://github.com/vEduardovich/dodari.git "%USERPROFILE%\dodari" >> "%USERPROFILE%\dodari_install.log" 2>&1

    3. Save the settings [outside workspace]

    Terminal: [Dodari 3/7] Saving settings… → [Dodari 3/7] Settings saved

    Write ui_config.local.json in the install folder before running any start script (create it if it does not exist; git does not track it). If it exists, keep its other keys and set only ui_lang, engine and cli_models. Do not edit ui_config.json.

    • Engine: ChatGPT (codex-cli, gpt-6-luna, max) by default. Use Claude (claude-cli, claude-haiku-5-5, max) if the user asked for Claude or has only a Claude subscription.
    • ui_lang: the user's language, one of ko, en, ja, zh, fr, it, nl, da, sv, no, ar, fa (anything else: en).

    ChatGPT (codex-cli):

    {"ui_lang": "en", "engine": "codex-cli", "cli_models": {"codex-cli": {"model": "gpt-6-luna", "effort": "max"}}}
    

    Claude (claude-cli):

    {"ui_lang": "en", "engine": "claude-cli", "cli_models": {"claude-cli": {"model": "claude-haiku-5-5", "effort": "max"}}}
    

    4. Install the dependencies [network] [outside workspace]

    Terminal: [Dodari 4/7] Installing the files Dodari needs… (about 2 minutes) → [Dodari 4/7] Install complete (failed: [Dodari 4/7] Install failed. Details: ~/dodari/install.log)

    OSCommand
    macOScd ~/dodari && DODARI_SETUP_ONLY=1 bash start_mac.sh > install.log 2>&1
    Linuxcd ~/dodari && DODARI_SETUP_ONLY=1 bash start_ubuntu.sh > install.log 2>&1
    Windows (cmd)cd /d "%USERPROFILE%\dodari" && set "DODARI_SETUP_ONLY=1" && start_windows.bat > install.log 2>&1
    Windows (PowerShell)$env:DODARI_SETUP_ONLY="1"; & "$env:USERPROFILE\dodari\start_windows.bat" > "$env:USERPROFILE\dodari\install.log" 2>&1; Remove-Item Env:DODARI_SETUP_ONLY
    • Success: the last line of install.log is Setup complete (DODARI_SETUP_ONLY=1): Dodari was not started. (check with tail -n 1 ~/dodari/install.log, PowerShell Get-Content "$env:USERPROFILE\dodari\install.log" -Tail 1).
    • "Python 3.11 or higher is required": go back to step 1.
    • Failed: delete the dodari_env folder if it is still there and run the command again.

    5. Log in [network] [outside workspace]

    Terminal: [Dodari 5/7] Checking your ChatGPT login… → login needed: [Dodari 5/7] Sign in in the login window that just opened and click 'Continue' (allow) there. You are done when the page says you are signed in. and [Dodari 5/7] If you don't see the window, open this address: <address> → [Dodari 5/7] Login complete (already logged in: [Dodari 5/7] Already logged in; Claude: Claude and 'Authorize')

    ChatGPT (codex-cli): CODEX_HOME is codex.home in dodari_config.json in the install folder if that file exists and sets it (default ~/.dodari/codex-home; ~ is the home folder, %USERPROFILE% on Windows). The commands below use the default.

    • Create the folder: macOS / Linux mkdir -p "$HOME/.dodari/codex-home", Windows cmd if not exist "%USERPROFILE%\.dodari\codex-home" mkdir "%USERPROFILE%\.dodari\codex-home".
    • Check: macOS / Linux CODEX_HOME="$HOME/.dodari/codex-home" codex login status, Windows cmd set "CODEX_HOME=%USERPROFILE%\.dodari\codex-home" && codex login status, PowerShell $env:CODEX_HOME="$env:USERPROFILE\.dodari\codex-home"; codex login status. Exit code 0 (Logged in …): go to step 6.
    • Log in: run the same command with codex login instead of codex login status, in the background with its output in <install folder>/login.log, for example CODEX_HOME="$HOME/.dodari/codex-home" nohup codex login > ~/dodari/login.log 2>&1 &. If you cannot run it in the background, run it normally.

    Claude (claude-cli):

    • Check: claude auth status --json. "loggedIn": true: go to step 6.
    • Log in: nohup claude auth login > ~/dodari/login.log 2>&1 & (if not possible in the background, claude auth login).

    Both engines:

    • Right after the login window opens, print [Dodari 5/7] Sign in in the login window that just opened and click 'Continue' (allow) there. You are done when the page says you are signed in. (Claude: [Dodari 5/7] Sign in in the login window that just opened and click 'Authorize' there. You are done when the page says you are signed in.).
    • Tell the user: "In the login window that just opened, sign in with the ChatGPT account that has the subscription and click 'Continue' (allow) there. When the page says you are signed in, come back here. Signing in only on the chatgpt.com site or in an older login window does not connect Dodari." (Claude: the Claude account, Authorize, claude.ai.)
    • Find the login address (https://…) in login.log and print it once: [Dodari 5/7] If you don't see the window, open this address: <address>.
    • The user cannot find the login window: open the address yourself with macOS open "<address>", Windows start "" "<address>" (PowerShell Start-Process "<address>"), Linux xdg-open "<address>".
    • Run the check again until it succeeds, then print [Dodari 5/7] Login complete.
    • The user says they signed in but the check still fails: ask them to close the old login windows, open the newest address in login.log (the last https://… line) again with open (Windows start "", Linux xdg-open), and sign in and allow in that window. If the login command has already exited (check with pgrep -fl "codex login" or pgrep -fl "claude auth login"), run it again.
    • The login cannot run from your session (sandbox): skip this step. The Dodari app opens a login terminal window on its first start.

    6. Start Dodari [network] [outside workspace]

    Terminal: [Dodari 6/7] Starting Dodari… (about 1 minute) → [Dodari 6/7] Dodari is open in your browser (failed: [Dodari 6/7] Dodari did not start. Details: ~/dodari/dodari.log)

    Run it from the install folder in the background. The output goes to dodari.log in the install folder. DODARI_SETUP_ONLY must not be set. Other install folder: use it instead of ~/dodari (%USERPROFILE%\dodari).

    OSCommand
    macOScd ~/dodari && PYTHONUNBUFFERED=1 nohup bash start_mac.sh > dodari.log 2>&1 &
    Linuxcd ~/dodari && PYTHONUNBUFFERED=1 nohup bash start_ubuntu.sh > dodari.log 2>&1 &
    Windows (PowerShell)Start-Process cmd -WindowStyle Hidden -ArgumentList '/c cd /d "%USERPROFILE%\dodari" && set "PYTHONUNBUFFERED=1" && set "PYTHONIOENCODING=utf-8" && start_windows.bat < nul > dodari.log 2>&1'
    • Claude Code: start it so it is not tied to your session (the forms above).
    • Codex: request escalated permission for the command. If escalation is not possible, give the user the command for their OS to paste into their own terminal.
    • The browser opens Dodari at http://127.0.0.1:7860 by itself (about a minute). If not, open that address. If port 7860 is taken, use the address after Running on local URL: in dodari.log.
    • Started: the port is listening (macOS lsof -nP -iTCP:7860 -sTCP:LISTEN, Linux ss -ltn | grep :7860, Windows netstat -ano | findstr :7860) and dodari.log has the Running on local URL: line. Otherwise read dodari.log and explain the cause to the user in simple words.
    • Ready: the screen shows ✅ codex is ready (✅ claude is ready; Korean UI ✅ codex 준비 완료) or ✔ CLI subscription translation engine active (Korean UI ✔ CLI 구독 번역 엔진 사용 중), and no 🔐 login required. If 🔐 login required appears, guide the user through the login terminal window the app opened, as in step 5.
    • Stop (when the user asks): macOS / Linux kill $(lsof -t -iTCP:7860 -sTCP:LISTEN), Windows PowerShell Stop-Process -Id (Get-NetTCPConnection -LocalPort 7860 -State Listen).OwningProcess (use the real port from dodari.log if it is not 7860).

    7. Tell the user how to use Dodari

    Terminal: [Dodari 7/7] All done! Next time, ask your AI "Start Dodari".

    Give this summary in the user's language, with the real folder and the button name of the user's UI language (English Start Translation, Korean 번역 실행하기). Other install folder: replace ~/dodari/outputs (Windows %USERPROFILE%\dodari\outputs) with the outputs folder inside it.

    Dodari is installed and connected to your ChatGPT (or Claude) subscription.
    1. Open Dodari: ask your AI "Start Dodari". To open it yourself, do as in "Installation & Setup" in the README, in the dodari folder: Windows: double-click start_windows.bat. Mac: run sh start_mac.sh in a terminal window. Ubuntu/Linux: run sh start_ubuntu.sh in a terminal window. The browser shows Dodari at http://127.0.0.1:7860.
    2. Upload: drag an EPUB, PDF or TXT file into the "1. Select files to translate" box (Step 1).
    3. Check the target language (Step 2). Genre and bilingual layout are optional (Step 3).
    4. Click "Start Translation" (Step 4). Progress appears in the Status box.
    5. Results: the download list under the Status box, and the folder ~/dodari/outputs (Windows: %USERPROFILE%\dodari\outputs).
    To quit: ask your AI "Turn off Dodari", or press Ctrl+C in the terminal window where you started it yourself.
    

    © 2026 Dodari Project. All rights reserved.