Mayo commited on
docs: list more LLMs
Browse files- README.md +32 -5
- docs/en-US/explanation/models-and-providers.md +33 -13
- docs/en-US/reference/http-api.md +50 -48
- docs/en-US/reference/index.md +1 -1
- docs/en-US/reference/settings.md +51 -97
- docs/en-US/tutorials/translate-your-first-page.md +1 -0
- docs/ja-JP/explanation/models-and-providers.md +33 -13
- docs/ja-JP/reference/http-api.md +51 -49
- docs/ja-JP/reference/index.md +1 -1
- docs/ja-JP/reference/settings.md +58 -104
- docs/ja-JP/tutorials/translate-your-first-page.md +1 -0
- docs/zh-CN/explanation/models-and-providers.md +32 -12
- docs/zh-CN/reference/http-api.md +45 -45
- docs/zh-CN/reference/index.md +1 -1
- docs/zh-CN/reference/settings.md +54 -100
- docs/zh-CN/tutorials/translate-your-first-page.md +1 -0
README.md
CHANGED
|
@@ -24,7 +24,7 @@ Under the hood, Koharu uses [candle](https://github.com/huggingface/candle) and
|
|
| 24 |
- OCR for manga dialogue, captions, and other page text
|
| 25 |
- Inpainting to remove source lettering from the page
|
| 26 |
- Translation with local or remote LLM backends
|
| 27 |
-
- Vertical CJK layout and text rendering
|
| 28 |
- Layered PSD export with editable text
|
| 29 |
- Local HTTP API and MCP server for automation
|
| 30 |
|
|
@@ -74,6 +74,12 @@ You can then open the Web UI at `http://localhost:4000`.
|
|
| 74 |
|
| 75 |
For runtime modes, ports, and local endpoints, see [Run GUI, Headless, and MCP Modes](https://koharu.rs/how-to/run-gui-headless-and-mcp/).
|
| 76 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 77 |
## GPU acceleration
|
| 78 |
|
| 79 |
Koharu supports CUDA, Metal, and Vulkan. CPU fallback is always available when the accelerated path is unavailable or not worth the setup cost on your system.
|
|
@@ -149,21 +155,34 @@ Koharu supports both local and remote LLM backends. When possible, it also tries
|
|
| 149 |
|
| 150 |
#### Local LLMs
|
| 151 |
|
| 152 |
-
Koharu supports quantized GGUF models through [llama.cpp](https://github.com/ggml-org/llama.cpp). These models run on your machine and are downloaded on demand when you select them in Settings.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 153 |
|
| 154 |
For translating to English:
|
| 155 |
|
| 156 |
- [vntl-llama3-8b-v2](https://huggingface.co/lmg-anon/vntl-llama3-8b-v2-gguf): around 8.5 GB in Q8_0, best when translation quality matters more than speed or memory use
|
| 157 |
-
- [lfm2-
|
|
|
|
| 158 |
|
| 159 |
For translating to Chinese:
|
| 160 |
|
| 161 |
- [sakura-galtransl-7b-v3.7](https://huggingface.co/SakuraLLM/Sakura-GalTransl-7B-v3.7): around 6.3 GB, a good balance of quality and speed on 8 GB GPUs
|
| 162 |
- [sakura-1.5b-qwen2.5-v1.0](https://huggingface.co/shing3232/Sakura-1.5B-Qwen2.5-v1.0-GGUF-IMX): lighter and faster, useful on mid-range GPUs or CPU-only setups
|
| 163 |
|
| 164 |
-
For
|
| 165 |
|
| 166 |
-
- [hunyuan-
|
| 167 |
|
| 168 |
LLMs are downloaded on demand when you pick a model in Settings. If you are constrained by memory, start with a smaller model. If you have the VRAM or RAM budget, the 7B and 8B models generally produce better translations.
|
| 169 |
|
|
@@ -177,6 +196,14 @@ Koharu can also translate through remote or self-hosted API providers instead of
|
|
| 177 |
- DeepSeek
|
| 178 |
- OpenAI Compatible, including LM Studio, OpenRouter, or any endpoint that exposes the OpenAI-style `/v1/models` and `/v1/chat/completions` APIs
|
| 179 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 180 |
Remote providers are configured in **Settings > API Keys**. OpenAI-compatible providers also need a custom base URL. API keys are optional for local servers such as LM Studio, but are usually required for hosted services such as OpenRouter.
|
| 181 |
|
| 182 |
Use a remote provider if you do not want to download local models, if you want to reduce local VRAM or RAM use, or if you already have a hosted model endpoint. Keep in mind that the OCR text selected for translation is sent to the provider you configured.
|
|
|
|
| 24 |
- OCR for manga dialogue, captions, and other page text
|
| 25 |
- Inpainting to remove source lettering from the page
|
| 26 |
- Translation with local or remote LLM backends
|
| 27 |
+
- Vertical CJK layout and text rendering with automatic contrasting black/white default outlines
|
| 28 |
- Layered PSD export with editable text
|
| 29 |
- Local HTTP API and MCP server for automation
|
| 30 |
|
|
|
|
| 74 |
|
| 75 |
For runtime modes, ports, and local endpoints, see [Run GUI, Headless, and MCP Modes](https://koharu.rs/how-to/run-gui-headless-and-mcp/).
|
| 76 |
|
| 77 |
+
### Runtime settings
|
| 78 |
+
|
| 79 |
+
`Settings > Runtime` controls the shared local data path plus HTTP connect timeout, read timeout, and retry count used by downloads and provider requests.
|
| 80 |
+
|
| 81 |
+
Those values are loaded at startup, so applying changes saves the config and restarts the app.
|
| 82 |
+
|
| 83 |
## GPU acceleration
|
| 84 |
|
| 85 |
Koharu supports CUDA, Metal, and Vulkan. CPU fallback is always available when the accelerated path is unavailable or not worth the setup cost on your system.
|
|
|
|
| 155 |
|
| 156 |
#### Local LLMs
|
| 157 |
|
| 158 |
+
Koharu supports quantized GGUF models through [llama.cpp](https://github.com/ggml-org/llama.cpp). These models run on your machine and are downloaded on demand when you select them in Settings.
|
| 159 |
+
|
| 160 |
+
If you want general-purpose local models first, the built-in picker includes:
|
| 161 |
+
|
| 162 |
+
- Gemma 4 instruct: [gemma4-e2b-it](https://huggingface.co/unsloth/gemma-4-E2B-it-GGUF), [gemma4-e4b-it](https://huggingface.co/unsloth/gemma-4-E4B-it-GGUF), [gemma4-26b-a4b-it](https://huggingface.co/unsloth/gemma-4-26B-A4B-it-GGUF), [gemma4-31b-it](https://huggingface.co/unsloth/gemma-4-31B-it-GGUF)
|
| 163 |
+
- Qwen 3.5: [qwen3.5-0.8b](https://huggingface.co/unsloth/Qwen3.5-0.8B-GGUF), [qwen3.5-2b](https://huggingface.co/unsloth/Qwen3.5-2B-GGUF), [qwen3.5-4b](https://huggingface.co/unsloth/Qwen3.5-4B-GGUF), [qwen3.5-9b](https://huggingface.co/unsloth/Qwen3.5-9B-GGUF), [qwen3.5-27b](https://huggingface.co/unsloth/Qwen3.5-27B-GGUF), [qwen3.5-35b-a3b](https://huggingface.co/unsloth/Qwen3.5-35B-A3B-GGUF)
|
| 164 |
+
|
| 165 |
+
If you want uncensored / NSFW-capable local models, the built-in picker also includes:
|
| 166 |
+
|
| 167 |
+
- Gemma 4 uncensored: [gemma4-e2b-uncensored](https://huggingface.co/HauhauCS/Gemma-4-E2B-Uncensored-HauhauCS-Aggressive), [gemma4-e4b-uncensored](https://huggingface.co/HauhauCS/Gemma-4-E4B-Uncensored-HauhauCS-Aggressive)
|
| 168 |
+
- Qwen 3.5 uncensored: [qwen3.5-2b-uncensored](https://huggingface.co/HauhauCS/Qwen3.5-2B-Uncensored-HauhauCS-Aggressive), [qwen3.5-4b-uncensored](https://huggingface.co/HauhauCS/Qwen3.5-4B-Uncensored-HauhauCS-Aggressive), [qwen3.5-9b-uncensored](https://huggingface.co/HauhauCS/Qwen3.5-9B-Uncensored-HauhauCS-Aggressive), [qwen3.5-27b-uncensored](https://huggingface.co/HauhauCS/Qwen3.5-27B-Uncensored-HauhauCS-Aggressive), [qwen3.5-35b-a3b-uncensored](https://huggingface.co/HauhauCS/Qwen3.5-35B-A3B-Uncensored-HauhauCS-Aggressive)
|
| 169 |
+
|
| 170 |
+
If you want fine-tuned translation models, built-in options include:
|
| 171 |
|
| 172 |
For translating to English:
|
| 173 |
|
| 174 |
- [vntl-llama3-8b-v2](https://huggingface.co/lmg-anon/vntl-llama3-8b-v2-gguf): around 8.5 GB in Q8_0, best when translation quality matters more than speed or memory use
|
| 175 |
+
- [lfm2.5-1.2b-instruct](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Instruct-GGUF): a smaller multilingual instruct model that is easier to run on CPUs or low-memory GPUs
|
| 176 |
+
- [sugoi-14b-ultra](https://huggingface.co/sugoitoolkit/Sugoi-14B-Ultra-GGUF) and [sugoi-32b-ultra](https://huggingface.co/sugoitoolkit/Sugoi-32B-Ultra-GGUF): larger translation-oriented options when you have more VRAM or RAM available
|
| 177 |
|
| 178 |
For translating to Chinese:
|
| 179 |
|
| 180 |
- [sakura-galtransl-7b-v3.7](https://huggingface.co/SakuraLLM/Sakura-GalTransl-7B-v3.7): around 6.3 GB, a good balance of quality and speed on 8 GB GPUs
|
| 181 |
- [sakura-1.5b-qwen2.5-v1.0](https://huggingface.co/shing3232/Sakura-1.5B-Qwen2.5-v1.0-GGUF-IMX): lighter and faster, useful on mid-range GPUs or CPU-only setups
|
| 182 |
|
| 183 |
+
For broader language coverage:
|
| 184 |
|
| 185 |
+
- [hunyuan-mt-7b](https://huggingface.co/Mungert/Hunyuan-MT-7B-GGUF): around 6.3 GB, with broad multilingual translation coverage
|
| 186 |
|
| 187 |
LLMs are downloaded on demand when you pick a model in Settings. If you are constrained by memory, start with a smaller model. If you have the VRAM or RAM budget, the 7B and 8B models generally produce better translations.
|
| 188 |
|
|
|
|
| 196 |
- DeepSeek
|
| 197 |
- OpenAI Compatible, including LM Studio, OpenRouter, or any endpoint that exposes the OpenAI-style `/v1/models` and `/v1/chat/completions` APIs
|
| 198 |
|
| 199 |
+
Current built-in remote model defaults:
|
| 200 |
+
|
| 201 |
+
- OpenAI: `gpt-5-mini` (`GPT-5 mini`)
|
| 202 |
+
- Gemini: `gemini-3.1-flash-lite-preview` (`Gemini 3.1 Flash-Lite Preview`)
|
| 203 |
+
- Claude: `claude-haiku-4-5` (`Claude Haiku 4.5`)
|
| 204 |
+
- DeepSeek: `deepseek-chat` (`DeepSeek-V3.2-Chat`)
|
| 205 |
+
- OpenAI Compatible: models are discovered from the configured endpoint
|
| 206 |
+
|
| 207 |
Remote providers are configured in **Settings > API Keys**. OpenAI-compatible providers also need a custom base URL. API keys are optional for local servers such as LM Studio, but are usually required for hosted services such as OpenRouter.
|
| 208 |
|
| 209 |
Use a remote provider if you do not want to download local models, if you want to reduce local VRAM or RAM use, or if you already have a hosted model endpoint. Keep in mind that the OCR text selected for translation is sent to the provider you configured.
|
docs/en-US/explanation/models-and-providers.md
CHANGED
|
@@ -24,13 +24,13 @@ Some models are used directly from upstream Hugging Face repos, while converted
|
|
| 24 |
|
| 25 |
### What each vision model is
|
| 26 |
|
| 27 |
-
| Model
|
| 28 |
-
| --- | --- | --- |
|
| 29 |
-
| `comic-text-bubble-detector` | object detector
|
| 30 |
-
| `comic-text-detector`
|
| 31 |
-
| `PaddleOCR-VL-1.5`
|
| 32 |
-
| `aot-inpainting`
|
| 33 |
-
| `YuzuMarker.FontDetection`
|
| 34 |
|
| 35 |
The important design choice is that Koharu does not use one model for every page task. Detection, segmentation, OCR, and inpainting all need different output shapes:
|
| 36 |
|
|
@@ -54,19 +54,29 @@ Koharu supports local GGUF models through [llama.cpp](https://github.com/ggml-or
|
|
| 54 |
|
| 55 |
In practice, the local models are usually quantized decoder-only transformers. GGUF is the model format; `llama.cpp` is the inference runtime.
|
| 56 |
|
| 57 |
-
###
|
| 58 |
|
| 59 |
- [vntl-llama3-8b-v2](https://huggingface.co/lmg-anon/vntl-llama3-8b-v2-gguf): around 8.5 GB in Q8_0 form, best when translation quality matters most
|
| 60 |
-
- [lfm2-
|
|
|
|
| 61 |
|
| 62 |
-
###
|
| 63 |
|
| 64 |
- [sakura-galtransl-7b-v3.7](https://huggingface.co/SakuraLLM/Sakura-GalTransl-7B-v3.7): a balanced choice for quality and speed on 8 GB class GPUs
|
| 65 |
- [sakura-1.5b-qwen2.5-v1.0](https://huggingface.co/shing3232/Sakura-1.5B-Qwen2.5-v1.0-GGUF-IMX): a lighter option for mid-range or CPU-heavy setups
|
| 66 |
|
| 67 |
-
###
|
| 68 |
|
| 69 |
-
- [hunyuan-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
|
| 71 |
## Remote providers
|
| 72 |
|
|
@@ -80,6 +90,16 @@ Supported providers include:
|
|
| 80 |
- DeepSeek
|
| 81 |
- OpenAI-compatible APIs such as LM Studio, OpenRouter, or any endpoint that exposes `/v1/models` and `/v1/chat/completions`
|
| 82 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 83 |
Remote providers are configured in **Settings > API Keys**.
|
| 84 |
|
| 85 |
For a step-by-step setup guide for LM Studio, OpenRouter, and similar endpoints, see [Use OpenAI-Compatible APIs](../how-to/use-openai-compatible-api.md).
|
|
@@ -110,4 +130,4 @@ For background theory behind the model categories on this page, see:
|
|
| 110 |
- [Fourier transform on Wikipedia](https://en.wikipedia.org/wiki/Fourier_transform)
|
| 111 |
- [Image segmentation on Wikipedia](https://en.wikipedia.org/wiki/Image_segmentation)
|
| 112 |
- [OCR on Wikipedia](https://en.wikipedia.org/wiki/Optical_character_recognition)
|
| 113 |
-
- [Transformer architecture on Wikipedia](https://en.wikipedia.org/wiki/Transformer_(deep_learning_architecture))
|
|
|
|
| 24 |
|
| 25 |
### What each vision model is
|
| 26 |
|
| 27 |
+
| Model | Model type | Why Koharu uses it |
|
| 28 |
+
| ---------------------------- | ---------------------- | ------------------------------------------------------- |
|
| 29 |
+
| `comic-text-bubble-detector` | object detector | finds text blocks and speech bubble regions in one pass |
|
| 30 |
+
| `comic-text-detector` | segmentation network | produces a text mask for cleanup |
|
| 31 |
+
| `PaddleOCR-VL-1.5` | vision-language model | reads cropped text into text tokens |
|
| 32 |
+
| `aot-inpainting` | inpainting network | reconstructs masked image regions after text removal |
|
| 33 |
+
| `YuzuMarker.FontDetection` | classifier / regressor | estimates font and style hints for rendering |
|
| 34 |
|
| 35 |
The important design choice is that Koharu does not use one model for every page task. Detection, segmentation, OCR, and inpainting all need different output shapes:
|
| 36 |
|
|
|
|
| 54 |
|
| 55 |
In practice, the local models are usually quantized decoder-only transformers. GGUF is the model format; `llama.cpp` is the inference runtime.
|
| 56 |
|
| 57 |
+
### Translation-focused built-in local models for English output
|
| 58 |
|
| 59 |
- [vntl-llama3-8b-v2](https://huggingface.co/lmg-anon/vntl-llama3-8b-v2-gguf): around 8.5 GB in Q8_0 form, best when translation quality matters most
|
| 60 |
+
- [lfm2.5-1.2b-instruct](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Instruct-GGUF): a smaller multilingual instruct option for low-memory systems or faster iteration
|
| 61 |
+
- [sugoi-14b-ultra](https://huggingface.co/sugoitoolkit/Sugoi-14B-Ultra-GGUF) and [sugoi-32b-ultra](https://huggingface.co/sugoitoolkit/Sugoi-32B-Ultra-GGUF): larger translation-oriented choices when you want more headroom
|
| 62 |
|
| 63 |
+
### Translation-focused built-in local models for Chinese output
|
| 64 |
|
| 65 |
- [sakura-galtransl-7b-v3.7](https://huggingface.co/SakuraLLM/Sakura-GalTransl-7B-v3.7): a balanced choice for quality and speed on 8 GB class GPUs
|
| 66 |
- [sakura-1.5b-qwen2.5-v1.0](https://huggingface.co/shing3232/Sakura-1.5B-Qwen2.5-v1.0-GGUF-IMX): a lighter option for mid-range or CPU-heavy setups
|
| 67 |
|
| 68 |
+
### Translation-focused built-in local model for broader language coverage
|
| 69 |
|
| 70 |
+
- [hunyuan-mt-7b](https://huggingface.co/Mungert/Hunyuan-MT-7B-GGUF): a multi-language option with moderate hardware requirements
|
| 71 |
+
|
| 72 |
+
### Other built-in local model families
|
| 73 |
+
|
| 74 |
+
The local picker also includes general-purpose families that are not translation-specific:
|
| 75 |
+
|
| 76 |
+
- Gemma 4 instruct: `gemma4-e2b-it`, `gemma4-e4b-it`, `gemma4-26b-a4b-it`, `gemma4-31b-it`
|
| 77 |
+
- Gemma 4 uncensored: `gemma4-e2b-uncensored`, `gemma4-e4b-uncensored`
|
| 78 |
+
- Qwen 3.5: `qwen3.5-0.8b`, `qwen3.5-2b`, `qwen3.5-4b`, `qwen3.5-9b`, `qwen3.5-27b`, `qwen3.5-35b-a3b`
|
| 79 |
+
- Qwen 3.5 uncensored: `qwen3.5-2b-uncensored`, `qwen3.5-4b-uncensored`, `qwen3.5-9b-uncensored`, `qwen3.5-27b-uncensored`, `qwen3.5-35b-a3b-uncensored`
|
| 80 |
|
| 81 |
## Remote providers
|
| 82 |
|
|
|
|
| 90 |
- DeepSeek
|
| 91 |
- OpenAI-compatible APIs such as LM Studio, OpenRouter, or any endpoint that exposes `/v1/models` and `/v1/chat/completions`
|
| 92 |
|
| 93 |
+
### Current built-in remote models
|
| 94 |
+
|
| 95 |
+
The current built-in defaults for the provider picker are:
|
| 96 |
+
|
| 97 |
+
- OpenAI: `gpt-5-mini` (`GPT-5 mini`)
|
| 98 |
+
- Gemini: `gemini-3.1-flash-lite-preview` (`Gemini 3.1 Flash-Lite Preview`)
|
| 99 |
+
- Claude: `claude-haiku-4-5` (`Claude Haiku 4.5`)
|
| 100 |
+
- DeepSeek: `deepseek-chat` (`DeepSeek-V3.2-Chat`)
|
| 101 |
+
- OpenAI-compatible APIs: models are discovered dynamically from the configured endpoint
|
| 102 |
+
|
| 103 |
Remote providers are configured in **Settings > API Keys**.
|
| 104 |
|
| 105 |
For a step-by-step setup guide for LM Studio, OpenRouter, and similar endpoints, see [Use OpenAI-Compatible APIs](../how-to/use-openai-compatible-api.md).
|
|
|
|
| 130 |
- [Fourier transform on Wikipedia](https://en.wikipedia.org/wiki/Fourier_transform)
|
| 131 |
- [Image segmentation on Wikipedia](https://en.wikipedia.org/wiki/Image_segmentation)
|
| 132 |
- [OCR on Wikipedia](https://en.wikipedia.org/wiki/Optical_character_recognition)
|
| 133 |
+
- [Transformer architecture on Wikipedia](<https://en.wikipedia.org/wiki/Transformer_(deep_learning_architecture)>)
|
docs/en-US/reference/http-api.md
CHANGED
|
@@ -37,21 +37,21 @@ Frequently used response types include:
|
|
| 37 |
|
| 38 |
### Meta and fonts
|
| 39 |
|
| 40 |
-
| Method | Path
|
| 41 |
-
| --- | --- | --- |
|
| 42 |
-
| `GET`
|
| 43 |
-
| `GET`
|
| 44 |
|
| 45 |
### Documents
|
| 46 |
|
| 47 |
-
| Method | Path
|
| 48 |
-
| --- | --- | --- |
|
| 49 |
-
| `GET`
|
| 50 |
-
| `POST` | `/documents/import?mode=replace`
|
| 51 |
-
| `POST` | `/documents/import?mode=append`
|
| 52 |
-
| `GET`
|
| 53 |
-
| `GET`
|
| 54 |
-
| `GET`
|
| 55 |
|
| 56 |
The import endpoint uses multipart form data with repeated `files` fields.
|
| 57 |
|
|
@@ -65,16 +65,16 @@ Document layers currently exposed by the implementation include:
|
|
| 65 |
|
| 66 |
### Page pipeline
|
| 67 |
|
| 68 |
-
| Method | Path
|
| 69 |
-
| --- | --- | --- |
|
| 70 |
-
| `POST` | `/documents/{documentId}/detect`
|
| 71 |
-
| `POST` | `/documents/{documentId}/ocr`
|
| 72 |
-
| `POST` | `/documents/{documentId}/inpaint`
|
| 73 |
-
| `POST` | `/documents/{documentId}/render`
|
| 74 |
-
| `POST` | `/documents/{documentId}/translate`
|
| 75 |
-
| `PUT`
|
| 76 |
-
| `PUT`
|
| 77 |
-
| `POST` | `/documents/{documentId}/inpaint-region` | re-inpaint a rectangular region only
|
| 78 |
|
| 79 |
Useful request details:
|
| 80 |
|
|
@@ -86,11 +86,11 @@ Useful request details:
|
|
| 86 |
|
| 87 |
## Text blocks
|
| 88 |
|
| 89 |
-
| Method
|
| 90 |
-
| --- | --- | --- |
|
| 91 |
-
| `POST`
|
| 92 |
-
| `PATCH`
|
| 93 |
-
| `DELETE` | `/documents/{documentId}/text-blocks/{textBlockId}` | remove a text block
|
| 94 |
|
| 95 |
The text-block patch shape currently includes:
|
| 96 |
|
|
@@ -106,24 +106,24 @@ The text-block patch shape currently includes:
|
|
| 106 |
|
| 107 |
## Export
|
| 108 |
|
| 109 |
-
| Method | Path
|
| 110 |
-
| --- | --- | --- |
|
| 111 |
-
| `GET`
|
| 112 |
-
| `GET`
|
| 113 |
-
| `GET`
|
| 114 |
-
| `POST` | `/exports?layer=rendered`
|
| 115 |
-
| `POST` | `/exports?layer=inpainted`
|
| 116 |
|
| 117 |
Single-document export endpoints return binary file content. Bulk export returns JSON with the number of files written.
|
| 118 |
|
| 119 |
## LLM control
|
| 120 |
|
| 121 |
-
| Method
|
| 122 |
-
| --- | --- | --- |
|
| 123 |
-
| `GET`
|
| 124 |
-
| `GET`
|
| 125 |
-
| `PUT`
|
| 126 |
-
| `DELETE` | `/llm`
|
| 127 |
|
| 128 |
Useful request details:
|
| 129 |
|
|
@@ -133,11 +133,13 @@ Useful request details:
|
|
| 133 |
|
| 134 |
## Provider configuration
|
| 135 |
|
| 136 |
-
Provider settings now live under `GET /config` and `PUT /config`.
|
| 137 |
|
| 138 |
-
-
|
| 139 |
-
-
|
| 140 |
-
- provider
|
|
|
|
|
|
|
| 141 |
|
| 142 |
Current built-in provider ids include:
|
| 143 |
|
|
@@ -149,10 +151,10 @@ Current built-in provider ids include:
|
|
| 149 |
|
| 150 |
## Pipeline jobs
|
| 151 |
|
| 152 |
-
| Method
|
| 153 |
-
| --- | --- | --- |
|
| 154 |
-
| `POST`
|
| 155 |
-
| `DELETE` | `/jobs/{jobId}`
|
| 156 |
|
| 157 |
The pipeline job request can include:
|
| 158 |
|
|
|
|
| 37 |
|
| 38 |
### Meta and fonts
|
| 39 |
|
| 40 |
+
| Method | Path | Purpose |
|
| 41 |
+
| ------ | -------- | ------------------------------------------ |
|
| 42 |
+
| `GET` | `/meta` | get app version and active ML backend |
|
| 43 |
+
| `GET` | `/fonts` | list font families available for rendering |
|
| 44 |
|
| 45 |
### Documents
|
| 46 |
|
| 47 |
+
| Method | Path | Purpose |
|
| 48 |
+
| ------ | ---------------------------------------- | ----------------------------------------------------- |
|
| 49 |
+
| `GET` | `/documents` | list loaded documents |
|
| 50 |
+
| `POST` | `/documents/import?mode=replace` | replace the current document set with uploaded images |
|
| 51 |
+
| `POST` | `/documents/import?mode=append` | append uploaded images to the current document set |
|
| 52 |
+
| `GET` | `/documents/{documentId}` | get one document and all text-block metadata |
|
| 53 |
+
| `GET` | `/documents/{documentId}/thumbnail` | get a thumbnail image |
|
| 54 |
+
| `GET` | `/documents/{documentId}/layers/{layer}` | fetch one image layer |
|
| 55 |
|
| 56 |
The import endpoint uses multipart form data with repeated `files` fields.
|
| 57 |
|
|
|
|
| 65 |
|
| 66 |
### Page pipeline
|
| 67 |
|
| 68 |
+
| Method | Path | Purpose |
|
| 69 |
+
| ------ | ---------------------------------------- | ---------------------------------------------------- |
|
| 70 |
+
| `POST` | `/documents/{documentId}/detect` | detect text blocks and layout |
|
| 71 |
+
| `POST` | `/documents/{documentId}/ocr` | run OCR on detected text blocks |
|
| 72 |
+
| `POST` | `/documents/{documentId}/inpaint` | remove original text using the current mask |
|
| 73 |
+
| `POST` | `/documents/{documentId}/render` | render translated text |
|
| 74 |
+
| `POST` | `/documents/{documentId}/translate` | generate translations for one block or the full page |
|
| 75 |
+
| `PUT` | `/documents/{documentId}/mask-region` | replace or update part of the segmentation mask |
|
| 76 |
+
| `PUT` | `/documents/{documentId}/brush-region` | write a patch into the brush layer |
|
| 77 |
+
| `POST` | `/documents/{documentId}/inpaint-region` | re-inpaint a rectangular region only |
|
| 78 |
|
| 79 |
Useful request details:
|
| 80 |
|
|
|
|
| 86 |
|
| 87 |
## Text blocks
|
| 88 |
|
| 89 |
+
| Method | Path | Purpose |
|
| 90 |
+
| -------- | --------------------------------------------------- | -------------------------------------------------------- |
|
| 91 |
+
| `POST` | `/documents/{documentId}/text-blocks` | create a new text block from `x`, `y`, `width`, `height` |
|
| 92 |
+
| `PATCH` | `/documents/{documentId}/text-blocks/{textBlockId}` | patch text, translation, box geometry, or style |
|
| 93 |
+
| `DELETE` | `/documents/{documentId}/text-blocks/{textBlockId}` | remove a text block |
|
| 94 |
|
| 95 |
The text-block patch shape currently includes:
|
| 96 |
|
|
|
|
| 106 |
|
| 107 |
## Export
|
| 108 |
|
| 109 |
+
| Method | Path | Purpose |
|
| 110 |
+
| ------ | ------------------------------------------------ | -------------------------- |
|
| 111 |
+
| `GET` | `/documents/{documentId}/export?layer=rendered` | export one rendered image |
|
| 112 |
+
| `GET` | `/documents/{documentId}/export?layer=inpainted` | export one inpainted image |
|
| 113 |
+
| `GET` | `/documents/{documentId}/export/psd` | export one layered PSD |
|
| 114 |
+
| `POST` | `/exports?layer=rendered` | export all rendered pages |
|
| 115 |
+
| `POST` | `/exports?layer=inpainted` | export all inpainted pages |
|
| 116 |
|
| 117 |
Single-document export endpoints return binary file content. Bulk export returns JSON with the number of files written.
|
| 118 |
|
| 119 |
## LLM control
|
| 120 |
|
| 121 |
+
| Method | Path | Purpose |
|
| 122 |
+
| -------- | -------------- | -------------------------------------------- |
|
| 123 |
+
| `GET` | `/llm/catalog` | list the grouped local/provider LLM catalog |
|
| 124 |
+
| `GET` | `/llm` | get the current LLM status |
|
| 125 |
+
| `PUT` | `/llm` | load a local or provider-backed model target |
|
| 126 |
+
| `DELETE` | `/llm` | unload the current model |
|
| 127 |
|
| 128 |
Useful request details:
|
| 129 |
|
|
|
|
| 133 |
|
| 134 |
## Provider configuration
|
| 135 |
|
| 136 |
+
Provider and runtime settings now live under `GET /config` and `PUT /config`.
|
| 137 |
|
| 138 |
+
- the config body currently includes top-level `data`, `http`, `pipeline`, and `providers`
|
| 139 |
+
- `providers` stores fields such as `id` and `base_url`
|
| 140 |
+
- saved provider API keys are returned as redacted placeholders rather than raw secrets
|
| 141 |
+
- `http { connect_timeout, read_timeout, max_retries }` controls the shared runtime HTTP client used for downloads and provider-backed requests
|
| 142 |
+
- `pipeline` stores the selected engine id for each pipeline stage
|
| 143 |
|
| 144 |
Current built-in provider ids include:
|
| 145 |
|
|
|
|
| 151 |
|
| 152 |
## Pipeline jobs
|
| 153 |
|
| 154 |
+
| Method | Path | Purpose |
|
| 155 |
+
| -------- | ---------------- | ----------------------------- |
|
| 156 |
+
| `POST` | `/jobs/pipeline` | start a full processing job |
|
| 157 |
+
| `DELETE` | `/jobs/{jobId}` | cancel a running pipeline job |
|
| 158 |
|
| 159 |
The pipeline job request can include:
|
| 160 |
|
docs/en-US/reference/index.md
CHANGED
|
@@ -11,5 +11,5 @@ Reference pages collect factual details you may want to look up quickly while wo
|
|
| 11 |
- [CLI Reference](cli.md): startup flags, local server behavior, and common runtime patterns
|
| 12 |
- [HTTP API Reference](http-api.md): local REST endpoints, event stream names, payloads, and workflow order
|
| 13 |
- [MCP Tools Reference](mcp-tools.md): built-in MCP tool names, parameters, and suggested usage flow
|
| 14 |
-
- [Settings Reference](settings.md): appearance,
|
| 15 |
- [Keyboard Shortcuts](keyboard-shortcuts.md): the default editor shortcuts currently documented in the UI
|
|
|
|
| 11 |
- [CLI Reference](cli.md): startup flags, local server behavior, and common runtime patterns
|
| 12 |
- [HTTP API Reference](http-api.md): local REST endpoints, event stream names, payloads, and workflow order
|
| 13 |
- [MCP Tools Reference](mcp-tools.md): built-in MCP tool names, parameters, and suggested usage flow
|
| 14 |
+
- [Settings Reference](settings.md): appearance, engine selection, provider keys, runtime config, and About page behavior
|
| 15 |
- [Keyboard Shortcuts](keyboard-shortcuts.md): the default editor shortcuts currently documented in the UI
|
docs/en-US/reference/settings.md
CHANGED
|
@@ -4,128 +4,82 @@ title: Settings Reference
|
|
| 4 |
|
| 5 |
# Settings Reference
|
| 6 |
|
| 7 |
-
Koharu's Settings screen exposes
|
| 8 |
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
- `
|
| 14 |
-
- `Dark`
|
| 15 |
-
- `System`
|
| 16 |
|
| 17 |
-
|
| 18 |
|
| 19 |
-
##
|
| 20 |
|
| 21 |
-
The
|
| 22 |
|
| 23 |
-
|
|
|
|
|
|
|
| 24 |
|
| 25 |
-
|
| 26 |
-
- `es-ES`
|
| 27 |
-
- `ja-JP`
|
| 28 |
-
- `ru-RU`
|
| 29 |
-
- `zh-CN`
|
| 30 |
-
- `zh-TW`
|
| 31 |
|
| 32 |
-
|
| 33 |
|
| 34 |
-
|
| 35 |
|
| 36 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
|
| 38 |
-
|
| 39 |
|
| 40 |
## API Keys
|
| 41 |
|
| 42 |
-
The
|
| 43 |
|
| 44 |
- `OpenAI`
|
| 45 |
- `Gemini`
|
| 46 |
- `Claude`
|
| 47 |
- `DeepSeek`
|
|
|
|
| 48 |
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
- API keys are stored through the local keyring integration rather than plain frontend storage
|
| 52 |
-
- Gemini is marked as a free-tier provider in the current UI
|
| 53 |
-
- the password-style input is only a visibility toggle in the UI, not a different storage mode
|
| 54 |
-
|
| 55 |
-
## Local LLM and OpenAI-compatible providers
|
| 56 |
-
|
| 57 |
-
This section is used for local servers such as Ollama and LM Studio, and for custom OpenAI-compatible endpoints.
|
| 58 |
-
|
| 59 |
-
### Presets
|
| 60 |
-
|
| 61 |
-
Current presets:
|
| 62 |
-
|
| 63 |
-
- `Ollama`
|
| 64 |
-
- `LM Studio`
|
| 65 |
-
- `Preset 1`
|
| 66 |
-
- `Preset 2`
|
| 67 |
-
|
| 68 |
-
Default base URLs:
|
| 69 |
-
|
| 70 |
-
- Ollama: `http://localhost:11434/v1`
|
| 71 |
-
- LM Studio: `http://127.0.0.1:1234/v1`
|
| 72 |
-
- Preset 1: empty until configured
|
| 73 |
-
- Preset 2: empty until configured
|
| 74 |
-
|
| 75 |
-
Each preset stores its own:
|
| 76 |
-
|
| 77 |
-
- `Base URL`
|
| 78 |
-
- `API Key`
|
| 79 |
-
- `Model name`
|
| 80 |
-
- `Temperature`
|
| 81 |
-
- `Max tokens`
|
| 82 |
-
- `Custom system prompt`
|
| 83 |
-
|
| 84 |
-
That lets you keep several compatible backends configured and switch between them from the same settings screen.
|
| 85 |
-
|
| 86 |
-
### Required fields for the model picker
|
| 87 |
-
|
| 88 |
-
In the current implementation, a preset-backed OpenAI-compatible model only becomes selectable when both of these are filled in:
|
| 89 |
-
|
| 90 |
-
- `Base URL`
|
| 91 |
-
- `Model name`
|
| 92 |
-
|
| 93 |
-
An empty preset does not appear as a usable model entry.
|
| 94 |
-
|
| 95 |
-
### Advanced fields
|
| 96 |
-
|
| 97 |
-
The expandable advanced section currently exposes:
|
| 98 |
-
|
| 99 |
-
- `Temperature`
|
| 100 |
-
- `Max tokens`
|
| 101 |
-
- `Custom system prompt`
|
| 102 |
-
|
| 103 |
-
Behavior notes:
|
| 104 |
|
| 105 |
-
-
|
| 106 |
-
-
|
| 107 |
-
-
|
|
|
|
|
|
|
| 108 |
|
| 109 |
-
|
| 110 |
|
| 111 |
-
|
| 112 |
|
| 113 |
-
The
|
| 114 |
|
| 115 |
-
-
|
| 116 |
-
-
|
| 117 |
-
-
|
| 118 |
-
-
|
| 119 |
-
- shows model count and latency on success
|
| 120 |
-
- uses a 5-second timeout for the underlying compatible-model listing
|
| 121 |
|
| 122 |
-
|
| 123 |
|
| 124 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 125 |
|
| 126 |
-
|
| 127 |
|
| 128 |
-
The About
|
| 129 |
|
| 130 |
- the current app version
|
| 131 |
- whether a newer GitHub release exists
|
|
@@ -138,11 +92,11 @@ In packaged app mode, the version check compares the local app version against t
|
|
| 138 |
|
| 139 |
The current settings behavior is split across storage layers:
|
| 140 |
|
|
|
|
| 141 |
- provider API keys are stored through the system keyring
|
| 142 |
-
-
|
| 143 |
-
- theme and other UI preferences also persist locally
|
| 144 |
|
| 145 |
-
That means clearing frontend preferences is not the same as clearing saved provider API keys.
|
| 146 |
|
| 147 |
## Related pages
|
| 148 |
|
|
|
|
| 4 |
|
| 5 |
# Settings Reference
|
| 6 |
|
| 7 |
+
Koharu's Settings screen currently exposes five main areas:
|
| 8 |
|
| 9 |
+
- `Appearance`
|
| 10 |
+
- `Engines`
|
| 11 |
+
- `API Keys`
|
| 12 |
+
- `Runtime`
|
| 13 |
+
- `About`
|
|
|
|
|
|
|
| 14 |
|
| 15 |
+
This page documents the current settings surface as implemented in the app.
|
| 16 |
|
| 17 |
+
## Appearance
|
| 18 |
|
| 19 |
+
The `Appearance` tab currently includes:
|
| 20 |
|
| 21 |
+
- theme: `Light`, `Dark`, or `System`
|
| 22 |
+
- UI language from the bundled translation list
|
| 23 |
+
- `Rendering Font`, which is used when Koharu renders translated text onto the page
|
| 24 |
|
| 25 |
+
Theme, language, and rendering-font changes apply immediately in the frontend.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
|
| 27 |
+
## Engines
|
| 28 |
|
| 29 |
+
The `Engines` tab selects the backend used for each pipeline stage:
|
| 30 |
|
| 31 |
+
- `Detector`
|
| 32 |
+
- `Bubble Detector`
|
| 33 |
+
- `Font Detector`
|
| 34 |
+
- `Segmenter`
|
| 35 |
+
- `OCR`
|
| 36 |
+
- `Translator`
|
| 37 |
+
- `Inpainter`
|
| 38 |
+
- `Renderer`
|
| 39 |
|
| 40 |
+
These values are stored in the shared app config and save immediately when changed.
|
| 41 |
|
| 42 |
## API Keys
|
| 43 |
|
| 44 |
+
The `API Keys` tab currently covers these built-in providers:
|
| 45 |
|
| 46 |
- `OpenAI`
|
| 47 |
- `Gemini`
|
| 48 |
- `Claude`
|
| 49 |
- `DeepSeek`
|
| 50 |
+
- `OpenAI Compatible`
|
| 51 |
|
| 52 |
+
Current behavior:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 53 |
|
| 54 |
+
- provider API keys are stored through the system keyring rather than plain text in `config.toml`
|
| 55 |
+
- provider base URLs are stored in the app config
|
| 56 |
+
- `OpenAI Compatible` requires a custom `Base URL`
|
| 57 |
+
- the app discovers models dynamically for `OpenAI Compatible` by querying the configured endpoint
|
| 58 |
+
- clearing a key removes it from the keyring
|
| 59 |
|
| 60 |
+
The API response intentionally redacts saved keys rather than returning the raw secret.
|
| 61 |
|
| 62 |
+
## Runtime
|
| 63 |
|
| 64 |
+
The `Runtime` tab groups restart-required settings that affect the shared local runtime:
|
| 65 |
|
| 66 |
+
- `Data Path`
|
| 67 |
+
- `HTTP Connect Timeout`
|
| 68 |
+
- `HTTP Read Timeout`
|
| 69 |
+
- `HTTP Max Retries`
|
|
|
|
|
|
|
| 70 |
|
| 71 |
+
Current behavior:
|
| 72 |
|
| 73 |
+
- `Data Path` controls where Koharu stores runtime packages, downloaded models, page manifests, and image blobs
|
| 74 |
+
- `HTTP Connect Timeout` sets how long Koharu waits while establishing HTTP connections
|
| 75 |
+
- `HTTP Read Timeout` sets how long Koharu waits while reading HTTP responses
|
| 76 |
+
- `HTTP Max Retries` controls automatic retries for transient HTTP failures
|
| 77 |
+
- these HTTP values are used by the shared runtime HTTP client for downloads and provider-backed requests
|
| 78 |
+
- applying changes saves the config and restarts the desktop app because the runtime client is built at startup
|
| 79 |
|
| 80 |
+
## About
|
| 81 |
|
| 82 |
+
The `About` tab currently shows:
|
| 83 |
|
| 84 |
- the current app version
|
| 85 |
- whether a newer GitHub release exists
|
|
|
|
| 92 |
|
| 93 |
The current settings behavior is split across storage layers:
|
| 94 |
|
| 95 |
+
- `config.toml` stores shared app config such as `data`, `http`, `pipeline`, and provider `baseUrl`
|
| 96 |
- provider API keys are stored through the system keyring
|
| 97 |
+
- theme, language, and rendering-font preferences are stored in the frontend preferences layer
|
|
|
|
| 98 |
|
| 99 |
+
That means clearing frontend preferences is not the same as clearing saved provider API keys or shared runtime config.
|
| 100 |
|
| 101 |
## Related pages
|
| 102 |
|
docs/en-US/tutorials/translate-your-first-page.md
CHANGED
|
@@ -80,6 +80,7 @@ Koharu helps with text layout and vertical CJK rendering, but the final page sti
|
|
| 80 |
- tone and character voice
|
| 81 |
- line breaks and bubble fit
|
| 82 |
- font choice and stroke readability
|
|
|
|
| 83 |
- blocks whose source OCR looked uncertain
|
| 84 |
|
| 85 |
If a translation reads correctly but still looks cramped, adjust the text block or styling before exporting.
|
|
|
|
| 80 |
- tone and character voice
|
| 81 |
- line breaks and bubble fit
|
| 82 |
- font choice and stroke readability
|
| 83 |
+
Koharu's default stroke choice now auto-picks a black or white outline for contrast, but you can still override it manually when the page needs something else.
|
| 84 |
- blocks whose source OCR looked uncertain
|
| 85 |
|
| 86 |
If a translation reads correctly but still looks cramped, adjust the text block or styling before exporting.
|
docs/ja-JP/explanation/models-and-providers.md
CHANGED
|
@@ -24,13 +24,13 @@ Koharu は、必要な vision モデルを初回利用時に自動でダウン
|
|
| 24 |
|
| 25 |
### 各 vision モデルの役割
|
| 26 |
|
| 27 |
-
| モデル
|
| 28 |
-
| --- | --- | --- |
|
| 29 |
-
| `comic-text-bubble-detector` | object detector
|
| 30 |
-
| `comic-text-detector`
|
| 31 |
-
| `PaddleOCR-VL-1.5`
|
| 32 |
-
| `aot-inpainting`
|
| 33 |
-
| `YuzuMarker.FontDetection`
|
| 34 |
|
| 35 |
重要なのは、Koharu がページ上の全作業を 1 つのモデルに任せていないことです。検出、segmentation、OCR、inpainting はそれぞれ欲しい出力が異なります。
|
| 36 |
|
|
@@ -54,19 +54,29 @@ Koharu は [llama.cpp](https://github.com/ggml-org/llama.cpp) を通じてロー
|
|
| 54 |
|
| 55 |
実際には、ローカルモデルの多くは量子化済みの decoder-only transformer です。GGUF はファイル形式であり、`llama.cpp` は推論ランタイムです。
|
| 56 |
|
| 57 |
-
### 英語出力向け
|
| 58 |
|
| 59 |
- [vntl-llama3-8b-v2](https://huggingface.co/lmg-anon/vntl-llama3-8b-v2-gguf): Q8_0 で約 8.5 GB。翻訳品質を優先するなら有力
|
| 60 |
-
- [lfm2-
|
|
|
|
| 61 |
|
| 62 |
-
### 中国語出力向け
|
| 63 |
|
| 64 |
- [sakura-galtransl-7b-v3.7](https://huggingface.co/SakuraLLM/Sakura-GalTransl-7B-v3.7): 品質と速度のバランスが良く、8 GB クラス GPU に向く
|
| 65 |
- [sakura-1.5b-qwen2.5-v1.0](https://huggingface.co/shing3232/Sakura-1.5B-Qwen2.5-v1.0-GGUF-IMX): 中堅 GPU や CPU 寄り構成向けの軽量モデル
|
| 66 |
|
| 67 |
-
### より広い言語対応向けのローカルモデル
|
| 68 |
|
| 69 |
-
- [hunyuan-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
|
| 71 |
## リモートプロバイダ
|
| 72 |
|
|
@@ -80,6 +90,16 @@ Koharu は、ローカルモデルをダウンロードせずに、リモート
|
|
| 80 |
- DeepSeek
|
| 81 |
- LM Studio、OpenRouter、または `/v1/models` と `/v1/chat/completions` を公開する任意のエンドポイントなどの OpenAI 互換 API
|
| 82 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 83 |
リモートプロバイダは **Settings > API Keys** で設定します。
|
| 84 |
|
| 85 |
LM Studio、OpenRouter、類似エンドポイントの具体的な設定手順は [OpenAI 互換 API を使う](../how-to/use-openai-compatible-api.md) を参照してください。
|
|
@@ -110,4 +130,4 @@ LM Studio、OpenRouter、類似エンドポイントの具体的な設定手順
|
|
| 110 |
- [Wikipedia の Fourier transform](https://en.wikipedia.org/wiki/Fourier_transform)
|
| 111 |
- [Wikipedia の Image segmentation](https://en.wikipedia.org/wiki/Image_segmentation)
|
| 112 |
- [Wikipedia の OCR](https://en.wikipedia.org/wiki/Optical_character_recognition)
|
| 113 |
-
- [Wikipedia の Transformer architecture](https://en.wikipedia.org/wiki/Transformer_(deep_learning_architecture))
|
|
|
|
| 24 |
|
| 25 |
### 各 vision モデルの役割
|
| 26 |
|
| 27 |
+
| モデル | モデル種別 | Koharu で使う理由 |
|
| 28 |
+
| ---------------------------- | ---------------------- | ---------------------------------------------------- |
|
| 29 |
+
| `comic-text-bubble-detector` | object detector | テキストブロックと吹き出し領域を 1 回で見つける |
|
| 30 |
+
| `comic-text-detector` | segmentation network | クリーンアップ用の text mask を作る |
|
| 31 |
+
| `PaddleOCR-VL-1.5` | vision-language model | 切り出したテキストを文字列へ読む |
|
| 32 |
+
| `aot-inpainting` | inpainting network | 文字除去後の masked 領域を補完する |
|
| 33 |
+
| `YuzuMarker.FontDetection` | classifier / regressor | レンダリング用のフォントやスタイルのヒントを推定する |
|
| 34 |
|
| 35 |
重要なのは、Koharu がページ上の全作業を 1 つのモデルに任せていないことです。検出、segmentation、OCR、inpainting はそれぞれ欲しい出力が異なります。
|
| 36 |
|
|
|
|
| 54 |
|
| 55 |
実際には、ローカルモデルの多くは量子化済みの decoder-only transformer です。GGUF はファイル形式であり、`llama.cpp` は推論ランタイムです。
|
| 56 |
|
| 57 |
+
### 英語出力向けの翻訳特化組み込みローカルモデル
|
| 58 |
|
| 59 |
- [vntl-llama3-8b-v2](https://huggingface.co/lmg-anon/vntl-llama3-8b-v2-gguf): Q8_0 で約 8.5 GB。翻訳品質を優先するなら有力
|
| 60 |
+
- [lfm2.5-1.2b-instruct](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Instruct-GGUF): 低メモリ環境や高速な試行に向く小型の多言語 instruction モデル
|
| 61 |
+
- [sugoi-14b-ultra](https://huggingface.co/sugoitoolkit/Sugoi-14B-Ultra-GGUF) と [sugoi-32b-ultra](https://huggingface.co/sugoitoolkit/Sugoi-32B-Ultra-GGUF): より多くの VRAM / RAM を使える環境向けの大型翻訳寄りモデル
|
| 62 |
|
| 63 |
+
### 中国語出力向けの翻訳特化組み込みローカルモデル
|
| 64 |
|
| 65 |
- [sakura-galtransl-7b-v3.7](https://huggingface.co/SakuraLLM/Sakura-GalTransl-7B-v3.7): 品質と速度のバランスが良く、8 GB クラス GPU に向く
|
| 66 |
- [sakura-1.5b-qwen2.5-v1.0](https://huggingface.co/shing3232/Sakura-1.5B-Qwen2.5-v1.0-GGUF-IMX): 中堅 GPU や CPU 寄り構成向けの軽量モデル
|
| 67 |
|
| 68 |
+
### より広い言語対応向けの翻訳特化組み込みローカルモデル
|
| 69 |
|
| 70 |
+
- [hunyuan-mt-7b](https://huggingface.co/Mungert/Hunyuan-MT-7B-GGUF): 中程度のハードウェア要件で使える多言語モデル
|
| 71 |
+
|
| 72 |
+
### その他の組み込みローカルモデルファミリ
|
| 73 |
+
|
| 74 |
+
LLM ピッカーには、翻訳専用ではない汎用ファミリも含まれています。
|
| 75 |
+
|
| 76 |
+
- Gemma 4 instruct: `gemma4-e2b-it`, `gemma4-e4b-it`, `gemma4-26b-a4b-it`, `gemma4-31b-it`
|
| 77 |
+
- Gemma 4 uncensored: `gemma4-e2b-uncensored`, `gemma4-e4b-uncensored`
|
| 78 |
+
- Qwen 3.5: `qwen3.5-0.8b`, `qwen3.5-2b`, `qwen3.5-4b`, `qwen3.5-9b`, `qwen3.5-27b`, `qwen3.5-35b-a3b`
|
| 79 |
+
- Qwen 3.5 uncensored: `qwen3.5-2b-uncensored`, `qwen3.5-4b-uncensored`, `qwen3.5-9b-uncensored`, `qwen3.5-27b-uncensored`, `qwen3.5-35b-a3b-uncensored`
|
| 80 |
|
| 81 |
## リモートプロバイダ
|
| 82 |
|
|
|
|
| 90 |
- DeepSeek
|
| 91 |
- LM Studio、OpenRouter、または `/v1/models` と `/v1/chat/completions` を公開する任意のエンドポイントなどの OpenAI 互換 API
|
| 92 |
|
| 93 |
+
### 現在の組み込みリモートモデル
|
| 94 |
+
|
| 95 |
+
現在、プロバイダ選択で最初から表示される組み込みモデルは次の通りです。
|
| 96 |
+
|
| 97 |
+
- OpenAI: `gpt-5-mini` (`GPT-5 mini`)
|
| 98 |
+
- Gemini: `gemini-3.1-flash-lite-preview` (`Gemini 3.1 Flash-Lite Preview`)
|
| 99 |
+
- Claude: `claude-haiku-4-5` (`Claude Haiku 4.5`)
|
| 100 |
+
- DeepSeek: `deepseek-chat` (`DeepSeek-V3.2-Chat`)
|
| 101 |
+
- OpenAI 互換 API: モデル一覧は設定したエンドポイントから動的に取得されます
|
| 102 |
+
|
| 103 |
リモートプロバイダは **Settings > API Keys** で設定します。
|
| 104 |
|
| 105 |
LM Studio、OpenRouter、類似エンドポイントの具体的な設定手順は [OpenAI 互換 API を使う](../how-to/use-openai-compatible-api.md) を参照してください。
|
|
|
|
| 130 |
- [Wikipedia の Fourier transform](https://en.wikipedia.org/wiki/Fourier_transform)
|
| 131 |
- [Wikipedia の Image segmentation](https://en.wikipedia.org/wiki/Image_segmentation)
|
| 132 |
- [Wikipedia の OCR](https://en.wikipedia.org/wiki/Optical_character_recognition)
|
| 133 |
+
- [Wikipedia の Transformer architecture](<https://en.wikipedia.org/wiki/Transformer_(deep_learning_architecture)>)
|
docs/ja-JP/reference/http-api.md
CHANGED
|
@@ -37,21 +37,21 @@ http://127.0.0.1:<PORT>/api/v1
|
|
| 37 |
|
| 38 |
### Meta とフォント
|
| 39 |
|
| 40 |
-
| Method | Path
|
| 41 |
-
| --- | --- | --- |
|
| 42 |
-
| `GET`
|
| 43 |
-
| `GET`
|
| 44 |
|
| 45 |
### Documents
|
| 46 |
|
| 47 |
-
| Method | Path
|
| 48 |
-
| --- | --- | --- |
|
| 49 |
-
| `GET`
|
| 50 |
-
| `POST` | `/documents/import?mode=replace`
|
| 51 |
-
| `POST` | `/documents/import?mode=append`
|
| 52 |
-
| `GET`
|
| 53 |
-
| `GET`
|
| 54 |
-
| `GET`
|
| 55 |
|
| 56 |
import エンドポイントは、`files` フィールドを繰り返し持つ multipart form data を使います。
|
| 57 |
|
|
@@ -65,16 +65,16 @@ import エンドポイントは、`files` フィールドを繰り返し持つ m
|
|
| 65 |
|
| 66 |
### ページパイプライン
|
| 67 |
|
| 68 |
-
| Method | Path
|
| 69 |
-
| --- | --- | --- |
|
| 70 |
-
| `POST` | `/documents/{documentId}/detect`
|
| 71 |
-
| `POST` | `/documents/{documentId}/ocr`
|
| 72 |
-
| `POST` | `/documents/{documentId}/inpaint`
|
| 73 |
-
| `POST` | `/documents/{documentId}/render`
|
| 74 |
-
| `POST` | `/documents/{documentId}/translate`
|
| 75 |
-
| `PUT`
|
| 76 |
-
| `PUT`
|
| 77 |
-
| `POST` | `/documents/{documentId}/inpaint-region` | 矩形領域だけを再 inpaint する
|
| 78 |
|
| 79 |
実用上のリクエスト詳細:
|
| 80 |
|
|
@@ -86,11 +86,11 @@ import エンドポイントは、`files` フィールドを繰り返し持つ m
|
|
| 86 |
|
| 87 |
## Text blocks
|
| 88 |
|
| 89 |
-
| Method
|
| 90 |
-
| --- | --- | --- |
|
| 91 |
-
| `POST`
|
| 92 |
-
| `PATCH`
|
| 93 |
-
| `DELETE` | `/documents/{documentId}/text-blocks/{textBlockId}` | text block を
|
| 94 |
|
| 95 |
現在の text-block patch には次の項目があります。
|
| 96 |
|
|
@@ -106,24 +106,24 @@ import エンドポイントは、`files` フィールドを繰り返し持つ m
|
|
| 106 |
|
| 107 |
## Export
|
| 108 |
|
| 109 |
-
| Method | Path
|
| 110 |
-
| --- | --- | --- |
|
| 111 |
-
| `GET`
|
| 112 |
-
| `GET`
|
| 113 |
-
| `GET`
|
| 114 |
-
| `POST` | `/exports?layer=rendered`
|
| 115 |
-
| `POST` | `/exports?layer=inpainted`
|
| 116 |
|
| 117 |
単一ドキュメント用 export エンドポイントはバイナリファイル内容を返します。一括 export は、書き出した件数を含む JSON を返します。
|
| 118 |
|
| 119 |
## LLM 制御
|
| 120 |
|
| 121 |
-
| Method
|
| 122 |
-
| --- | --- | --- |
|
| 123 |
-
| `GET`
|
| 124 |
-
| `GET`
|
| 125 |
-
| `PUT`
|
| 126 |
-
| `DELETE` | `/llm`
|
| 127 |
|
| 128 |
実用上のリクエスト詳細:
|
| 129 |
|
|
@@ -133,11 +133,13 @@ import エンドポイントは、`files` フィールドを繰り返し持つ m
|
|
| 133 |
|
| 134 |
## プロバイダ設定
|
| 135 |
|
| 136 |
-
プロバイダ設定は `GET /config` と `PUT /config` に統合されま
|
| 137 |
|
| 138 |
-
-
|
| 139 |
-
-
|
| 140 |
-
- API キー
|
|
|
|
|
|
|
| 141 |
|
| 142 |
現在の組み込み provider id は次です。
|
| 143 |
|
|
@@ -149,10 +151,10 @@ import エンドポイントは、`files` フィールドを繰り返し持つ m
|
|
| 149 |
|
| 150 |
## パイプライン job
|
| 151 |
|
| 152 |
-
| Method
|
| 153 |
-
| --- | --- | --- |
|
| 154 |
-
| `POST`
|
| 155 |
-
| `DELETE` | `/jobs/{jobId}`
|
| 156 |
|
| 157 |
pipeline job リクエストには次を含められます。
|
| 158 |
|
|
@@ -187,7 +189,7 @@ GET /events
|
|
| 187 |
1. `POST /documents/import?mode=replace`
|
| 188 |
2. `POST /documents/{documentId}/detect`
|
| 189 |
3. `POST /documents/{documentId}/ocr`
|
| 190 |
-
4. `
|
| 191 |
5. `POST /documents/{documentId}/translate`
|
| 192 |
6. `POST /documents/{documentId}/inpaint`
|
| 193 |
7. `POST /documents/{documentId}/render`
|
|
|
|
| 37 |
|
| 38 |
### Meta とフォント
|
| 39 |
|
| 40 |
+
| Method | Path | 目的 |
|
| 41 |
+
| ------ | -------- | -------------------------------------------------- |
|
| 42 |
+
| `GET` | `/meta` | アプリバージョンと有効な ML バックエンドを取得する |
|
| 43 |
+
| `GET` | `/fonts` | レンダリングに使える font family を一覧する |
|
| 44 |
|
| 45 |
### Documents
|
| 46 |
|
| 47 |
+
| Method | Path | 目的 |
|
| 48 |
+
| ------ | ---------------------------------------- | ---------------------------------------------------- |
|
| 49 |
+
| `GET` | `/documents` | 読み込み済みドキュメント一覧を取得する |
|
| 50 |
+
| `POST` | `/documents/import?mode=replace` | アップロード画像で現在のドキュメント集合を置き換える |
|
| 51 |
+
| `POST` | `/documents/import?mode=append` | アップロード画像を現在のドキュメント集合に追加する |
|
| 52 |
+
| `GET` | `/documents/{documentId}` | 1 件のドキュメントと全 text-block 情報を取得する |
|
| 53 |
+
| `GET` | `/documents/{documentId}/thumbnail` | サムネイル画像を取得する |
|
| 54 |
+
| `GET` | `/documents/{documentId}/layers/{layer}` | 1 つの画像レイヤーを取得する |
|
| 55 |
|
| 56 |
import エンドポイントは、`files` フィールドを繰り返し持つ multipart form data を使います。
|
| 57 |
|
|
|
|
| 65 |
|
| 66 |
### ページパイプライン
|
| 67 |
|
| 68 |
+
| Method | Path | 目的 |
|
| 69 |
+
| ------ | ---------------------------------------- | -------------------------------------------- |
|
| 70 |
+
| `POST` | `/documents/{documentId}/detect` | テキストブロックとレイアウトを検出する |
|
| 71 |
+
| `POST` | `/documents/{documentId}/ocr` | 検出済み text block に OCR をかける |
|
| 72 |
+
| `POST` | `/documents/{documentId}/inpaint` | 現在の mask を使って元文字を除去する |
|
| 73 |
+
| `POST` | `/documents/{documentId}/render` | 翻訳済みテキストを描画する |
|
| 74 |
+
| `POST` | `/documents/{documentId}/translate` | 1 ブロックまたはページ全体を翻訳する |
|
| 75 |
+
| `PUT` | `/documents/{documentId}/mask-region` | segmentation mask の一部を置換または更新する |
|
| 76 |
+
| `PUT` | `/documents/{documentId}/brush-region` | brush layer に patch を書き込む |
|
| 77 |
+
| `POST` | `/documents/{documentId}/inpaint-region` | 矩形領域だけを再 inpaint する |
|
| 78 |
|
| 79 |
実用上のリクエスト詳細:
|
| 80 |
|
|
|
|
| 86 |
|
| 87 |
## Text blocks
|
| 88 |
|
| 89 |
+
| Method | Path | 目的 |
|
| 90 |
+
| -------- | --------------------------------------------------- | -------------------------------------------------------- |
|
| 91 |
+
| `POST` | `/documents/{documentId}/text-blocks` | `x`, `y`, `width`, `height` から新しい text block を作る |
|
| 92 |
+
| `PATCH` | `/documents/{documentId}/text-blocks/{textBlockId}` | テキスト、翻訳、box geometry、style を patch する |
|
| 93 |
+
| `DELETE` | `/documents/{documentId}/text-blocks/{textBlockId}` | text block を削除する |
|
| 94 |
|
| 95 |
現在の text-block patch には次の項目があります。
|
| 96 |
|
|
|
|
| 106 |
|
| 107 |
## Export
|
| 108 |
|
| 109 |
+
| Method | Path | 目的 |
|
| 110 |
+
| ------ | ------------------------------------------------ | -------------------------------- |
|
| 111 |
+
| `GET` | `/documents/{documentId}/export?layer=rendered` | rendered image を 1 件書き出す |
|
| 112 |
+
| `GET` | `/documents/{documentId}/export?layer=inpainted` | inpainted image を 1 件書き出す |
|
| 113 |
+
| `GET` | `/documents/{documentId}/export/psd` | レイヤー付き PSD を 1 件書き出す |
|
| 114 |
+
| `POST` | `/exports?layer=rendered` | 全 rendered ページを書き出す |
|
| 115 |
+
| `POST` | `/exports?layer=inpainted` | 全 inpainted ページを書き出す |
|
| 116 |
|
| 117 |
単一ドキュメント用 export エンドポイントはバイナリファイル内容を返します。一括 export は、書き出した件数を含む JSON を返します。
|
| 118 |
|
| 119 |
## LLM 制御
|
| 120 |
|
| 121 |
+
| Method | Path | 目的 |
|
| 122 |
+
| -------- | -------------- | -------------------------------------------------------- |
|
| 123 |
+
| `GET` | `/llm/catalog` | ローカル/プロバイダ別に整理された LLM カタログを取得する |
|
| 124 |
+
| `GET` | `/llm` | 現在の LLM 状態を取得する |
|
| 125 |
+
| `PUT` | `/llm` | ローカルまたはプロバイダ target を読み込む |
|
| 126 |
+
| `DELETE` | `/llm` | 現在のモデルをアンロードする |
|
| 127 |
|
| 128 |
実用上のリクエスト詳細:
|
| 129 |
|
|
|
|
| 133 |
|
| 134 |
## プロバイダ設定
|
| 135 |
|
| 136 |
+
プロバイダ設定とランタイム設定は `GET /config` と `PUT /config` に統合されています。
|
| 137 |
|
| 138 |
+
- 現在の config ボディはトップレベルに `data`、`http`、`pipeline`、`providers` を持ちます
|
| 139 |
+
- `providers` には `id` や `base_url` などの値を保存します
|
| 140 |
+
- 保存済み API キーは生値ではなく、マスク済みプレースホルダとして返されます
|
| 141 |
+
- `http { connect_timeout, read_timeout, max_retries }` はダウンロードや provider リクエストに使う共有ランタイム HTTP クライアントを制御します
|
| 142 |
+
- `pipeline` には各パイプライン段階で選ばれた engine id が保存されます
|
| 143 |
|
| 144 |
現在の組み込み provider id は次です。
|
| 145 |
|
|
|
|
| 151 |
|
| 152 |
## パイプライン job
|
| 153 |
|
| 154 |
+
| Method | Path | 目的 |
|
| 155 |
+
| -------- | ---------------- | -------------------------------------- |
|
| 156 |
+
| `POST` | `/jobs/pipeline` | フル処理 job を開始する |
|
| 157 |
+
| `DELETE` | `/jobs/{jobId}` | ��行中の pipeline job をキャンセルする |
|
| 158 |
|
| 159 |
pipeline job リクエストには次を含められます。
|
| 160 |
|
|
|
|
| 189 |
1. `POST /documents/import?mode=replace`
|
| 190 |
2. `POST /documents/{documentId}/detect`
|
| 191 |
3. `POST /documents/{documentId}/ocr`
|
| 192 |
+
4. `PUT /llm`
|
| 193 |
5. `POST /documents/{documentId}/translate`
|
| 194 |
6. `POST /documents/{documentId}/inpaint`
|
| 195 |
7. `POST /documents/{documentId}/render`
|
docs/ja-JP/reference/index.md
CHANGED
|
@@ -11,5 +11,5 @@ title: リファレンス
|
|
| 11 |
- [CLI リファレンス](cli.md): 起動フラグ、ローカルサーバーの挙動、よくある実行パターン
|
| 12 |
- [HTTP API リファレンス](http-api.md): ローカル REST エンドポイント、イベントストリーム名、ペイロード、処理順序
|
| 13 |
- [MCP ツールリファレンス](mcp-tools.md): 組み込み MCP ツール名、引数、推奨される利用フロー
|
| 14 |
-
- [設定リファレンス](settings.md): 外観、
|
| 15 |
- [キーボードショートカット](keyboard-shortcuts.md): 現在 UI に記載されている既定の編集ショートカット
|
|
|
|
| 11 |
- [CLI リファレンス](cli.md): 起動フラグ、ローカルサーバーの挙動、よくある実行パターン
|
| 12 |
- [HTTP API リファレンス](http-api.md): ローカル REST エンドポイント、イベントストリーム名、ペイロード、処理順序
|
| 13 |
- [MCP ツールリファレンス](mcp-tools.md): 組み込み MCP ツール名、引数、推奨される利用フロー
|
| 14 |
+
- [設定リファレンス](settings.md): 外観、エンジン選択、プロバイダ API キー、Runtime 設定、About ページの挙動
|
| 15 |
- [キーボードショートカット](keyboard-shortcuts.md): 現在 UI に記載されている既定の編集ショートカット
|
docs/ja-JP/reference/settings.md
CHANGED
|
@@ -4,145 +4,99 @@ title: 設定リファレンス
|
|
| 4 |
|
| 5 |
# 設定リファレンス
|
| 6 |
|
| 7 |
-
Koharu の
|
| 8 |
|
| 9 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
|
| 11 |
-
|
| 12 |
|
| 13 |
-
|
| 14 |
-
- `Dark`
|
| 15 |
-
- `System`
|
| 16 |
|
| 17 |
-
|
| 18 |
|
| 19 |
-
|
|
|
|
|
|
|
| 20 |
|
| 21 |
-
|
| 22 |
|
| 23 |
-
|
| 24 |
|
| 25 |
-
|
| 26 |
-
- `es-ES`
|
| 27 |
-
- `ja-JP`
|
| 28 |
-
- `ru-RU`
|
| 29 |
-
- `zh-CN`
|
| 30 |
-
- `zh-TW`
|
| 31 |
|
| 32 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
|
| 34 |
-
|
| 35 |
|
| 36 |
-
|
| 37 |
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
## API キー
|
| 41 |
-
|
| 42 |
-
現在の組み込みプロバイダのキー設定対象:
|
| 43 |
|
| 44 |
- `OpenAI`
|
| 45 |
- `Gemini`
|
| 46 |
- `Claude`
|
| 47 |
- `DeepSeek`
|
|
|
|
| 48 |
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
- API キーは単純なフロントエンド保存ではなく、ローカルの keyring 連携を通じて保存されます
|
| 52 |
-
- 現在の UI では Gemini は無料枠プロバイダとして表示されます
|
| 53 |
-
- パスワード風の入力欄は UI 上の表示切り替えであり、別の保存方式ではありません
|
| 54 |
-
|
| 55 |
-
## ローカル LLM と OpenAI 互換プロバイダ
|
| 56 |
-
|
| 57 |
-
このセクションは、Ollama や LM Studio のようなローカルサーバーや、独自の OpenAI 互換エンドポイントに使います。
|
| 58 |
-
|
| 59 |
-
### プリセット
|
| 60 |
-
|
| 61 |
-
現在のプリセット:
|
| 62 |
-
|
| 63 |
-
- `Ollama`
|
| 64 |
-
- `LM Studio`
|
| 65 |
-
- `Preset 1`
|
| 66 |
-
- `Preset 2`
|
| 67 |
-
|
| 68 |
-
既定の Base URL:
|
| 69 |
-
|
| 70 |
-
- Ollama: `http://localhost:11434/v1`
|
| 71 |
-
- LM Studio: `http://127.0.0.1:1234/v1`
|
| 72 |
-
- Preset 1: empty until configured
|
| 73 |
-
- Preset 2: empty until configured
|
| 74 |
-
|
| 75 |
-
各プリセットごとに次を保持します。
|
| 76 |
-
|
| 77 |
-
- `Base URL`
|
| 78 |
-
- `API Key`
|
| 79 |
-
- `Model name`
|
| 80 |
-
- `Temperature`
|
| 81 |
-
- `Max tokens`
|
| 82 |
-
- `Custom system prompt`
|
| 83 |
-
|
| 84 |
-
これにより、複数の互換バックエンドを同時に設定し、同じ設定画面から切り替えられます。
|
| 85 |
-
|
| 86 |
-
### モデルピッカーに必要な項目
|
| 87 |
-
|
| 88 |
-
現在の実装では、プリセット経由の OpenAI 互換モデルは次の両方が埋まっている場合にのみ選択可能になります。
|
| 89 |
-
|
| 90 |
-
- `Base URL`
|
| 91 |
-
- `Model name`
|
| 92 |
-
|
| 93 |
-
空のプリセットは利用可能なモデル項目として表示されません。
|
| 94 |
-
|
| 95 |
-
### 詳細項目
|
| 96 |
-
|
| 97 |
-
展開可能な詳細セクションで現在設定できる項目:
|
| 98 |
-
|
| 99 |
-
- `Temperature`
|
| 100 |
-
- `Max tokens`
|
| 101 |
-
- `Custom system prompt`
|
| 102 |
-
|
| 103 |
-
挙動メモ:
|
| 104 |
|
| 105 |
-
-
|
| 106 |
-
-
|
| 107 |
-
-
|
|
|
|
|
|
|
| 108 |
|
| 109 |
-
|
| 110 |
|
| 111 |
-
|
| 112 |
|
| 113 |
-
|
| 114 |
|
| 115 |
-
-
|
| 116 |
-
-
|
| 117 |
-
-
|
| 118 |
-
-
|
| 119 |
-
- shows model count and latency on success
|
| 120 |
-
- uses a 5-second timeout for the underlying compatible-model listing
|
| 121 |
|
| 122 |
-
|
| 123 |
|
| 124 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 125 |
|
| 126 |
-
|
| 127 |
|
| 128 |
-
About
|
| 129 |
|
| 130 |
-
-
|
| 131 |
-
-
|
| 132 |
-
-
|
| 133 |
-
-
|
| 134 |
|
| 135 |
-
パッケージ済みアプリでは、
|
| 136 |
|
| 137 |
## 永続化の仕組み
|
| 138 |
|
| 139 |
現在の設定保存は複数の層に分かれています。
|
| 140 |
|
| 141 |
-
-
|
| 142 |
-
-
|
| 143 |
-
-
|
| 144 |
|
| 145 |
-
つまり、フロントエンド
|
| 146 |
|
| 147 |
## 関連ページ
|
| 148 |
|
|
|
|
| 4 |
|
| 5 |
# 設定リファレンス
|
| 6 |
|
| 7 |
+
現在の Koharu の Settings 画面は、主に次の 5 セクションで構成されています。
|
| 8 |
|
| 9 |
+
- `Appearance`
|
| 10 |
+
- `Engines`
|
| 11 |
+
- `API Keys`
|
| 12 |
+
- `Runtime`
|
| 13 |
+
- `About`
|
| 14 |
|
| 15 |
+
このページでは、現在のアプリ実装に基づく設定項目をまとめます。
|
| 16 |
|
| 17 |
+
## Appearance
|
|
|
|
|
|
|
| 18 |
|
| 19 |
+
`Appearance` タブには現在次が含まれます。
|
| 20 |
|
| 21 |
+
- テーマ: `Light` / `Dark` / `System`
|
| 22 |
+
- 同梱済み翻訳リソースから選ぶ UI 言語
|
| 23 |
+
- 翻訳テキスト描画に使う `Rendering Font`
|
| 24 |
|
| 25 |
+
テーマ、言語、描画フォントの変更はフロントエンド側で即時反映されます。
|
| 26 |
|
| 27 |
+
## Engines
|
| 28 |
|
| 29 |
+
`Engines` タブでは、各パイプライン段階で使うバックエンドを選択します。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
|
| 31 |
+
- `Detector`
|
| 32 |
+
- `Bubble Detector`
|
| 33 |
+
- `Font Detector`
|
| 34 |
+
- `Segmenter`
|
| 35 |
+
- `OCR`
|
| 36 |
+
- `Translator`
|
| 37 |
+
- `Inpainter`
|
| 38 |
+
- `Renderer`
|
| 39 |
|
| 40 |
+
これらの値は共有アプリ設定に保存され、変更時に即時保存されます。
|
| 41 |
|
| 42 |
+
## API Keys
|
| 43 |
|
| 44 |
+
`API Keys` タブで現在扱う組み込み provider は次の通りです。
|
|
|
|
|
|
|
|
|
|
|
|
|
| 45 |
|
| 46 |
- `OpenAI`
|
| 47 |
- `Gemini`
|
| 48 |
- `Claude`
|
| 49 |
- `DeepSeek`
|
| 50 |
+
- `OpenAI Compatible`
|
| 51 |
|
| 52 |
+
現在の挙動:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 53 |
|
| 54 |
+
- provider の API キーは `config.toml` ではなくシステム keyring に保存されます
|
| 55 |
+
- provider の `Base URL` は共有アプリ設定に保存されます
|
| 56 |
+
- `OpenAI Compatible` ではカスタム `Base URL` が必須です
|
| 57 |
+
- `OpenAI Compatible` のモデル一覧は設定済みエンドポイントへの問い合わせで動的取得されます
|
| 58 |
+
- キーをクリアすると keyring から削除されます
|
| 59 |
|
| 60 |
+
API レスポンスでは保存済みキーは生値ではなく、マスク済みの値として返されます。
|
| 61 |
|
| 62 |
+
## Runtime
|
| 63 |
|
| 64 |
+
`Runtime` タブ���は、共有ローカルランタイムに影響する再起動必須の設定をまとめています。
|
| 65 |
|
| 66 |
+
- `Data Path`
|
| 67 |
+
- `HTTP Connect Timeout`
|
| 68 |
+
- `HTTP Read Timeout`
|
| 69 |
+
- `HTTP Max Retries`
|
|
|
|
|
|
|
| 70 |
|
| 71 |
+
現在の挙動:
|
| 72 |
|
| 73 |
+
- `Data Path` はランタイムパッケージ、ダウンロード済みモデル、ページマニフェスト、画像 blob の保存先です
|
| 74 |
+
- `HTTP Connect Timeout` は HTTP 接続確立の待機時間です
|
| 75 |
+
- `HTTP Read Timeout` は HTTP レスポンス読み取りの待機時間です
|
| 76 |
+
- `HTTP Max Retries` は一時的な HTTP 障害への自動再試行回数です
|
| 77 |
+
- これらの HTTP 値はダウンロードや provider リクエストに使う共有ランタイム HTTP クライアントに適用されます
|
| 78 |
+
- これらの値は起動時に読み込まれるため、適用時は設定保存後にデスクトップアプリを再起動します
|
| 79 |
|
| 80 |
+
## About
|
| 81 |
|
| 82 |
+
`About` タブには現在次が表示されます。
|
| 83 |
|
| 84 |
+
- 現在のアプリバージョン
|
| 85 |
+
- より新しい GitHub リリースの有無
|
| 86 |
+
- 作者リンク
|
| 87 |
+
- リポジトリリンク
|
| 88 |
|
| 89 |
+
パッケージ済みアプリでは、`mayocream/koharu` の最新 GitHub リリースとローカル版を比較して更新状態を判定します。
|
| 90 |
|
| 91 |
## 永続化の仕組み
|
| 92 |
|
| 93 |
現在の設定保存は複数の層に分かれています。
|
| 94 |
|
| 95 |
+
- `config.toml` には `data`、`http`、`pipeline`、provider の `baseUrl` など共有設定が保存されます
|
| 96 |
+
- provider API キーはシステム keyring に保存されます
|
| 97 |
+
- テーマ、言語、描画フォントはフロントエンドの preferences 層に保存されます
|
| 98 |
|
| 99 |
+
つまり、フロントエンドの preferences を消しても、保存済みの provider API キーや共有ランタイム設定までは消えません。
|
| 100 |
|
| 101 |
## 関連ページ
|
| 102 |
|
docs/ja-JP/tutorials/translate-your-first-page.md
CHANGED
|
@@ -80,6 +80,7 @@ Koharu はテキストレイアウトや縦書き CJK レンダリングを補
|
|
| 80 |
- 口調やキャラクターの声
|
| 81 |
- 改行位置と吹き出しへの収まり
|
| 82 |
- フォント選択と縁取りの読みやすさ
|
|
|
|
| 83 |
- 元の OCR が不安定だったブロック
|
| 84 |
|
| 85 |
翻訳文として正しくても見た目が窮屈なら、書き出す前にテキストブロックやスタイルを調整してください。
|
|
|
|
| 80 |
- 口調やキャラクターの声
|
| 81 |
- 改行位置と吹き出しへの収まり
|
| 82 |
- フォント選択と縁取りの読みやすさ
|
| 83 |
+
現在の既定の縁取り色は、コントラストを取るため自動で白か黒を選びます。必要なら手動で上書きできます。
|
| 84 |
- 元の OCR が不安定だったブロック
|
| 85 |
|
| 86 |
翻訳文として正しくても見た目が窮屈なら、書き出す前にテキストブロックやスタイルを調整してください。
|
docs/zh-CN/explanation/models-and-providers.md
CHANGED
|
@@ -24,13 +24,13 @@ Koharu 会在首次使用时自动下载所需的视觉模型。
|
|
| 24 |
|
| 25 |
### 每个视觉模型是什么
|
| 26 |
|
| 27 |
-
| 模型
|
| 28 |
-
| --- | --- | --- |
|
| 29 |
| `comic-text-bubble-detector` | object detector | 一次推理同时找出文本块和气泡区域 |
|
| 30 |
-
| `comic-text-detector`
|
| 31 |
-
| `PaddleOCR-VL-1.5`
|
| 32 |
-
| `aot-inpainting`
|
| 33 |
-
| `YuzuMarker.FontDetection`
|
| 34 |
|
| 35 |
最重要的设计点是:Koharu 不会用一个模型硬扛所有页面任务。检测、分割、OCR 和修复需要完全不同的输出形式:
|
| 36 |
|
|
@@ -54,19 +54,29 @@ Koharu 通过 [llama.cpp](https://github.com/ggml-org/llama.cpp) 支持本地 GG
|
|
| 54 |
|
| 55 |
在实践中,这些本地模型通常是量化后的 decoder-only transformer。GGUF 是文件格式,`llama.cpp` 是推理运行时。
|
| 56 |
|
| 57 |
-
### 面向英文输出的
|
| 58 |
|
| 59 |
- [vntl-llama3-8b-v2](https://huggingface.co/lmg-anon/vntl-llama3-8b-v2-gguf):Q8_0 约 8.5 GB,更适合追求翻译质量
|
| 60 |
-
- [lfm2-
|
|
|
|
| 61 |
|
| 62 |
-
### 面向中文输出的
|
| 63 |
|
| 64 |
- [sakura-galtransl-7b-v3.7](https://huggingface.co/SakuraLLM/Sakura-GalTransl-7B-v3.7):在 8 GB 级别显卡上兼顾质量与速度
|
| 65 |
- [sakura-1.5b-qwen2.5-v1.0](https://huggingface.co/shing3232/Sakura-1.5B-Qwen2.5-v1.0-GGUF-IMX):更轻、更快,适合中端显卡或偏 CPU 的环境
|
| 66 |
|
| 67 |
-
### 面向更广泛语言覆盖的
|
| 68 |
|
| 69 |
-
- [hunyuan-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
|
| 71 |
## 远程提供商
|
| 72 |
|
|
@@ -80,6 +90,16 @@ Koharu 也可以通过远程或自托管 API 翻译,而不下载本地模型
|
|
| 80 |
- DeepSeek
|
| 81 |
- OpenAI 兼容 API,例如 LM Studio、OpenRouter,或任何暴露 `/v1/models` 与 `/v1/chat/completions` 的端点
|
| 82 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 83 |
远程提供商在 **Settings > API Keys** 中配置。
|
| 84 |
|
| 85 |
如果你需要 LM Studio、OpenRouter 或类似端点的逐步配置说明,请参见 [使用 OpenAI 兼容 API](../how-to/use-openai-compatible-api.md)。
|
|
@@ -110,4 +130,4 @@ Koharu 也可以通过远程或自托管 API 翻译,而不下载本地模型
|
|
| 110 |
- [维基百科:傅里叶变换](https://en.wikipedia.org/wiki/Fourier_transform)
|
| 111 |
- [维基百科:图像分割](https://en.wikipedia.org/wiki/Image_segmentation)
|
| 112 |
- [维基百科:光学字符识别](https://en.wikipedia.org/wiki/Optical_character_recognition)
|
| 113 |
-
- [维基百科:Transformer 架构](https://en.wikipedia.org/wiki/Transformer_(deep_learning_architecture))
|
|
|
|
| 24 |
|
| 25 |
### 每个视觉模型是什么
|
| 26 |
|
| 27 |
+
| 模型 | 模型类型 | Koharu 使用它的原因 |
|
| 28 |
+
| ---------------------------- | --------------- | -------------------------------- |
|
| 29 |
| `comic-text-bubble-detector` | object detector | 一次推理同时找出文本块和气泡区域 |
|
| 30 |
+
| `comic-text-detector` | 分割网络 | 生成清理用的文本掩码 |
|
| 31 |
+
| `PaddleOCR-VL-1.5` | 视觉语言模型 | 把裁剪图像读成文本 token |
|
| 32 |
+
| `aot-inpainting` | 修复网络 | 在去字后补全被掩码覆盖的区域 |
|
| 33 |
+
| `YuzuMarker.FontDetection` | 分类 / 回归模型 | 为渲染估计字体与风格提示 |
|
| 34 |
|
| 35 |
最重要的设计点是:Koharu 不会用一个模型硬扛所有页面任务。检测、分割、OCR 和修复需要完全不同的输出形式:
|
| 36 |
|
|
|
|
| 54 |
|
| 55 |
在实践中,这些本地模型通常是量化后的 decoder-only transformer。GGUF 是文件格式,`llama.cpp` 是推理运行时。
|
| 56 |
|
| 57 |
+
### 面向英文输出的翻译型内置本地模型
|
| 58 |
|
| 59 |
- [vntl-llama3-8b-v2](https://huggingface.co/lmg-anon/vntl-llama3-8b-v2-gguf):Q8_0 约 8.5 GB,更适合追求翻译质量
|
| 60 |
+
- [lfm2.5-1.2b-instruct](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Instruct-GGUF):更小的多语言 instruction 模型,适合低内存机器或更快的迭代
|
| 61 |
+
- [sugoi-14b-ultra](https://huggingface.co/sugoitoolkit/Sugoi-14B-Ultra-GGUF) 和 [sugoi-32b-ultra](https://huggingface.co/sugoitoolkit/Sugoi-32B-Ultra-GGUF):更大的翻译取向模型,适合有更多 VRAM / RAM 的环境
|
| 62 |
|
| 63 |
+
### 面向中文输出的翻译型内置本地模型
|
| 64 |
|
| 65 |
- [sakura-galtransl-7b-v3.7](https://huggingface.co/SakuraLLM/Sakura-GalTransl-7B-v3.7):在 8 GB 级别显卡上兼顾质量与速度
|
| 66 |
- [sakura-1.5b-qwen2.5-v1.0](https://huggingface.co/shing3232/Sakura-1.5B-Qwen2.5-v1.0-GGUF-IMX):更轻、更快,适合中端显卡或偏 CPU 的环境
|
| 67 |
|
| 68 |
+
### 面向更广泛语言覆盖的翻译型内置本地模型
|
| 69 |
|
| 70 |
+
- [hunyuan-mt-7b](https://huggingface.co/Mungert/Hunyuan-MT-7B-GGUF):一款多语言模型,对硬件要求适中
|
| 71 |
+
|
| 72 |
+
### 其他内置本地模型家族
|
| 73 |
+
|
| 74 |
+
本地模型选择器里还包含一些并非专门为翻译调校的通用家族:
|
| 75 |
+
|
| 76 |
+
- Gemma 4 instruct:`gemma4-e2b-it`、`gemma4-e4b-it`、`gemma4-26b-a4b-it`、`gemma4-31b-it`
|
| 77 |
+
- Gemma 4 uncensored:`gemma4-e2b-uncensored`、`gemma4-e4b-uncensored`
|
| 78 |
+
- Qwen 3.5:`qwen3.5-0.8b`、`qwen3.5-2b`、`qwen3.5-4b`、`qwen3.5-9b`、`qwen3.5-27b`、`qwen3.5-35b-a3b`
|
| 79 |
+
- Qwen 3.5 uncensored:`qwen3.5-2b-uncensored`、`qwen3.5-4b-uncensored`、`qwen3.5-9b-uncensored`、`qwen3.5-27b-uncensored`、`qwen3.5-35b-a3b-uncensored`
|
| 80 |
|
| 81 |
## 远程提供商
|
| 82 |
|
|
|
|
| 90 |
- DeepSeek
|
| 91 |
- OpenAI 兼容 API,例如 LM Studio、OpenRouter,或任何暴露 `/v1/models` 与 `/v1/chat/completions` 的端点
|
| 92 |
|
| 93 |
+
### 当前内置远程模型
|
| 94 |
+
|
| 95 |
+
当前在提供商选择器中直接内置的默认模型如下:
|
| 96 |
+
|
| 97 |
+
- OpenAI: `gpt-5-mini` (`GPT-5 mini`)
|
| 98 |
+
- Gemini: `gemini-3.1-flash-lite-preview` (`Gemini 3.1 Flash-Lite Preview`)
|
| 99 |
+
- Claude: `claude-haiku-4-5` (`Claude Haiku 4.5`)
|
| 100 |
+
- DeepSeek: `deepseek-chat` (`DeepSeek-V3.2-Chat`)
|
| 101 |
+
- OpenAI 兼容 API:模型列表会从你配置的端点动态发现
|
| 102 |
+
|
| 103 |
远程提供商在 **Settings > API Keys** 中配置。
|
| 104 |
|
| 105 |
如果你需要 LM Studio、OpenRouter 或类似端点的逐步配置说明,请参见 [使用 OpenAI 兼容 API](../how-to/use-openai-compatible-api.md)。
|
|
|
|
| 130 |
- [维基百科:傅里叶变换](https://en.wikipedia.org/wiki/Fourier_transform)
|
| 131 |
- [维基百科:图像分割](https://en.wikipedia.org/wiki/Image_segmentation)
|
| 132 |
- [维基百科:光学字符识别](https://en.wikipedia.org/wiki/Optical_character_recognition)
|
| 133 |
+
- [维基百科:Transformer 架构](<https://en.wikipedia.org/wiki/Transformer_(deep_learning_architecture)>)
|
docs/zh-CN/reference/http-api.md
CHANGED
|
@@ -37,21 +37,21 @@ http://127.0.0.1:<PORT>/api/v1
|
|
| 37 |
|
| 38 |
### 元信息与字体
|
| 39 |
|
| 40 |
-
| 方法
|
| 41 |
-
| --- | --- | --- |
|
| 42 |
-
| `GET` | `/meta`
|
| 43 |
-
| `GET` | `/fonts` | 列出可用于渲染的字体族
|
| 44 |
|
| 45 |
### 文档
|
| 46 |
|
| 47 |
-
| 方法
|
| 48 |
-
| --- | --- | --- |
|
| 49 |
-
| `GET`
|
| 50 |
-
| `POST` | `/documents/import?mode=replace`
|
| 51 |
-
| `POST` | `/documents/import?mode=append`
|
| 52 |
-
| `GET`
|
| 53 |
-
| `GET`
|
| 54 |
-
| `GET`
|
| 55 |
|
| 56 |
导入接口使用 multipart form data,并通过重复的 `files` 字段传入文件。
|
| 57 |
|
|
@@ -65,16 +65,16 @@ http://127.0.0.1:<PORT>/api/v1
|
|
| 65 |
|
| 66 |
### 页面管线
|
| 67 |
|
| 68 |
-
| 方法
|
| 69 |
-
| --- | --- | --- |
|
| 70 |
-
| `POST` | `/documents/{documentId}/detect`
|
| 71 |
-
| `POST` | `/documents/{documentId}/ocr`
|
| 72 |
-
| `POST` | `/documents/{documentId}/inpaint`
|
| 73 |
-
| `POST` | `/documents/{documentId}/render`
|
| 74 |
-
| `POST` | `/documents/{documentId}/translate`
|
| 75 |
-
| `PUT`
|
| 76 |
-
| `PUT`
|
| 77 |
-
| `POST` | `/documents/{documentId}/inpaint-region` | 仅对指定矩形区域重新修复
|
| 78 |
|
| 79 |
常用请求细节:
|
| 80 |
|
|
@@ -86,11 +86,11 @@ http://127.0.0.1:<PORT>/api/v1
|
|
| 86 |
|
| 87 |
### 文本块
|
| 88 |
|
| 89 |
-
| 方法
|
| 90 |
-
| --- | --- | --- |
|
| 91 |
-
| `POST`
|
| 92 |
-
| `PATCH`
|
| 93 |
-
| `DELETE` | `/documents/{documentId}/text-blocks/{textBlockId}` | 删除文本块
|
| 94 |
|
| 95 |
当前文本块 patch 结构包含:
|
| 96 |
|
|
@@ -106,24 +106,24 @@ http://127.0.0.1:<PORT>/api/v1
|
|
| 106 |
|
| 107 |
### 导出
|
| 108 |
|
| 109 |
-
| 方法
|
| 110 |
-
| --- | --- | --- |
|
| 111 |
-
| `GET`
|
| 112 |
-
| `GET`
|
| 113 |
-
| `GET`
|
| 114 |
-
| `POST` | `/exports?layer=rendered`
|
| 115 |
-
| `POST` | `/exports?layer=inpainted`
|
| 116 |
|
| 117 |
单文档导出端点返回二进制文件内容。批量导出返回 JSON,其中包含写出的文件数量。
|
| 118 |
|
| 119 |
### LLM 控制
|
| 120 |
|
| 121 |
-
| 方法
|
| 122 |
-
| --- | --- | --- |
|
| 123 |
-
| `GET`
|
| 124 |
-
| `GET`
|
| 125 |
-
| `PUT`
|
| 126 |
-
| `DELETE` | `/llm`
|
| 127 |
|
| 128 |
常用请求细节:
|
| 129 |
|
|
@@ -149,10 +149,10 @@ http://127.0.0.1:<PORT>/api/v1
|
|
| 149 |
|
| 150 |
### 管线任务
|
| 151 |
|
| 152 |
-
| 方法
|
| 153 |
-
| --- | --- | --- |
|
| 154 |
-
| `POST`
|
| 155 |
-
| `DELETE` | `/jobs/{jobId}`
|
| 156 |
|
| 157 |
管线任务请求可以包含:
|
| 158 |
|
|
@@ -187,7 +187,7 @@ GET /events
|
|
| 187 |
1. `POST /documents/import?mode=replace`
|
| 188 |
2. `POST /documents/{documentId}/detect`
|
| 189 |
3. `POST /documents/{documentId}/ocr`
|
| 190 |
-
4. `
|
| 191 |
5. `POST /documents/{documentId}/translate`
|
| 192 |
6. `POST /documents/{documentId}/inpaint`
|
| 193 |
7. `POST /documents/{documentId}/render`
|
|
|
|
| 37 |
|
| 38 |
### 元信息与字体
|
| 39 |
|
| 40 |
+
| 方法 | 路径 | 用途 |
|
| 41 |
+
| ----- | -------- | -------------------------- |
|
| 42 |
+
| `GET` | `/meta` | 获取应用版本与当前 ML 后端 |
|
| 43 |
+
| `GET` | `/fonts` | 列出可用于渲染的字体族 |
|
| 44 |
|
| 45 |
### 文档
|
| 46 |
|
| 47 |
+
| 方法 | 路径 | 用途 |
|
| 48 |
+
| ------ | ---------------------------------------- | -------------------------------- |
|
| 49 |
+
| `GET` | `/documents` | 列出已加载文档 |
|
| 50 |
+
| `POST` | `/documents/import?mode=replace` | 用上传图片替换当前文档集 |
|
| 51 |
+
| `POST` | `/documents/import?mode=append` | 将上传图片追加到当前文档集 |
|
| 52 |
+
| `GET` | `/documents/{documentId}` | 获取一个文档及其全部文本块元数据 |
|
| 53 |
+
| `GET` | `/documents/{documentId}/thumbnail` | 获取缩略图 |
|
| 54 |
+
| `GET` | `/documents/{documentId}/layers/{layer}` | 获取指定图层 |
|
| 55 |
|
| 56 |
导入接口使用 multipart form data,并通过重复的 `files` 字段传入文件。
|
| 57 |
|
|
|
|
| 65 |
|
| 66 |
### 页面管线
|
| 67 |
|
| 68 |
+
| 方法 | 路径 | 用途 |
|
| 69 |
+
| ------ | ---------------------------------------- | ----------------------------- |
|
| 70 |
+
| `POST` | `/documents/{documentId}/detect` | 检测文本块和版面结构 |
|
| 71 |
+
| `POST` | `/documents/{documentId}/ocr` | 对检测出的文本块执行 OCR |
|
| 72 |
+
| `POST` | `/documents/{documentId}/inpaint` | 使用当前掩码去除原始文字 |
|
| 73 |
+
| `POST` | `/documents/{documentId}/render` | 渲染译文 |
|
| 74 |
+
| `POST` | `/documents/{documentId}/translate` | 翻译单个文本块或整页 |
|
| 75 |
+
| `PUT` | `/documents/{documentId}/mask-region` | 替换或更新分割掩码局部区域 |
|
| 76 |
+
| `PUT` | `/documents/{documentId}/brush-region` | 向 brush 图层写入一个局部补丁 |
|
| 77 |
+
| `POST` | `/documents/{documentId}/inpaint-region` | 仅对指定矩形区域重新修复 |
|
| 78 |
|
| 79 |
常用请求细节:
|
| 80 |
|
|
|
|
| 86 |
|
| 87 |
### 文本块
|
| 88 |
|
| 89 |
+
| 方法 | 路径 | 用途 |
|
| 90 |
+
| -------- | --------------------------------------------------- | ------------------------------------------- |
|
| 91 |
+
| `POST` | `/documents/{documentId}/text-blocks` | 通过 `x`、`y`、`width`、`height` 创建文本块 |
|
| 92 |
+
| `PATCH` | `/documents/{documentId}/text-blocks/{textBlockId}` | 更新文本、译文、框几何或样式 |
|
| 93 |
+
| `DELETE` | `/documents/{documentId}/text-blocks/{textBlockId}` | 删除文本块 |
|
| 94 |
|
| 95 |
当前文本块 patch 结构包含:
|
| 96 |
|
|
|
|
| 106 |
|
| 107 |
### 导出
|
| 108 |
|
| 109 |
+
| 方法 | 路径 | 用途 |
|
| 110 |
+
| ------ | ------------------------------------------------ | -------------------- |
|
| 111 |
+
| `GET` | `/documents/{documentId}/export?layer=rendered` | 导出单张渲染图 |
|
| 112 |
+
| `GET` | `/documents/{documentId}/export?layer=inpainted` | 导出单张修复图 |
|
| 113 |
+
| `GET` | `/documents/{documentId}/export/psd` | 导出单个分层 PSD |
|
| 114 |
+
| `POST` | `/exports?layer=rendered` | 批量导出所有渲染页面 |
|
| 115 |
+
| `POST` | `/exports?layer=inpainted` | 批量导出所有修复页面 |
|
| 116 |
|
| 117 |
单文档导出端点返回二进制文件内容。批量导出返回 JSON,其中包含写出的文件数量。
|
| 118 |
|
| 119 |
### LLM 控制
|
| 120 |
|
| 121 |
+
| 方法 | 路径 | 用途 |
|
| 122 |
+
| -------- | -------------- | -------------------------------- |
|
| 123 |
+
| `GET` | `/llm/catalog` | 获取按本地/提供商分组的 LLM 目录 |
|
| 124 |
+
| `GET` | `/llm` | 获取当前 LLM 状态 |
|
| 125 |
+
| `PUT` | `/llm` | 加载本地或提供商 target |
|
| 126 |
+
| `DELETE` | `/llm` | 卸载当前模型 |
|
| 127 |
|
| 128 |
常用请求细节:
|
| 129 |
|
|
|
|
| 149 |
|
| 150 |
### 管线任务
|
| 151 |
|
| 152 |
+
| 方法 | 路径 | 用途 |
|
| 153 |
+
| -------- | ---------------- | ---------------------- |
|
| 154 |
+
| `POST` | `/jobs/pipeline` | 启动完整处理任务 |
|
| 155 |
+
| `DELETE` | `/jobs/{jobId}` | 取消一个正在运行的任务 |
|
| 156 |
|
| 157 |
管线任务请求可以包含:
|
| 158 |
|
|
|
|
| 187 |
1. `POST /documents/import?mode=replace`
|
| 188 |
2. `POST /documents/{documentId}/detect`
|
| 189 |
3. `POST /documents/{documentId}/ocr`
|
| 190 |
+
4. `PUT /llm`
|
| 191 |
5. `POST /documents/{documentId}/translate`
|
| 192 |
6. `POST /documents/{documentId}/inpaint`
|
| 193 |
7. `POST /documents/{documentId}/render`
|
docs/zh-CN/reference/index.md
CHANGED
|
@@ -11,5 +11,5 @@ title: 参考
|
|
| 11 |
- [CLI 参考](cli.md):启动参数、本地服务器行为与常见运行模式
|
| 12 |
- [HTTP API 参考](http-api.md):本地 REST 端点、事件流名称、请求载荷与推荐流程
|
| 13 |
- [MCP 工具参考](mcp-tools.md):内置 MCP 工具名称、参数与建议使用顺序
|
| 14 |
-
- [设置参考](settings.md):外观、
|
| 15 |
- [键盘快捷键](keyboard-shortcuts.md):当前 UI 中记录的默认编辑器快捷键
|
|
|
|
| 11 |
- [CLI 参考](cli.md):启动参数、本地服务器行为与常见运行模式
|
| 12 |
- [HTTP API 参考](http-api.md):本地 REST 端点、事件流名称、请求载荷与推荐流程
|
| 13 |
- [MCP 工具参考](mcp-tools.md):内置 MCP 工具名称、参数与建议使用顺序
|
| 14 |
+
- [设置参考](settings.md):外观、引擎选择、提供方密钥、Runtime 配置与关于页行为
|
| 15 |
- [键盘快捷键](keyboard-shortcuts.md):当前 UI 中记录的默认编辑器快捷键
|
docs/zh-CN/reference/settings.md
CHANGED
|
@@ -4,128 +4,82 @@ title: 设置参考
|
|
| 4 |
|
| 5 |
# 设置参考
|
| 6 |
|
| 7 |
-
Koharu 的
|
| 8 |
|
| 9 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
|
| 11 |
-
|
| 12 |
|
| 13 |
-
|
| 14 |
-
- `Dark`
|
| 15 |
-
- `System`
|
| 16 |
|
| 17 |
-
|
| 18 |
|
| 19 |
-
|
|
|
|
|
|
|
| 20 |
|
| 21 |
-
|
| 22 |
|
| 23 |
-
|
| 24 |
|
| 25 |
-
|
| 26 |
-
- `es-ES`
|
| 27 |
-
- `ja-JP`
|
| 28 |
-
- `ru-RU`
|
| 29 |
-
- `zh-CN`
|
| 30 |
-
- `zh-TW`
|
| 31 |
|
| 32 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
设置页会以 `ML Compute` 显示当前的 ML 计算后端。
|
| 37 |
-
|
| 38 |
-
这个值来自应用的元信息端点,反映 Koharu 当前实际使用的运行时后端,例如 CPU 或 GPU 路径。
|
| 39 |
|
| 40 |
## API Keys
|
| 41 |
|
| 42 |
-
当前内置
|
| 43 |
|
| 44 |
- `OpenAI`
|
| 45 |
- `Gemini`
|
| 46 |
- `Claude`
|
| 47 |
- `DeepSeek`
|
|
|
|
| 48 |
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
- API key 通过本地 keyring 集成存储,而不是前端明文存储
|
| 52 |
-
- 当前 UI 中 Gemini 被标记为 free-tier provider
|
| 53 |
-
- 密码样式输入框只是 UI 中的可见性切换,不代表另一种存储模式
|
| 54 |
-
|
| 55 |
-
## 本地 LLM 与 OpenAI 兼容提供商
|
| 56 |
-
|
| 57 |
-
这个区域用于本地服务器(例如 Ollama、LM Studio)以及自定义 OpenAI 兼容端点。
|
| 58 |
-
|
| 59 |
-
### 预设
|
| 60 |
-
|
| 61 |
-
当前预设包括:
|
| 62 |
-
|
| 63 |
-
- `Ollama`
|
| 64 |
-
- `LM Studio`
|
| 65 |
-
- `Preset 1`
|
| 66 |
-
- `Preset 2`
|
| 67 |
-
|
| 68 |
-
默认 base URL:
|
| 69 |
-
|
| 70 |
-
- Ollama:`http://localhost:11434/v1`
|
| 71 |
-
- LM Studio:`http://127.0.0.1:1234/v1`
|
| 72 |
-
- Preset 1:默认为空
|
| 73 |
-
- Preset 2:默认为空
|
| 74 |
-
|
| 75 |
-
每个预设都会单独保存:
|
| 76 |
-
|
| 77 |
-
- `Base URL`
|
| 78 |
-
- `API Key`
|
| 79 |
-
- `Model name`
|
| 80 |
-
- `Temperature`
|
| 81 |
-
- `Max tokens`
|
| 82 |
-
- `Custom system prompt`
|
| 83 |
-
|
| 84 |
-
这意味着你可以在同一个设置页里保留多个兼容后端,并在它们之间切换。
|
| 85 |
-
|
| 86 |
-
### 模型选择器的必要字段
|
| 87 |
-
|
| 88 |
-
在当前实现中,只有同时填写以下两项,一个基于预设的 OpenAI 兼容模型才会变成可选项:
|
| 89 |
-
|
| 90 |
-
- `Base URL`
|
| 91 |
-
- `Model name`
|
| 92 |
-
|
| 93 |
-
空预设不会出现在可用模型列表中。
|
| 94 |
-
|
| 95 |
-
### 高级字段
|
| 96 |
-
|
| 97 |
-
可展开的高级区块目前包含:
|
| 98 |
-
|
| 99 |
-
- `Temperature`
|
| 100 |
-
- `Max tokens`
|
| 101 |
-
- `Custom system prompt`
|
| 102 |
-
|
| 103 |
-
行为说明:
|
| 104 |
|
| 105 |
-
-
|
| 106 |
-
- `
|
| 107 |
-
-
|
|
|
|
|
|
|
| 108 |
|
| 109 |
-
|
| 110 |
|
| 111 |
-
|
| 112 |
|
| 113 |
-
|
| 114 |
|
| 115 |
-
-
|
| 116 |
-
-
|
| 117 |
-
-
|
| 118 |
-
-
|
| 119 |
-
- 成功时展示模型数量和延迟
|
| 120 |
-
- 对底层兼容模型列表请求使用 5 秒超时
|
| 121 |
|
| 122 |
-
|
| 123 |
|
| 124 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 125 |
|
| 126 |
-
|
| 127 |
|
| 128 |
-
当前
|
| 129 |
|
| 130 |
- 当前应用版本
|
| 131 |
- 是否存在更新的 GitHub release
|
|
@@ -136,16 +90,16 @@ Koharu 的设置页包含外观、语言、设备、提供商以及本地 LLM
|
|
| 136 |
|
| 137 |
## 持久化模型
|
| 138 |
|
| 139 |
-
当前设置
|
| 140 |
|
| 141 |
-
-
|
| 142 |
-
-
|
| 143 |
-
- 主题和
|
| 144 |
|
| 145 |
-
因此,清
|
| 146 |
|
| 147 |
## 相关页面
|
| 148 |
|
| 149 |
- [使用 OpenAI 兼容 API](../how-to/use-openai-compatible-api.md)
|
| 150 |
-
- [模型与提供
|
| 151 |
- [HTTP API 参考](http-api.md)
|
|
|
|
| 4 |
|
| 5 |
# 设置参考
|
| 6 |
|
| 7 |
+
当前 Koharu 的 Settings 页面主要包含以下 5 个区域:
|
| 8 |
|
| 9 |
+
- `Appearance`
|
| 10 |
+
- `Engines`
|
| 11 |
+
- `API Keys`
|
| 12 |
+
- `Runtime`
|
| 13 |
+
- `About`
|
| 14 |
|
| 15 |
+
本页基于当前应用实现说明这些设置项的实际行为。
|
| 16 |
|
| 17 |
+
## Appearance
|
|
|
|
|
|
|
| 18 |
|
| 19 |
+
`Appearance` 标签页当前包含:
|
| 20 |
|
| 21 |
+
- 主题:`Light`、`Dark`、`System`
|
| 22 |
+
- 从内置翻译资源中选择 UI 语言
|
| 23 |
+
- 用于渲染译文的 `Rendering Font`
|
| 24 |
|
| 25 |
+
主题、语言和渲染字体的变更都会在前端立即生效。
|
| 26 |
|
| 27 |
+
## Engines
|
| 28 |
|
| 29 |
+
`Engines` 标签页用于选择各个流水线阶段使用的后端:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
|
| 31 |
+
- `Detector`
|
| 32 |
+
- `Bubble Detector`
|
| 33 |
+
- `Font Detector`
|
| 34 |
+
- `Segmenter`
|
| 35 |
+
- `OCR`
|
| 36 |
+
- `Translator`
|
| 37 |
+
- `Inpainter`
|
| 38 |
+
- `Renderer`
|
| 39 |
|
| 40 |
+
这些值会写入共享应用配置,并在修改时立即保存。
|
|
|
|
|
|
|
|
|
|
|
|
|
| 41 |
|
| 42 |
## API Keys
|
| 43 |
|
| 44 |
+
`API Keys` 标签页当前覆盖以下内置提供方:
|
| 45 |
|
| 46 |
- `OpenAI`
|
| 47 |
- `Gemini`
|
| 48 |
- `Claude`
|
| 49 |
- `DeepSeek`
|
| 50 |
+
- `OpenAI Compatible`
|
| 51 |
|
| 52 |
+
当前行为:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 53 |
|
| 54 |
+
- 提供方 API key 存储在系统 keyring 中,而不是明文写入 `config.toml`
|
| 55 |
+
- 提供方的 `Base URL` 保存在共享应用配置中
|
| 56 |
+
- `OpenAI Compatible` 需要自定义 `Base URL`
|
| 57 |
+
- `OpenAI Compatible` 的模型列表会通过查询已配置端点动态发现
|
| 58 |
+
- 清除密钥会把它从 keyring 中删除
|
| 59 |
|
| 60 |
+
API 响应不会返回原始密钥,而是返回已遮罩的值。
|
| 61 |
|
| 62 |
+
## Runtime
|
| 63 |
|
| 64 |
+
`Runtime` 标签页集中放置会影响共享本地运行时、且需要重启后生效的设置:
|
| 65 |
|
| 66 |
+
- `Data Path`
|
| 67 |
+
- `HTTP Connect Timeout`
|
| 68 |
+
- `HTTP Read Timeout`
|
| 69 |
+
- `HTTP Max Retries`
|
|
|
|
|
|
|
| 70 |
|
| 71 |
+
当前行为:
|
| 72 |
|
| 73 |
+
- `Data Path` 控制运行时包、下载模型、页面清单和图像 blob 的存储位置
|
| 74 |
+
- `HTTP Connect Timeout` 控制建立 HTTP 连接时的最长等待时间
|
| 75 |
+
- `HTTP Read Timeout` 控制读取 HTTP 响应时的最长等待时间
|
| 76 |
+
- `HTTP Max Retries` 控制遇到临时 HTTP 故障时的自动重试次数
|
| 77 |
+
- 这些 HTTP 值会应用到下载和提供方请求共用的运行时 HTTP 客户端
|
| 78 |
+
- 由于这些值在启动时加载,应用变更时会先保存配置,再重启桌面应用
|
| 79 |
|
| 80 |
+
## About
|
| 81 |
|
| 82 |
+
`About` 标签页当前显示:
|
| 83 |
|
| 84 |
- 当前应用版本
|
| 85 |
- 是否存在更新的 GitHub release
|
|
|
|
| 90 |
|
| 91 |
## 持久化模型
|
| 92 |
|
| 93 |
+
当前设置数据分布在多个存储层中:
|
| 94 |
|
| 95 |
+
- `config.toml` 保存 `data`、`http`、`pipeline` 以及提供方 `baseUrl` 等共享配置
|
| 96 |
+
- 提供方 API key 存储在系统 keyring 中
|
| 97 |
+
- 主题、语言和渲染字体存储在前端 preferences 层中
|
| 98 |
|
| 99 |
+
因此,清除前端 preferences 并不等于清除已保存的提供方 API key 或共享运行时配置。
|
| 100 |
|
| 101 |
## 相关页面
|
| 102 |
|
| 103 |
- [使用 OpenAI 兼容 API](../how-to/use-openai-compatible-api.md)
|
| 104 |
+
- [模型与提供方](../explanation/models-and-providers.md)
|
| 105 |
- [HTTP API 参考](http-api.md)
|
docs/zh-CN/tutorials/translate-your-first-page.md
CHANGED
|
@@ -80,6 +80,7 @@ Koharu 可以帮助处理文本排版和纵排 CJK 渲染,但最终页面仍
|
|
| 80 |
- 语气和角色说话风格
|
| 81 |
- 换行与气泡适配
|
| 82 |
- 字体选择与描边可读性
|
|
|
|
| 83 |
- OCR 看起来不太可信的文本块
|
| 84 |
|
| 85 |
如果译文内容本身没问题,但版面显得过于拥挤,导出前先调整文本块或样式。
|
|
|
|
| 80 |
- 语气和角色说话风格
|
| 81 |
- 换行与气泡适配
|
| 82 |
- 字体选择与描边可读性
|
| 83 |
+
现在的默认描边会为了对比度自动选黑色或白色,但如果页面需要,你仍然可以手动覆盖。
|
| 84 |
- OCR 看起来不太可信的文本块
|
| 85 |
|
| 86 |
如果译文内容本身没问题,但版面显得过于拥挤,导出前先调整文本块或样式。
|