Windows 로컬 OCR·LLM·인페인팅 워크플로를 확장한 comic-translate 유지보수 포크 (v1.5.1)
Python
1
690 commits
updated Oct 3, 2026
This repository is a local-first fork of upstream comic-translate that started from the upstream v2.6.7 codebase and then diverged with product-specific runtime, OCR, workflow, and Windows setup changes.
The fork's product release version is 1.6.0. Upstream 2.7.1 is recorded
separately as the latest selective-backport lineage and is not this fork's
product version.
The fork is maintained around a practical desktop workflow:
PaddleOCR VL and HunyuanOCRv2.7.0 and v2.7.1HunyuanOCR and PaddleOCR VL.music/*.wav files..venv-win and .venv-win-cuda13 automatically.This repository started from ogkalu2/comic-translate and should be understood as a downstream, product-focused fork/derivative of that upstream work. It began from the upstream v2.6.7 codebase and then diverged with local runtime, OCR, Windows, and workflow changes.
The upstream project is distributed under the Apache License 2.0, and this fork keeps that license basis for the upstream-derived code in this repository.
If you publicly redistribute this fork or a modified build of it, the practical minimum checklist is:
This project uses, downloads, or interoperates with third-party models, checkpoints, and runtime images. The copyright, license, and usage terms for those assets belong to their original authors and distributors, and this repository does not claim ownership of them. You are responsible for reviewing and complying with each upstream model/runtime license before using them.
Detection / masking:
comictextdetector.pt, comictextdetector.pt.onnx)OCR:
Inpainting:
Local translation/runtime:
Windows setup downloads and seals the default RT-DETR/font/CTD/LaMa models.
setup_full*.bat also seals optional AOT, MangaOCR, Pororo, and PPOCRv5 models;
the running application never downloads them.
Prepared by Windows setup in verified external volumes:
gemma-4-26B-IQ4_NL.gguf translation modelPaddleOCR VL Spotting and MangaLMM remain optional full-tier runtimes and are not part of core setup.
This repository now uses a strict main + develop + tag model.
develop is the integration branch for upcoming product work.main is the shipping baseline.vX.Y.Z version tags that point to commits already contained in main.comic-translate-vX.Y.Z-windows-launcher-source.zip plus
SHA256SUMS.txt.COMIC_VERIFY_ONLY=1 before main promotion.release/* branches are not used.The authoritative repository policy lives in rules.md.
v2.6.7Local product work since the v2.6.7 base has focused on a few technical areas.
setup*.bat provisions venv and model volumes, run_comic*.bat only launchesfeature/*, fix/*, chore/*, hotfix/*, benchmarking/labOptimal (HunyuanOCR / PaddleOCR VL) OCR routing with run-start language confirmation and on-demand local runtime managementbenchmarking/lab promotion boundaryThis fork does not merge upstream releases wholesale. Instead, it performs selective compare-based backports and adapts only the changes that fit the local product structure.
v2.6.7 -> v2.7.0The v2.7.0 backport brought in selected user-facing features such as:
v2.7.0 -> v2.7.1The v2.7.1 round selectively applies the upstream fixes that matter to this fork:
QTimer.singleShot(...) dispatch for async UI callbacksQImage in the worker thread and QPixmap conversion on the main threadPSD appears next to Project File2.7.1For a more explicit setup path, see:
Prerequisites are Windows 10/11 x64,
the official Python 3.12.10 Windows x64 installer,
Docker Desktop with its
WSL2 backend, an NVIDIA driver, and a CUDA-capable GPU. Docker Desktop must be
installed; the launcher starts it and waits when its Linux engine is stopped.
Keep the py launcher enabled in the Python installer. System Python is used
only to create the isolated venv; global packages are never imported.
Setup and launch are separate. Run setup once, then launch as often as you like; the launcher never downloads model volumes, so it starts in seconds.
Step 1 - provision once (CUDA12 pairs Python cu128 with llama.cpp
server-cuda; CUDA13 pairs Python cu130 with server-cuda13. An unsupported
driver stops setup rather than switching CUDA variants):
setup.bat
setup_cuda13.bat
That prepares the selected venv, every default-pipeline app model (RT-DETR v2,
font detection, CTD protect/positive-claim, and LaMa), and the three core
runtimes: HunyuanOCR, PaddleOCR VL, and Gemma IQ4_NL. To also provision
MangaLMM and PaddleOCR VL Spotting up front, use setup_full.bat or
setup_full_cuda13.bat instead. Setup is non-interactive and resumable:
downloads resume from models/managed-runtime-sources under the installation
folder, and only size/SHA-verified files enter Docker volumes. Re-running setup
skips full hashes and GPU smokes when the ready manifest, current image ID, and
model sizes still match.
Step 2 - launch:
run_comic.bat
run_comic_cuda13.bat
Setup is required. The run launchers and the application never install packages,
download models, pull images, or reseal volumes. Missing core state fails before
the app starts; selecting MangaLMM or Spotting without the full tier fails before
page 1 and points to setup_full*.bat. Use
setup.bat --doctor or setup_cuda13.bat --doctor for a read-only status
report.
The default Custom Local Server(Gemma) setting uses the setup-prepared
read-only gemma-4-26B-IQ4_NL.gguf volume. Run
scripts/prepare_gemma_runtime.ps1 -Mode Verify only for an explicit full hash check.
The User Dictionaries settings page also controls the persistent block-result cache and exact translation memory. Result-cache entries use the complete translation/runtime identity. Exact source-to-translation pairs bypass Gemma only after explicit approval; imported approved entries require confirmation. These databases contain sensitive local text, remain in the app user-data directory, and are never silently deleted after a lock or corruption error. See the translation-memory guide.
The setup BAT also prepares both runtimes used by
Optimal (HunyuanOCR / PaddleOCR VL). See the
HunyuanOCR guide and
PaddleOCR VL bundle for their contracts.
The optional full-page Spotting: route has an independent projector,
container, named volume, and cache identity. Its setup is documented in
paddleocr_vl_spotting_docker_files/README.md.
Managed containers are stopped and preserved after stage completion, cancellation, or app shutdown. Use docker compose down only when you explicitly want to reset or remove a runtime.
In Settings, choose:
Default (existing auto: MangaOCR / PPOCR / Pororo...) to keep legacy OCR routingOptimal (HunyuanOCR / PaddleOCR VL) to route Chinese to HunyuanOCR and Japanese/other languages to PaddleOCR VLFor the stage-batched folder workflow, Settings > PaddleOCR VL Settings
also provides a managed exact persistent OCR cache. It stores raw OCR results
and diagnostics, never crop images, and is disabled automatically for custom
endpoints.
Settings > Project also contains a validated project checkpoint store. A
one-time migration enables it once while preserving any later user choice.
Detection geometry, raw PaddleOCR-VL results, lossless cleaned images, final
masks, and encoded render outputs can be restored before their runtimes start.
Translation text remains owned by the .ctpr; the sidecar stores only its
validated stage signature, so a full project hit skips detector, Paddle,
Gemma, inpainter, and renderer inference. Current OCR and translation
dictionary rules are still applied exactly once, and changing a dictionary
invalidates only its consumed result and downstream stages. Reusable manifests
and content-addressed artifacts live in a
<project>.ctpr.cache folder beside the .ctpr file. Missing, locked, or
damaged checkpoint data never prevents the project from opening or processing;
the affected stages are recalculated.
Open Settings > Notifications to configure:
The app sends plain-text-only ntfy notifications and keeps the message body below the default ntfy text limit documented by ntfy.
Official ntfy docs:
Tracked compose/runtime images used by the repo:
Every managed llama.cpp runtime (Gemma, PaddleOCR VL, PaddleOCR VL Spotting, HunyuanOCR, MangaLMM, and the Router) uses the image matching the selected runtime:
ghcr.io/ggml-org/llama.cpp:server-cudaghcr.io/ggml-org/llama.cpp:server-cuda13The old localized README files under docs/i18n/ are no longer the source of truth for this fork.
Use:
Windows 로컬 OCR·LLM·인페인팅 워크플로를 확장한 comic-translate 유지보수 포크 (v1.5.1)
Python
1
690 commits
updated Oct 3, 2026
This repository is a local-first fork of upstream comic-translate that started from the upstream v2.6.7 codebase and then diverged with product-specific runtime, OCR, workflow, and Windows setup changes.
The fork's product release version is 1.6.0. Upstream 2.7.1 is recorded
separately as the latest selective-backport lineage and is not this fork's
product version.
The fork is maintained around a practical desktop workflow:
PaddleOCR VL and HunyuanOCRv2.7.0 and v2.7.1HunyuanOCR and PaddleOCR VL.music/*.wav files..venv-win and .venv-win-cuda13 automatically.This repository started from ogkalu2/comic-translate and should be understood as a downstream, product-focused fork/derivative of that upstream work. It began from the upstream v2.6.7 codebase and then diverged with local runtime, OCR, Windows, and workflow changes.
The upstream project is distributed under the Apache License 2.0, and this fork keeps that license basis for the upstream-derived code in this repository.
If you publicly redistribute this fork or a modified build of it, the practical minimum checklist is:
This project uses, downloads, or interoperates with third-party models, checkpoints, and runtime images. The copyright, license, and usage terms for those assets belong to their original authors and distributors, and this repository does not claim ownership of them. You are responsible for reviewing and complying with each upstream model/runtime license before using them.
Detection / masking:
comictextdetector.pt, comictextdetector.pt.onnx)OCR:
Inpainting:
Local translation/runtime:
Windows setup downloads and seals the default RT-DETR/font/CTD/LaMa models.
setup_full*.bat also seals optional AOT, MangaOCR, Pororo, and PPOCRv5 models;
the running application never downloads them.
Prepared by Windows setup in verified external volumes:
gemma-4-26B-IQ4_NL.gguf translation modelPaddleOCR VL Spotting and MangaLMM remain optional full-tier runtimes and are not part of core setup.
This repository now uses a strict main + develop + tag model.
develop is the integration branch for upcoming product work.main is the shipping baseline.vX.Y.Z version tags that point to commits already contained in main.comic-translate-vX.Y.Z-windows-launcher-source.zip plus
SHA256SUMS.txt.COMIC_VERIFY_ONLY=1 before main promotion.release/* branches are not used.The authoritative repository policy lives in rules.md.
v2.6.7Local product work since the v2.6.7 base has focused on a few technical areas.
setup*.bat provisions venv and model volumes, run_comic*.bat only launchesfeature/*, fix/*, chore/*, hotfix/*, benchmarking/labOptimal (HunyuanOCR / PaddleOCR VL) OCR routing with run-start language confirmation and on-demand local runtime managementbenchmarking/lab promotion boundaryThis fork does not merge upstream releases wholesale. Instead, it performs selective compare-based backports and adapts only the changes that fit the local product structure.
v2.6.7 -> v2.7.0The v2.7.0 backport brought in selected user-facing features such as:
v2.7.0 -> v2.7.1The v2.7.1 round selectively applies the upstream fixes that matter to this fork:
QTimer.singleShot(...) dispatch for async UI callbacksQImage in the worker thread and QPixmap conversion on the main threadPSD appears next to Project File2.7.1For a more explicit setup path, see:
Prerequisites are Windows 10/11 x64,
the official Python 3.12.10 Windows x64 installer,
Docker Desktop with its
WSL2 backend, an NVIDIA driver, and a CUDA-capable GPU. Docker Desktop must be
installed; the launcher starts it and waits when its Linux engine is stopped.
Keep the py launcher enabled in the Python installer. System Python is used
only to create the isolated venv; global packages are never imported.
Setup and launch are separate. Run setup once, then launch as often as you like; the launcher never downloads model volumes, so it starts in seconds.
Step 1 - provision once (CUDA12 pairs Python cu128 with llama.cpp
server-cuda; CUDA13 pairs Python cu130 with server-cuda13. An unsupported
driver stops setup rather than switching CUDA variants):
setup.bat
setup_cuda13.bat
That prepares the selected venv, every default-pipeline app model (RT-DETR v2,
font detection, CTD protect/positive-claim, and LaMa), and the three core
runtimes: HunyuanOCR, PaddleOCR VL, and Gemma IQ4_NL. To also provision
MangaLMM and PaddleOCR VL Spotting up front, use setup_full.bat or
setup_full_cuda13.bat instead. Setup is non-interactive and resumable:
downloads resume from models/managed-runtime-sources under the installation
folder, and only size/SHA-verified files enter Docker volumes. Re-running setup
skips full hashes and GPU smokes when the ready manifest, current image ID, and
model sizes still match.
Step 2 - launch:
run_comic.bat
run_comic_cuda13.bat
Setup is required. The run launchers and the application never install packages,
download models, pull images, or reseal volumes. Missing core state fails before
the app starts; selecting MangaLMM or Spotting without the full tier fails before
page 1 and points to setup_full*.bat. Use
setup.bat --doctor or setup_cuda13.bat --doctor for a read-only status
report.
The default Custom Local Server(Gemma) setting uses the setup-prepared
read-only gemma-4-26B-IQ4_NL.gguf volume. Run
scripts/prepare_gemma_runtime.ps1 -Mode Verify only for an explicit full hash check.
The User Dictionaries settings page also controls the persistent block-result cache and exact translation memory. Result-cache entries use the complete translation/runtime identity. Exact source-to-translation pairs bypass Gemma only after explicit approval; imported approved entries require confirmation. These databases contain sensitive local text, remain in the app user-data directory, and are never silently deleted after a lock or corruption error. See the translation-memory guide.
The setup BAT also prepares both runtimes used by
Optimal (HunyuanOCR / PaddleOCR VL). See the
HunyuanOCR guide and
PaddleOCR VL bundle for their contracts.
The optional full-page Spotting: route has an independent projector,
container, named volume, and cache identity. Its setup is documented in
paddleocr_vl_spotting_docker_files/README.md.
Managed containers are stopped and preserved after stage completion, cancellation, or app shutdown. Use docker compose down only when you explicitly want to reset or remove a runtime.
In Settings, choose:
Default (existing auto: MangaOCR / PPOCR / Pororo...) to keep legacy OCR routingOptimal (HunyuanOCR / PaddleOCR VL) to route Chinese to HunyuanOCR and Japanese/other languages to PaddleOCR VLFor the stage-batched folder workflow, Settings > PaddleOCR VL Settings
also provides a managed exact persistent OCR cache. It stores raw OCR results
and diagnostics, never crop images, and is disabled automatically for custom
endpoints.
Settings > Project also contains a validated project checkpoint store. A
one-time migration enables it once while preserving any later user choice.
Detection geometry, raw PaddleOCR-VL results, lossless cleaned images, final
masks, and encoded render outputs can be restored before their runtimes start.
Translation text remains owned by the .ctpr; the sidecar stores only its
validated stage signature, so a full project hit skips detector, Paddle,
Gemma, inpainter, and renderer inference. Current OCR and translation
dictionary rules are still applied exactly once, and changing a dictionary
invalidates only its consumed result and downstream stages. Reusable manifests
and content-addressed artifacts live in a
<project>.ctpr.cache folder beside the .ctpr file. Missing, locked, or
damaged checkpoint data never prevents the project from opening or processing;
the affected stages are recalculated.
Open Settings > Notifications to configure:
The app sends plain-text-only ntfy notifications and keeps the message body below the default ntfy text limit documented by ntfy.
Official ntfy docs:
Tracked compose/runtime images used by the repo:
Every managed llama.cpp runtime (Gemma, PaddleOCR VL, PaddleOCR VL Spotting, HunyuanOCR, MangaLMM, and the Router) uses the image matching the selected runtime:
ghcr.io/ggml-org/llama.cpp:server-cudaghcr.io/ggml-org/llama.cpp:server-cuda13The old localized README files under docs/i18n/ are no longer the source of truth for this fork.
Use: