news 2026/9/2 13:49:00

Koharu四阶段流水线实战:如何组合运行检测、OCR、翻译与图像修复(Inpainting)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Koharu四阶段流水线实战:如何组合运行检测、OCR、翻译与图像修复(Inpainting)

Koharu四阶段流水线实战:如何组合运行检测、OCR、翻译与图像修复(Inpainting)

【免费下载链接】koharuAI-powered manga translator, written in Rust.项目地址: https://gitcode.com/gh_mirrors/ko/koharu

Koharu 是一款用 Rust 编写的开源 AI 漫画翻译工具,其核心是一套固定的四阶段流水线:检测(Detection)→ OCR → 翻译(Translation),以及检测 → 图像修复(Inpainting)两条分支。本文带你完整跑通一次漫画翻译项目:从选择处理范围、组合四个阶段,到理解每个模型阶段何时运行、何时跳过,以及中途停止后已完成的成果为何不会丢失。

上图为 Koharu 主界面:左侧是项目页面列表,中间是漫画画布,右侧图层面板中可以看到文本图层、Cleanup 修复层与原画图层——这正是四阶段流水线运行后的产物。

🧭 先理解 Koharu 的流水线结构

Koharu 没有自由搭建的运行时计算图,而是采用小而明确的工作流:

检测 detection -> OCR -> 翻译 translation \-> 图像修复 inpainting
  • 检测:用布局模型找出文字区域、对话气泡与分镜,并生成文字擦除掩码(removal mask);
  • OCR:只读取检测出的文字区域,识别原文(如日语);
  • 翻译:调用语言模型把原文翻译为目标语言,写入语义文本组件;
  • 图像修复(Inpainting):用擦除掩码重建原画中被台词遮挡的画面。

这条工作流定义在 crates/koharu-pipeline/src/stages/mod.rs 中:Stages结构体持有 detection、ocr、translation、inpainting 四个命名处理器,每个阶段实现同一套生命周期契约(StageProcessor trait):懒加载模型、处理恰好一页、产出一个语义化Patch

各阶段的默认模型可在配置中查看(crates/koharu-pipeline/src/config.rs):检测默认koharu-layout-rfdetr-seg-2xl,OCR 默认paddleocr-vl-1.6,修复默认lama

🎯 选择处理范围与阶段组合

在画布上方的处理选择器中,Koharu 支持三种范围(docs/workflow/process-pages.md):

范围含义
当前页仅画布中可见的这一页
选中页页面栏(Page Rail)中选中的页面
整个项目按项目顺序处理所有页面

阶段选择则对应 Operation 枚举:

  • Full:四个阶段全跑,即完整工作流;
  • Through 某阶段:例如"Run through Inpainting"= 检测 + 修复(注意它不会顺带跑 OCR 与翻译);
  • Only 某阶段:只跑一个阶段,适合精修重跑;
  • Stages 子集:勾选任意非空组合,按固定工作流顺序执行。

⚠️ 一个关键规则:被省略的前置阶段不会自动补上。如果你要重跑翻译但没有新鲜 OCR 结果,请同时勾上 OCR;同理,重跑修复前通常需要新的检测结果。

🖼️ 各阶段实战要点

检测:给后续阶段"画地图"

检测阶段对输入页面做文字、气泡、分镜三类识别。下图是典型的输入漫画页:

检测模型Koharu Layout RF-DETR Seg 2XL提供 text / bubble / panel 三个置信度阈值:阈值越低,保留越多不确定区域(误报也越多)。官方建议先检查若干代表性页面再调高阈值,见 docs/models/vision-and-inpainting.md。

OCR:只读检测到的文字

Koharu 提供四种 OCR 模型:PaddleOCR-VL 1.6(默认通用视觉语言路线)、Manga OCR(日语漫画专精)、Baberu OCR、Hayai OCR(中日韩英)。识别器无法找回检测阶段遗漏的文字,因此如果 OCR 结果为空,应先到画布上检查检测区域,而不是怀疑翻译模型。

翻译:可插拔的 Provider 后端

翻译是流水线中的普通处理器,其模型选择、目标语言、指令与生成参数都放在[pipeline.translation]配置节中,与 Provider 连接配置([providers])解耦。翻译结果会替换每个文本实体的Translation组件,而分析区域与排版层仍保持独立可编辑——这意味着你可以人工改写译文而不影响源文本与版式。支持的 Provider 源码见 crates/koharu-translator/src/remote/(OpenAI、Gemini、DeepL、Claude 等)。

图像修复(Inpainting):输出质量取决于掩码精度

Inpainting 用检测阶段生成的擦除掩码重建被台词遮挡的画面。下图是一张 4K 风景画测试图,正是 Inpainting 模型要在缺损区域重建周围画质的典型场景:

修复模型分两类:

  • 直接修复:LaMa(默认)、AOT Inpainting——轻量快速;
  • 生成式:FLUX.2 Klein、RORem Mixed——带正/负提示词控制,但运行时包更大、更耗时。提示词应聚焦"重建周围画面、排除文字",不要让修复模型去做排版。

另外,你也可以不依赖自动掩码:选择Remove工具手动绘制擦除区域,再对当前页单独运行 Inpainting 阶段,见 docs/workflow/cleanup-and-inpainting.md。

⚡ 调度机制:为什么中途停止也不丢结果

Koharu 流水线的执行单位是"一页上的一个阶段"(crates/koharu-pipeline/README.md):

  • 逐阶段提交:某个页面阶段一完成立即提交,画布即时刷新,无需等待全项目屏障;
  • 页面窗口调度:页面按项目顺序进入,调度器始终选最老的就绪页;加速卡上就绪任务共享一条执行通道,模型跨页保持驻留;
  • 空输入即跳过:某页没检测到文字 → 自动跳过 OCR 与翻译;擦除掩码为空 → 跳过修复推理。这些是"正常完成",不是失败;
  • 协作式停止StopToken阻止新工作开始,进行中的推理会跑到安全边界后丢弃结果;此前所有已提交成果完整保留,执行返回Stopped状态;
  • OOM 自愈:某阶段显存不足时,加速门会卸载其他阶段的模型、让设备冷却并重试一次。

🛠️ 推荐的组合运行方式

场景阶段组合说明
首次处理新项目Full(四阶段全跑)首次运行含模型下载与加载,耗时较长
只做"去台词"Through Inpainting检测 + 修复,不含 OCR/翻译
OCR 识别不准Only OCR(限当前页/选中页)用窄范围重跑,避免覆盖人工修订
换翻译风格/语言Only Translation仅替换译文,不影响原画与检测区域
修完局部文字后补修复Only Inpainting(当前页)配合手动 Remove 掩码精修

💡 重跑派生阶段会替换该阶段的语义输出。重跑检测或 OCR 前,建议先检查已人工修订过的文本元素,并尽量用窄范围(单页或选中页)执行。

📚 延伸阅读

  • 流水线模块文档:crates/koharu-pipeline/README.md
  • 处理页面工作流:docs/workflow/process-pages.md
  • 清理与图像修复:docs/workflow/cleanup-and-inpainting.md
  • 视觉与 Inpainting 模型选型:docs/models/vision-and-inpainting.md
  • 翻译 Provider 配置:crates/koharu-translator/README.md

模型是懒加载的,且 Koharu 会为每个处理器单独记忆配置档位(切回生成式修复模型时,其提示词配置会自动恢复)。建议先完整跑一轮、再在同一页面上横向对比模型质量,最后再调整项目默认配置。

【免费下载链接】koharuAI-powered manga translator, written in Rust.项目地址: https://gitcode.com/gh_mirrors/ko/koharu

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 13:48:58

Python价格监控系统实战:从定时采集到降价提醒的完整实现

“再降价、20点:全友家居 现代简约实木框架科技布沙发 2.24m 直排式一字款”,如果只看文字,这只是一条电商促销标题。但把它当成一个开发需求来看,信息量其实不小:“再降价”说明价格不是静态的,“20点”说…

作者头像 李华
网站建设 2026/9/2 13:46:09

东芝REGZA ZX电视画质深度解析:从芯片到校准的全链路指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/2 13:46:06

RAGflow本地部署实战:从零构建企业级知识库与智能问答系统

你是不是也遇到过这样的场景:想用大模型处理自己的文档,比如公司内部资料、个人笔记或者专业论文,但直接喂给 ChatGPT 或 Claude 时,它要么胡编乱造,要么对文档细节一问三不知?这背后的问题,就是…

作者头像 李华
网站建设 2026/9/2 13:44:52

CLIP 模型对比指南:9 个版本全量参数、精度与选型清单

CLIP 模型对比指南:9 个版本全量参数、精度与选型清单 【免费下载链接】CLIP CLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image 项目地址: https://gitcode.com/GitHub_Trending/cl/CLIP 你手头只有 …

作者头像 李华
网站建设 2026/9/2 13:42:42

飞行力学数值仿真:质点弹道程序构建与实现

简介:一套面向飞行力学学习者、航空航天专业学生及Simulink应用者的质点弹道数值仿真程序包,基于《飞行力学数值仿真》相关理论,用于模拟铅垂面内无控弹道并定量分析不同发射条件下的运动轨迹。压缩包内含2个文件:一个负责设定弹体…

作者头像 李华
网站建设 2026/9/2 13:42:06

R语言实战:从数据清洗到统计建模的完整工作流指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华