[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-hgmzhn--manga-translator-ui":3,"tool-hgmzhn--manga-translator-ui":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":76,"owner_company":76,"owner_location":76,"owner_email":76,"owner_twitter":76,"owner_website":76,"owner_url":78,"languages":79,"stars":108,"forks":109,"last_commit_at":110,"license":111,"difficulty_score":10,"env_os":112,"env_gpu":113,"env_ram":114,"env_deps":115,"category_tags":129,"github_topics":130,"view_count":141,"oss_zip_url":76,"oss_zip_packed_at":76,"status":16,"created_at":142,"updated_at":143,"faqs":144,"releases":183},174,"hgmzhn\u002Fmanga-translator-ui","manga-translator-ui","基于 manga-image-translator 的开源漫画翻译工具。支持日\u002F韩\u002F美漫自动翻译，内置 OpenAI、Gemini 等 5 种翻译引擎，并提供可视化编辑器自由调整文本样式。一键安装，开箱即用。如果喜欢，欢迎点亮 ⭐ Star 支持！","manga-translator-ui 是一款开源的漫画自动翻译工具，专为处理日漫、韩漫和美漫设计，支持黑白与彩色漫画。它能自动识别图像中的文字区域，通过 OCR 提取原文，并调用 OpenAI、Gemini 等多种翻译引擎生成译文，最后智能嵌入翻译后的文字，保持排版美观。内置可视化编辑器允许用户手动调整文本框位置、样式甚至修复背景，还支持导出 PSD 分层文件，方便后期精修。\n\n这款工具解决了漫画爱好者和翻译者手动处理图像文字繁琐耗时的问题，尤其适合希望快速获得高质量翻译结果的普通用户、同人译者或小型汉化组。无需编程基础，一键安装即可使用，同时提供命令行和 API 支持，也兼顾了开发者和研究人员的定制需求。其技术亮点包括多模态 AI 翻译、自动术语积累、智能断句与多种专用 OCR 模型（如 MangaOCR、PaddleOCR-VL），在准确性和易用性之间取得了良好平衡。","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhgmzhn_manga-translator-ui_readme_aeeb1bc0cc08.png\" width=\"500\" alt=\"主页\">\n\n[![DeepWiki文档](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDeepWiki-%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3-blue)](https:\u002F\u002Fdeepwiki.com\u002Fhgmzhn\u002Fmanga-translator-ui)\n[![基于](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%E5%9F%BA%E4%BA%8E-manga--image--translator-green)](https:\u002F\u002Fgithub.com\u002Fzyddnys\u002Fmanga-image-translator)\n[![模型](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%E6%A8%A1%E5%9E%8B-Real--CUGAN-orange)](https:\u002F\u002Fgithub.com\u002Fbilibili\u002Failab)\n[![模型](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%E6%A8%A1%E5%9E%8B-MangaJaNai-orange)](https:\u002F\u002Fgithub.com\u002Fthe-database\u002FMangaJaNai)\n[![模型](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%E6%A8%A1%E5%9E%8B-YSG-orange)](https:\u002F\u002Fgithub.com\u002Flhj5426\u002FYSG)\n[![模型](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FModel-MangaLens%20Bubble%20Segmentation-orange?logo=huggingface)](https:\u002F\u002Fhuggingface.co\u002Fhuyvux3005\u002Fmanga109-segmentation-bubble)\n[![OCR](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOCR-PaddleOCR-blue)](https:\u002F\u002Fgithub.com\u002FPaddlePaddle\u002FPaddleOCR)\n[![OCR](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOCR-MangaOCR-blue)](https:\u002F\u002Fgithub.com\u002Fkha-white\u002Fmanga-ocr)\n[![OCR](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOCR-PaddleOCR--VL--1.5-blue)](https:\u002F\u002Fhuggingface.co\u002FPaddlePaddle\u002FPaddleOCR-VL-1.5)\n[![许可证](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%E8%AE%B8%E5%8F%AF%E8%AF%81-GPL--3.0-red)](LICENSE)\n\n\u003C\u002Fdiv>\n\n\n**语言 \u002F Language**: 简体中文 | [English](README_EN.md)\n\n一键翻译漫画图片中的文字，支持日漫、韩漫、美漫，黑白漫和彩漫均可识别。自动检测、翻译、嵌字，支持日语、中文、英语等多种语言，内置可视化编辑器可调整文本框。\n\n**💬 QQ 交流群：1079089991（密码：kP9#mB2!vR5*sL1）** | **🐛 [提交 Issue](https:\u002F\u002Fgithub.com\u002Fhgmzhn\u002Fmanga-translator-ui\u002Fissues)**\n\n---\n\n## 📚 文档导航\n\n| 文档 | 说明 |\n|------|------|\n| [安装指南](doc\u002FINSTALLATION.md) | 详细安装步骤、系统要求、分卷下载说明 |\n| [使用教程](doc\u002FUSAGE.md) | 基础操作、翻译器选择、常用设置 |\n| [命令行模式](doc\u002FCLI_USAGE.md) | 命令行使用指南、参数说明、批量处理 |\n| [API 配置](doc\u002FAPI_CONFIG.md) | API Key 申请、配置教程 |\n| [功能特性](doc\u002FFEATURES.md) | 完整功能列表、可视化编辑器详解 |\n| [工作流程](doc\u002FWORKFLOWS.md) | 7 种工作流程、AI 断句、自定义模版 |\n| [设置说明](doc\u002FSETTINGS.md) | 翻译器配置、OCR 模型、参数详解 |\n| [调试指南](doc\u002FDEBUGGING.md) | 调试流程、可调节参数、问题排查 |\n| [开发者指南](doc\u002FDEVELOPMENT.md) | 项目结构、环境配置、构建打包 |\n\n---\n\n## 📸 效果展示\n\n\u003Cdiv align=\"center\">\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd align=\"center\">\u003Cb>翻译前\u003C\u002Fb>\u003C\u002Ftd>\n\u003Ctd align=\"center\">\u003Cb>翻译后\u003C\u002Fb>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhgmzhn_manga-translator-ui_readme_4b31e09ee1ca.png\" width=\"400\" alt=\"翻译前\">\u003C\u002Ftd>\n\u003Ctd>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhgmzhn_manga-translator-ui_readme_025255eb948d.png\" width=\"400\" alt=\"翻译后\">\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\u003C\u002Fdiv>\n\n---\n\n## ✨ 核心功能\n\n### 翻译功能\n\n- 🔍 **智能文本检测** - 自动识别漫画中的文字区域\n- 📝 **多语言 OCR** - 支持日语、中文、英语等多种语言\n- 🌐 **多种翻译引擎** - OpenAI、Gemini、Vertex、Sakura（含高质量模式）\n- 🎯 **高质量翻译** - 支持 GPT-4o、Gemini 多模态 AI 翻译\n- 📚 **自动提取术语** - AI 自动识别并积累专有名词，保持翻译一致性\n- 🤖 **AI 智能断句** - 提升文本可读性，自动优化换行\n- 🎨 **智能嵌字** - 自动排版译文，支持多种字体\n- 📥 **PSD 导出** - 导出可编辑的 PSD 文件（原图\u002F修复图\u002F文本分层）\n- 📦 **批量处理** - 一次处理整个文件夹\n\n### 可视化编辑器\n\n- ✏️ **区域编辑** - 移动、旋转、变形文本框\n- 📐 **文本编辑** - 手动翻译、样式调整\n- 🖌️ **蒙版编辑** - 画笔工具、橡皮擦\n- ⏪ **撤销\u002F重做** - 完整操作历史\n- ⌨️ **快捷键支持** - 支持 A\u002FD 切换图片，Q\u002FW\u002FE 切换工具，Ctrl+Q\u002FW\u002FE 进行文件操作\n- 🖱️ **鼠标滚轮快捷键** - Ctrl+滚轮缩放文本框，Shift+滚轮调整画笔大小\n\n**完整功能特性** → [doc\u002FFEATURES.md](doc\u002FFEATURES.md)\n\n---\n\n## 🚀 快速开始\n\n### 📥 安装方式\n\n#### 方式一：使用安装脚本（⭐ 推荐，支持更新）\n\n> ⚠️ **无需预装 Python**：脚本会自动安装 Miniconda（轻量级 Python 环境）  \n> 💡 **一键更新**：已安装用户运行 `步骤4-更新维护.bat` 即可更新到最新版本\n\n1. **下载安装脚本**：\n   - [点击下载 步骤1-首次安装.bat](https:\u002F\u002Fgithub.com\u002Fhgmzhn\u002Fmanga-translator-ui\u002Fraw\u002Fmain\u002F步骤1-首次安装.bat)\n   - 保存到你想安装程序的目录（如 `D:\\manga-translator-ui\\`）\n   - ⚠️ **这个目录将作为安装的根目录**，所有程序文件都会安装在此目录下\n   - ⚠️ **清理提醒**：使用清理功能会清空整个根目录的文件，但会保留 Python 配置和 Git 配置相关文件\n\n2. **运行安装**：\n   - 双击 `步骤1-首次安装.bat`\n   - 脚本会自动：\n     - ✓ 检测并安装 Miniconda（如需要）\n       - 提供下载源选择：清华大学镜像（国内推荐）或 Anaconda 官方\n       - 自动下载安装（约 50MB）\n       - 安装到项目目录，不占用C盘\n     - ✓ 安装便携版 Git（如需要）\n     - ✓ 克隆代码仓库\n     - ✓ 创建 Conda 虚拟环境（Python 3.12）\n     - ✓ 检测显卡类型（NVIDIA \u002F AMD \u002F 集显）\n     - ✓ 自动选择对应的 PyTorch 版本\n       - NVIDIA: CUDA 12.x 版本（需驱动 >= 525.60.13）\n       - AMD: ROCm 版本（实验性支持，**仅支持 RX 7000\u002F9000 系列**，RX 5000\u002F6000 请使用 CPU 版本）\n       - 其他: CPU 版本（通用，速度较慢）\n     - ✓ 安装所有依赖\n\n3. **启动程序**：\n   - 双击 `步骤2-启动Qt界面.bat`\n\n#### 方式二：下载打包版本\n\n1. **下载程序**：\n   - 前往 [GitHub Releases](https:\u002F\u002Fgithub.com\u002Fhgmzhn\u002Fmanga-translator-ui\u002Freleases)\n   - 选择版本：\n     - **CPU 版本**：适用于所有电脑\n     - **GPU 版本 (NVIDIA)**：需要支持 CUDA 12.x 的 NVIDIA 显卡\n     - ⚠️ **AMD GPU 不支持打包版本**，请使用\"方式一：安装脚本\"安装\n\n2. **解压运行**：\n   - 解压压缩包到任意目录\n   - 双击 `app.exe`\n\n#### 方式三：Docker 部署（实验性）\n\n> 💡 **说明**：下面的命令适合临时体验。正式部署 Web UI 时，建议按下方“Web UI 持久化”说明挂载数据目录和配置文件。\n\n**快速启动**：\n```bash\n# Windows CMD \u002F PowerShell\ndocker run -d --name manga-translator -p 8000:8000 hgmzhn\u002Fmanga-translator:latest-cpu\n\n# Linux \u002F macOS\ndocker run -d --name manga-translator -p 8000:8000 hgmzhn\u002Fmanga-translator:latest-cpu\n```\n\n**镜像仓库**：\n\n本项目的 Docker 镜像同时发布在两个镜像仓库，选择下载速度更快的即可：\n\n- **Docker Hub**（推荐）：\n  - CPU 版本：`hgmzhn\u002Fmanga-translator:latest-cpu`\n  - GPU 版本：`hgmzhn\u002Fmanga-translator:latest-gpu`\n\n- **GitHub Container Registry**（备用，国内可能更快）：\n  - CPU 版本：`ghcr.io\u002Fhgmzhn\u002Fmanga-translator:latest-cpu`\n  - GPU 版本：`ghcr.io\u002Fhgmzhn\u002Fmanga-translator:latest-gpu`\n\n**访问地址**（默认端口 8000）：\n- 🌐 用户界面：`http:\u002F\u002Flocalhost:8000`\n- 🔧 管理界面：`http:\u002F\u002Flocalhost:8000\u002Fadmin`\n\n**Web UI 持久化（推荐）**：\n\n- 必挂目录：`\u002Fapp\u002Fmanga_translator\u002Fserver\u002Fdata`、`\u002Fapp\u002Fexamples`、`\u002Fapp\u002Fdict`、`\u002Fapp\u002Ffonts`、`\u002Fapp\u002Fmodels`\n- 可选目录：`\u002Fapp\u002Flogs`、`\u002Fapp\u002Fresult`\n- 可选文件：`\u002Fapp\u002F.env`。如果你准备在 Web 管理界面里保存服务器 API Keys，必须额外挂这个文件\n- `server\u002Fdata` 现在会统一保存 `admin_config.json`、`user_resources\u002F`、账号、会话、用户组、权限、配额、API Key 预设、用户配置和翻译历史元数据\n\n> 📖 **详细安装教程**：[Docker 部署文档](doc\u002FINSTALLATION.md#安装方式四docker部署)  \n> 📖 **使用教程**：[命令行使用指南](doc\u002FCLI_USAGE.md)\n\n#### 方式四：从源码运行（开发者）\n\n适合开发者或想要自定义的用户。\n\n1. **安装 Python 3.12**：[下载](https:\u002F\u002Fwww.python.org\u002Fftp\u002Fpython\u002F3.12.10\u002Fpython-3.12.10-amd64.exe)\n2. **克隆仓库**：\n   ```bash\n   git clone https:\u002F\u002Fgithub.com\u002Fhgmzhn\u002Fmanga-translator-ui.git\n   cd manga-translator-ui\n   ```\n3. **安装依赖**：\n   ```bash\n   # NVIDIA GPU\n   pip install -r requirements_gpu.txt\n   \n   # AMD GPU（仅 RX 7000\u002F9000 系列）\n   pip install -r requirements_amd.txt\n   \n   # CPU 版本\n   pip install -r requirements_cpu.txt\n   ```\n4. **运行程序**：\n   ```bash\n   # 桌面 UI\n   python -m desktop_qt_ui.main\n   \n   # Web UI（可选）\n   python -m manga_translator web\n   ```\n\n> 📖 **详细安装教程**：[安装指南](doc\u002FINSTALLATION.md)  \n> 📖 **使用教程**：[命令行使用指南](doc\u002FCLI_USAGE.md)\n\n#### 方式五：macOS 原生运行 (Apple Silicon)\n\n专为 M1\u002FM2\u002FM3\u002FM4 Mac 优化的原生运行方式，支持 MPS (Metal Performance Shaders) GPU 加速。\n\n**快速开始（推荐）**：\n\n1. **下载安装脚本**：\n   ```bash\n   curl -O https:\u002F\u002Fraw.githubusercontent.com\u002Fhgmzhn\u002Fmanga-translator-ui\u002Fmain\u002FmacOS_1_首次安装.sh\n   chmod +x macOS_1_首次安装.sh\n   ```\n\n2. **运行安装**：\n   ```bash\n   .\u002FmacOS_1_首次安装.sh\n   ```\n   脚本会自动完成：\n   - 检查并安装必要组件（Xcode 命令行工具、Git）\n   - 克隆项目代码\n   - 安装 Miniforge 和 Python 环境\n   - 配置 MPS GPU 加速支持\n\n3. **启动程序**：\n   ```bash\n   .\u002FmacOS_2_启动Qt界面.sh\n   ```\n\n4. **后续更新**：\n   ```bash\n   .\u002FmacOS_4_更新维护.sh\n   ```\n\n**或者手动克隆**：\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fhgmzhn\u002Fmanga-translator-ui.git\ncd manga-translator-ui\nchmod +x macOS_*.sh\n.\u002FmacOS_1_首次安装.sh\n```\n\n> ⚠️ **注意**：\n> - 优先支持 Apple Silicon (M1\u002FM2\u002FM3\u002FM4) 芯片\n> - Intel Mac 也可运行，但会使用 CPU 模式\n> - 首次安装需要下载约 2GB 的依赖包，请确保网络畅通\n\n\n---\n\n## 📖 使用教程\n\n### 🖥️ Qt 界面模式\n\n安装完成后，请查看使用教程了解如何翻译图片：\n\n**使用教程** → [doc\u002FUSAGE.md](doc\u002FUSAGE.md)\n\n基本步骤：\n1. 填写 API（如使用在线翻译器）→ [API 配置教程](doc\u002FAPI_CONFIG.md)\n2. 关闭 GPU（仅 CPU 版本）\n3. 设置输出目录\n4. 添加图片\n5. 选择翻译器\n   - 首次使用推荐：**高质量翻译 OpenAI** 或 **高质量翻译 Gemini**\n   - 如需单独管理 Google 官方 Key，也可使用 **高质量翻译 Vertex**\n   - 需要配置 API Key，参考 [API 配置教程](doc\u002FAPI_CONFIG.md)\n6. 开始翻译\n\n### ⌨️ 命令行模式\n\n适合批量处理和自动化脚本：\n\n**命令行指南** → [doc\u002FCLI_USAGE.md](doc\u002FCLI_USAGE.md)\n\n> ⚠️ **重要提示**：使用命令行前，请先在项目目录激活虚拟环境：\n> ```bash\n> # Windows\n> conda activate manga-env\n> \n> # Linux\u002FmacOS\n> conda activate manga-env\n> ```\n\n快速开始：\n```bash\n# Local 模式（推荐，命令行翻译）\npython -m manga_translator local -i manga.jpg\n\n# 或简写（默认 Local 模式）\npython -m manga_translator -i manga.jpg\n\n# 翻译整个文件夹\npython -m manga_translator local -i .\u002Fmanga_folder\u002F -o .\u002Foutput\u002F\n\n# Web 服务器模式（带管理界面和 API）\npython -m manga_translator web --host 127.0.0.1 --port 8000 --use-gpu\n\n# 查看所有参数\npython -m manga_translator --help\n```\n\n---\n\n## 📋 工作流程\n\n本程序支持多种工作流程：\n\n1. **正常翻译流程** - 直接翻译图片 \n2. **导出翻译** - 翻译后导出到 TXT 文件\n3. **导出原文** - 仅检测识别，导出原文用于手动翻译\n4. **导入翻译并渲染** - 从 TXT\u002FJSON 导入翻译内容重新渲染\n\n**工作流程详解** → [doc\u002FWORKFLOWS.md](doc\u002FWORKFLOWS.md)\n\n---\n\n## ⚙️ 常用翻译器\n\n### 在线翻译器（需要 API Key）\n- **OpenAI** - 使用 GPT 系列模型\n- **Gemini** - 使用 Google Gemini 模型\n- **Vertex** - 使用固定 Google 官方 Gemini host，独立读取 `VERTEX_API_KEY` \u002F `VERTEX_MODEL`\n- **Sakura** - 专门针对日语优化的翻译模型\n\n### 高质量翻译器（推荐）\n- **高质量翻译 OpenAI** - 使用 GPT-4o 多模态模型\n- **高质量翻译 Gemini** - 使用 Gemini 多模态模型\n- **高质量翻译 Vertex** - 使用固定 Google 官方 Gemini host 的多模态路径\n- 📸 结合图片上下文，翻译更准确\n\n**完整设置说明** → [doc\u002FSETTINGS.md](doc\u002FSETTINGS.md)\n\n---\n\n## 🔍 遇到问题？\n\n### 翻译效果不理想\n\n1. 在\"基础设置\"中勾选 **详细日志**\n2. 查看 `result\u002F` 目录中的调试文件\n3. 调整检测器和 OCR 参数\n4. 排查完成后按文档清理旧日志（避免 `result\u002F` 目录过大）\n\n**调试流程指南** → [doc\u002FDEBUGGING.md](doc\u002FDEBUGGING.md)\n\n---\n\n## ⭐ Star 趋势\n\n\u003Cdiv align=\"center\">\n\n[![Star History Chart](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhgmzhn_manga-translator-ui_readme_4cb09b29ca92.png)](https:\u002F\u002Fstar-history.com\u002F#hgmzhn\u002Fmanga-translator-ui&Date)\n\n\u003C\u002Fdiv>\n\n---\n\n## 🙏 致谢\n\n- [zyddnys\u002Fmanga-image-translator](https:\u002F\u002Fgithub.com\u002Fzyddnys\u002Fmanga-image-translator) - 核心翻译引擎\n- [bilibili\u002Failab](https:\u002F\u002Fgithub.com\u002Fbilibili\u002Failab) - Real-CUGAN 超分辨率模型\n- [the-database\u002FMangaJaNai](https:\u002F\u002Fgithub.com\u002Fthe-database\u002FMangaJaNai) - MangaJaNai\u002FIllustrationJaNai 超分辨率模型\n- [lhj5426\u002FYSG](https:\u002F\u002Fgithub.com\u002Flhj5426\u002FYSG) - 提供模型支持\n- [huyvux3005\u002Fmanga109-segmentation-bubble](https:\u002F\u002Fhuggingface.co\u002Fhuyvux3005\u002Fmanga109-segmentation-bubble) - MangaLens Bubble Segmentation 气泡分割模型\n- [PaddleOCR](https:\u002F\u002Fgithub.com\u002FPaddlePaddle\u002FPaddleOCR) - 提供 OCR 模型支持\n- [kha-white\u002Fmanga-ocr](https:\u002F\u002Fgithub.com\u002Fkha-white\u002Fmanga-ocr) - MangaOCR 模型支持\n- [PaddlePaddle\u002FPaddleOCR-VL-1.5](https:\u002F\u002Fhuggingface.co\u002FPaddlePaddle\u002FPaddleOCR-VL-1.5) - 官方 PaddleOCR-VL-1.5 模型页\n- 所有贡献者和用户的支持\n\n---\n\n## ❤️ 支持作者\n\n如果这个项目对你有帮助，欢迎请作者喝杯奶茶 🧋\n\n\u003Cdiv align=\"center\">\n\n\u003Ctable style=\"border: none;\">\n\u003Ctr>\n\u003Ctd align=\"center\" style=\"padding: 10px;\">\n\u003Cdiv style=\"border: 2px solid #e0e0e0; border-radius: 10px; padding: 15px; background: #f9f9f9; display: inline-block;\">\n  \u003Cdiv style=\"background: white; padding: 10px; border-radius: 8px;\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhgmzhn_manga-translator-ui_readme_673f28253c93.png\" width=\"180\" alt=\"微信赞赏码\">\n  \u003C\u002Fdiv>\n  \u003Cp style=\"margin: 8px 0 0 0; font-size: 14px; color: #666;\">💚 微信赞赏\u003C\u002Fp>\n\u003C\u002Fdiv>\n\u003C\u002Ftd>\n\u003Ctd width=\"30\">\u003C\u002Ftd>\n\u003Ctd align=\"center\" style=\"padding: 10px;\">\n\u003Cdiv style=\"border: 2px solid #e0e0e0; border-radius: 10px; padding: 15px; background: #f9f9f9; display: inline-block;\">\n  \u003Cdiv style=\"background: white; padding: 10px; border-radius: 8px;\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhgmzhn_manga-translator-ui_readme_ebcbbdefe312.jpg\" width=\"180\" alt=\"支付宝赞助码\">\n  \u003C\u002Fdiv>\n  \u003Cp style=\"margin: 8px 0 0 0; font-size: 14px; color: #666;\">💙 支付宝赞助\u003C\u002Fp>\n\u003C\u002Fdiv>\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\u003Cp style=\"font-size: 13px; color: #888; margin-top: 10px;\">感谢你的支持 ✨\u003C\u002Fp>\n\n\u003C\u002Fdiv>\n\n---\n\n## 📝 许可证\n\n本项目基于 GPL-3.0 许可证开源。\n\n### 模型协议声明\n\n本项目代码采用 **GPL-3.0 协议**。\n\n本项目支持使用 MangaJaNai\u002FIllustrationJaNai 模型进行图像超分辨率处理。这些模型权重文件采用 **CC BY-NC 4.0 协议**（署名-非商业性使用 4.0 国际），仅供非商业用途使用。\n\n- **模型来源**：[MangaJaNai](https:\u002F\u002Fgithub.com\u002Fthe-database\u002FMangaJaNai)\n- **模型协议**：CC BY-NC 4.0\n- **使用限制**：仅限非商业用途\n\n---\n\n## ⚠️ 特别声明\n\n本项目仅提供技术演示与个人学习交流用途，不构成任何法律、商业或合规建议。  \n你在安装、配置、调用和分发本项目相关功能时，应自行确认并持续遵守所在地法律法规、平台规则、内容来源许可及第三方服务条款。\n\n### 免责与责任限制\n\n- 使用本项目产生的一切行为与后果（包括但不限于内容处理、发布、传播、二次分发、商业化使用），均由使用者独立承担责任。\n- 你应自行确保输入内容、输出内容及数据来源具备合法授权，不得用于侵犯著作权、商标权、隐私权、肖像权等合法权益的场景。\n- 严禁将本项目用于任何违法违规用途，包括但不限于盗版传播、未授权批量抓取与搬运、绕过平台限制、诈骗、诽谤、侵害他人合法权益等行为。\n- 本项目依赖第三方模型、API、数据与库（含 OCR、翻译、超分模型等）；相关可用性、准确性、稳定性、费用、风控与合规要求由对应服务方负责，使用者需自行承担相应风险与成本。\n- 对于因使用或无法使用本项目导致的任何直接或间接损失（包括但不限于数据损失、业务中断、收益损失、账户风险、第三方索赔等），项目作者与贡献者在适用法律允许范围内不承担责任。\n- 若你将本项目用于团队或组织环境，应自行完成权限管理、日志审计、内容审核与合规评估，并建立必要的人工复核流程。\n\n请在使用前审慎评估风险；继续使用即视为你已阅读、理解并同意上述声明。\n\n---\n","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhgmzhn_manga-translator-ui_readme_aeeb1bc0cc08.png\" width=\"500\" alt=\"主页\">\n\n[![DeepWiki文档](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDeepWiki-%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3-blue)](https:\u002F\u002Fdeepwiki.com\u002Fhgmzhn\u002Fmanga-translator-ui)\n[![基于](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%E5%9F%BA%E4%BA%8E-manga--image--translator-green)](https:\u002F\u002Fgithub.com\u002Fzyddnys\u002Fmanga-image-translator)\n[![模型](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%E6%A8%A1%E5%9E%8B-Real--CUGAN-orange)](https:\u002F\u002Fgithub.com\u002Fbilibili\u002Failab)\n[![模型](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%E6%A8%A1%E5%9E%8B-MangaJaNai-orange)](https:\u002F\u002Fgithub.com\u002Fthe-database\u002FMangaJaNai)\n[![模型](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%E6%A8%A1%E5%9E%8B-YSG-orange)](https:\u002F\u002Fgithub.com\u002Flhj5426\u002FYSG)\n[![模型](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FModel-MangaLens%20Bubble%20Segmentation-orange?logo=huggingface)](https:\u002F\u002Fhuggingface.co\u002Fhuyvux3005\u002Fmanga109-segmentation-bubble)\n[![OCR](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOCR-PaddleOCR-blue)](https:\u002F\u002Fgithub.com\u002FPaddlePaddle\u002FPaddleOCR)\n[![OCR](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOCR-MangaOCR-blue)](https:\u002F\u002Fgithub.com\u002Fkha-white\u002Fmanga-ocr)\n[![OCR](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOCR-PaddleOCR--VL--1.5-blue)](https:\u002F\u002Fhuggingface.co\u002FPaddlePaddle\u002FPaddleOCR-VL-1.5)\n[![许可证](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%E8%AE%B8%E5%8F%AF%E8%AF%81-GPL--3.0-red)](LICENSE)\n\n\u003C\u002Fdiv>\n\n\n**语言 \u002F Language**: 简体中文 | [English](README_EN.md)\n\n一键翻译漫画图片中的文字，支持日漫、韩漫、美漫，黑白漫和彩漫均可识别。自动检测、翻译、嵌字，支持日语、中文、英语等多种语言，内置可视化编辑器可调整文本框。\n\n**💬 QQ 交流群：1079089991（密码：kP9#mB2!vR5*sL1）** | **🐛 [提交 Issue](https:\u002F\u002Fgithub.com\u002Fhgmzhn\u002Fmanga-translator-ui\u002Fissues)**\n\n---\n\n## 📚 文档导航\n\n| 文档 | 说明 |\n|------|------|\n| [安装指南](doc\u002FINSTALLATION.md) | 详细安装步骤、系统要求、分卷下载说明 |\n| [使用教程](doc\u002FUSAGE.md) | 基础操作、翻译器选择、常用设置 |\n| [命令行模式](doc\u002FCLI_USAGE.md) | 命令行使用指南、参数说明、批量处理 |\n| [API 配置](doc\u002FAPI_CONFIG.md) | API Key 申请、配置教程 |\n| [功能特性](doc\u002FFEATURES.md) | 完整功能列表、可视化编辑器详解 |\n| [工作流程](doc\u002FWORKFLOWS.md) | 7 种工作流程、AI 断句、自定义模版 |\n| [设置说明](doc\u002FSETTINGS.md) | 翻译器配置、OCR 模型、参数详解 |\n| [调试指南](doc\u002FDEBUGGING.md) | 调试流程、可调节参数、问题排查 |\n| [开发者指南](doc\u002FDEVELOPMENT.md) | 项目结构、环境配置、构建打包 |\n\n---\n\n## 📸 效果展示\n\n\u003Cdiv align=\"center\">\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd align=\"center\">\u003Cb>翻译前\u003C\u002Fb>\u003C\u002Ftd>\n\u003Ctd align=\"center\">\u003Cb>翻译后\u003C\u002Fb>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhgmzhn_manga-translator-ui_readme_4b31e09ee1ca.png\" width=\"400\" alt=\"翻译前\">\u003C\u002Ftd>\n\u003Ctd>\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhgmzhn_manga-translator-ui_readme_025255eb948d.png\" width=\"400\" alt=\"翻译后\">\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\u003C\u002Fdiv>\n\n---\n\n## ✨ 核心功能\n\n### 翻译功能\n\n- 🔍 **智能文本检测** - 自动识别漫画中的文字区域\n- 📝 **多语言 OCR**（光学字符识别） - 支持日语、中文、英语等多种语言\n- 🌐 **多种翻译引擎** - OpenAI、Gemini、Vertex、Sakura（含高质量模式）\n- 🎯 **高质量翻译** - 支持 GPT-4o、Gemini 多模态 AI 翻译\n- 📚 **自动提取术语** - AI 自动识别并积累专有名词，保持翻译一致性\n- 🤖 **AI 智能断句** - 提升文本可读性，自动优化换行\n- 🎨 **智能嵌字** - 自动排版译文，支持多种字体\n- 📥 **PSD 导出** - 导出可编辑的 PSD 文件（原图\u002F修复图\u002F文本分层）\n- 📦 **批量处理** - 一次处理整个文件夹\n\n### 可视化编辑器\n\n- ✏️ **区域编辑** - 移动、旋转、变形文本框\n- 📐 **文本编辑** - 手动翻译、样式调整\n- 🖌️ **蒙版编辑** - 画笔工具、橡皮擦\n- ⏪ **撤销\u002F重做** - 完整操作历史\n- ⌨️ **快捷键支持** - 支持 A\u002FD 切换图片，Q\u002FW\u002FE 切换工具，Ctrl+Q\u002FW\u002FE 进行文件操作\n- 🖱️ **鼠标滚轮快捷键** - Ctrl+滚轮缩放文本框，Shift+滚轮调整画笔大小\n\n**完整功能特性** → [doc\u002FFEATURES.md](doc\u002FFEATURES.md)\n\n---\n\n## 🚀 快速开始\n\n### 📥 安装方式\n\n#### 方式一：使用安装脚本（⭐ 推荐，支持更新）\n\n> ⚠️ **无需预装 Python**：脚本会自动安装 Miniconda（轻量级 Python 环境）  \n> 💡 **一键更新**：已安装用户运行 `步骤4-更新维护.bat` 即可更新到最新版本\n\n1. **下载安装脚本**：\n   - [点击下载 步骤1-首次安装.bat](https:\u002F\u002Fgithub.com\u002Fhgmzhn\u002Fmanga-translator-ui\u002Fraw\u002Fmain\u002F步骤1-首次安装.bat)\n   - 保存到你想安装程序的目录（如 `D:\\manga-translator-ui\\`）\n   - ⚠️ **这个目录将作为安装的根目录**，所有程序文件都会安装在此目录下\n   - ⚠️ **清理提醒**：使用清理功能会清空整个根目录的文件，但会保留 Python 配置和 Git 配置相关文件\n\n2. **运行安装**：\n   - 双击 `步骤1-首次安装.bat`\n   - 脚本会自动：\n     - ✓ 检测并安装 Miniconda（如需要）\n       - 提供下载源选择：清华大学镜像（国内推荐）或 Anaconda 官方\n       - 自动下载安装（约 50MB）\n       - 安装到项目目录，不占用C盘\n     - ✓ 安装便携版 Git（如需要）\n     - ✓ 克隆代码仓库\n     - ✓ 创建 Conda 虚拟环境（Python 3.12）\n     - ✓ 检测显卡类型（NVIDIA \u002F AMD \u002F 集显）\n     - ✓ 自动选择对应的 PyTorch 版本\n       - NVIDIA: CUDA 12.x 版本（需驱动 >= 525.60.13）\n       - AMD: ROCm 版本（实验性支持，**仅支持 RX 7000\u002F9000 系列**，RX 5000\u002F6000 请使用 CPU 版本）\n       - 其他: CPU 版本（通用，速度较慢）\n     - ✓ 安装所有依赖\n\n3. **启动程序**：\n   - 双击 `步骤2-启动Qt界面.bat`\n\n#### 方式二：下载打包版本\n\n1. **下载程序**：\n   - 前往 [GitHub Releases](https:\u002F\u002Fgithub.com\u002Fhgmzhn\u002Fmanga-translator-ui\u002Freleases)\n   - 选择版本：\n     - **CPU 版本**：适用于所有电脑\n     - **GPU 版本 (NVIDIA)**：需要支持 CUDA 12.x 的 NVIDIA 显卡\n     - ⚠️ **AMD GPU 不支持打包版本**，请使用\"方式一：安装脚本\"安装\n\n2. **解压运行**：\n   - 解压压缩包到任意目录\n   - 双击 `app.exe`\n\n#### 方式三：Docker 部署（实验性）\n\n> 💡 **说明**：下面的命令适合临时体验。正式部署 Web UI 时，建议按下方“Web UI 持久化”说明挂载数据目录和配置文件。\n\n**快速启动**：\n```bash\n# Windows CMD \u002F PowerShell\ndocker run -d --name manga-translator -p 8000:8000 hgmzhn\u002Fmanga-translator:latest-cpu\n\n# Linux \u002F macOS\ndocker run -d --name manga-translator -p 8000:8000 hgmzhn\u002Fmanga-translator:latest-cpu\n```\n\n**镜像仓库**：\n\n本项目的 Docker 镜像同时发布在两个镜像仓库，选择下载速度更快的即可：\n\n- **Docker Hub**（推荐）：\n  - CPU 版本：`hgmzhn\u002Fmanga-translator:latest-cpu`\n  - GPU 版本：`hgmzhn\u002Fmanga-translator:latest-gpu`\n\n- **GitHub Container Registry**（备用，国内可能更快）：\n  - CPU 版本：`ghcr.io\u002Fhgmzhn\u002Fmanga-translator:latest-cpu`\n  - GPU 版本：`ghcr.io\u002Fhgmzhn\u002Fmanga-translator:latest-gpu`\n\n**访问地址**（默认端口 8000）：\n- 🌐 用户界面：`http:\u002F\u002Flocalhost:8000`\n- 🔧 管理界面：`http:\u002F\u002Flocalhost:8000\u002Fadmin`\n\n**Web UI 持久化（推荐）**：\n\n- 必挂目录：`\u002Fapp\u002Fmanga_translator\u002Fserver\u002Fdata`、`\u002Fapp\u002Fexamples`、`\u002Fapp\u002Fdict`、`\u002Fapp\u002Ffonts`、`\u002Fapp\u002Fmodels`\n- 可选目录：`\u002Fapp\u002Flogs`、`\u002Fapp\u002Fresult`\n- 可选文件：`\u002Fapp\u002F.env`。如果你准备在 Web 管理界面里保存服务器 API Keys，必须额外挂这个文件\n- `server\u002Fdata` 现在会统一保存 `admin_config.json`、`user_resources\u002F`、账号、会话、用户组、权限、配额、API Key 预设、用户配置和翻译历史元数据\n\n> 📖 **详细安装教程**：[Docker 部署文档](doc\u002FINSTALLATION.md#安装方式四docker部署)  \n> 📖 **使用教程**：[命令行使用指南](doc\u002FCLI_USAGE.md)\n\n#### 方式四：从源码运行（开发者）\n\n适合开发者或想要自定义的用户。\n\n1. **安装 Python 3.12**：[下载](https:\u002F\u002Fwww.python.org\u002Fftp\u002Fpython\u002F3.12.10\u002Fpython-3.12.10-amd64.exe)\n2. **克隆仓库**：\n   ```bash\n   git clone https:\u002F\u002Fgithub.com\u002Fhgmzhn\u002Fmanga-translator-ui.git\n   cd manga-translator-ui\n   ```\n3. **安装依赖**：\n   ```bash\n   # NVIDIA GPU\n   pip install -r requirements_gpu.txt\n   \n   # AMD GPU（仅 RX 7000\u002F9000 系列）\n   pip install -r requirements_amd.txt\n   \n   # CPU 版本\n   pip install -r requirements_cpu.txt\n   ```\n4. **运行程序**：\n   ```bash\n   # 桌面 UI\n   python -m desktop_qt_ui.main\n   \n   # Web UI（可选）\n   python -m manga_translator web\n   ```\n\n> 📖 **详细安装教程**：[安装指南](doc\u002FINSTALLATION.md)  \n> 📖 **使用教程**：[命令行使用指南](doc\u002FCLI_USAGE.md)\n\n#### 方式五：macOS 原生运行 (Apple Silicon)\n\n专为 M1\u002FM2\u002FM3\u002FM4 Mac 优化的原生运行方式，支持 MPS (Metal Performance Shaders) GPU 加速。\n\n**快速开始（推荐）**：\n\n1. **下载安装脚本**：\n   ```bash\n   curl -O https:\u002F\u002Fraw.githubusercontent.com\u002Fhgmzhn\u002Fmanga-translator-ui\u002Fmain\u002FmacOS_1_首次安装.sh\n   chmod +x macOS_1_首次安装.sh\n   ```\n\n2. **运行安装**：\n   ```bash\n   .\u002FmacOS_1_首次安装.sh\n   ```\n   脚本会自动完成：\n   - 检查并安装必要组件（Xcode 命令行工具、Git）\n   - 克隆项目代码\n   - 安装 Miniforge 和 Python 环境\n   - 配置 MPS GPU 加速支持\n\n3. **启动程序**：\n   ```bash\n   .\u002FmacOS_2_启动Qt界面.sh\n   ```\n\n4. **后续更新**：\n   ```bash\n   .\u002FmacOS_4_更新维护.sh\n   ```\n\n**或者手动克隆**：\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fhgmzhn\u002Fmanga-translator-ui.git\ncd manga-translator-ui\nchmod +x macOS_*.sh\n.\u002FmacOS_1_首次安装.sh\n```\n\n> ⚠️ **注意**：\n> - 优先支持 Apple Silicon (M1\u002FM2\u002FM3\u002FM4) 芯片\n> - Intel Mac 也可运行，但会使用 CPU 模式\n> - 首次安装需要下载约 2GB 的依赖包，请确保网络畅通\n\n\n---\n\n## 📖 使用教程\n\n### 🖥️ Qt 界面模式\n\n安装完成后，请查看使用教程了解如何翻译图片：\n\n**使用教程** → [doc\u002FUSAGE.md](doc\u002FUSAGE.md)\n\n基本步骤：\n1. 填写 API（如使用在线翻译器）→ [API 配置教程](doc\u002FAPI_CONFIG.md)\n2. 关闭 GPU（仅 CPU 版本）\n3. 设置输出目录\n4. 添加图片\n5. 选择翻译器\n   - 首次使用推荐：**高质量翻译 OpenAI** 或 **高质量翻译 Gemini**\n   - 如需单独管理 Google 官方 Key，也可使用 **高质量翻译 Vertex**\n   - 需要配置 API Key，参考 [API 配置教程](doc\u002FAPI_CONFIG.md)\n6. 开始翻译\n\n### ⌨️ 命令行模式\n\n适合批量处理和自动化脚本：\n\n**命令行指南** → [doc\u002FCLI_USAGE.md](doc\u002FCLI_USAGE.md)\n\n> ⚠️ **重要提示**：使用命令行前，请先在项目目录激活虚拟环境：\n> ```bash\n> # Windows\n> conda activate manga-env\n> \n> # Linux\u002FmacOS\n> conda activate manga-env\n> ```\n\n快速开始：\n```bash\n# Local 模式（推荐，命令行翻译）\npython -m manga_translator local -i manga.jpg\n\n# 或简写（默认 Local 模式）\npython -m manga_translator -i manga.jpg\n\n# 翻译整个文件夹\npython -m manga_translator local -i .\u002Fmanga_folder\u002F -o .\u002Foutput\u002F\n\n# Web 服务器模式（带管理界面和 API）\npython -m manga_translator web --host 127.0.0.1 --port 8000 --use-gpu\n\n# 查看所有参数\npython -m manga_translator --help\n```\n\n---\n\n## 📋 工作流程\n\n本程序支持多种工作流程：\n\n1. **正常翻译流程** - 直接翻译图片 \n2. **导出翻译** - 翻译后导出到 TXT 文件\n3. **导出原文** - 仅检测识别，导出原文用于手动翻译\n4. **导入翻译并渲染** - 从 TXT\u002FJSON 导入翻译内容重新渲染\n\n**工作流程详解** → [doc\u002FWORKFLOWS.md](doc\u002FWORKFLOWS.md)\n\n---\n\n## ⚙️ 常用翻译器\n\n### 在线翻译器（需要 API Key）\n- **OpenAI** - 使用 GPT 系列模型\n- **Gemini** - 使用 Google Gemini 模型\n- **Vertex** - 使用固定 Google 官方 Gemini host，独立读取 `VERTEX_API_KEY` \u002F `VERTEX_MODEL`\n- **Sakura** - 专门针对日语优化的翻译模型\n\n### 高质量翻译器（推荐）\n- **高质量翻译 OpenAI** - 使用 GPT-4o 多模态模型\n- **高质量翻译 Gemini** - 使用 Gemini 多模态模型\n- **高质量翻译 Vertex** - 使用固定 Google 官方 Gemini host 的多模态路径\n- 📸 结合图片上下文，翻译更准确\n\n**完整设置说明** → [doc\u002FSETTINGS.md](doc\u002FSETTINGS.md)\n\n---\n\n## 🔍 遇到问题？\n\n### 翻译效果不理想\n\n1. 在\"基础设置\"中勾选 **详细日志**\n2. 查看 `result\u002F` 目录中的调试文件\n3. 调整检测器和 OCR 参数\n4. 排查完成后按文档清理旧日志（避免 `result\u002F` 目录过大）\n\n**调试流程指南** → [doc\u002FDEBUGGING.md](doc\u002FDEBUGGING.md)\n\n---\n\n## ⭐ Star 趋势\n\n\u003Cdiv align=\"center\">\n\n[![Star History Chart](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhgmzhn_manga-translator-ui_readme_4cb09b29ca92.png)](https:\u002F\u002Fstar-history.com\u002F#hgmzhn\u002Fmanga-translator-ui&Date)\n\n\u003C\u002Fdiv>\n\n---\n\n## 🙏 致谢\n\n- [zyddnys\u002Fmanga-image-translator](https:\u002F\u002Fgithub.com\u002Fzyddnys\u002Fmanga-image-translator) - 核心翻译引擎\n- [bilibili\u002Failab](https:\u002F\u002Fgithub.com\u002Fbilibili\u002Failab) - Real-CUGAN 超分辨率模型\n- [the-database\u002FMangaJaNai](https:\u002F\u002Fgithub.com\u002Fthe-database\u002FMangaJaNai) - MangaJaNai\u002FIllustrationJaNai 超分辨率模型\n- [lhj5426\u002FYSG](https:\u002F\u002Fgithub.com\u002Flhj5426\u002FYSG) - 提供模型支持\n- [huyvux3005\u002Fmanga109-segmentation-bubble](https:\u002F\u002Fhuggingface.co\u002Fhuyvux3005\u002Fmanga109-segmentation-bubble) - MangaLens Bubble Segmentation 气泡分割模型\n- [PaddleOCR](https:\u002F\u002Fgithub.com\u002FPaddlePaddle\u002FPaddleOCR) - 提供 OCR 模型支持\n- [kha-white\u002Fmanga-ocr](https:\u002F\u002Fgithub.com\u002Fkha-white\u002Fmanga-ocr) - MangaOCR 模型支持\n- [PaddlePaddle\u002FPaddleOCR-VL-1.5](https:\u002F\u002Fhuggingface.co\u002FPaddlePaddle\u002FPaddleOCR-VL-1.5) - 官方 PaddleOCR-VL-1.5 模型页\n- 所有贡献者和用户的支持\n\n---\n\n## ❤️ 支持作者\n\n如果这个项目对你有帮助，欢迎请作者喝杯奶茶 🧋\n\n\u003Cdiv align=\"center\">\n\n\u003Ctable style=\"border: none;\">\n\u003Ctr>\n\u003Ctd align=\"center\" style=\"padding: 10px;\">\n\u003Cdiv style=\"border: 2px solid #e0e0e0; border-radius: 10px; padding: 15px; background: #f9f9f9; display: inline-block;\">\n  \u003Cdiv style=\"background: white; padding: 10px; border-radius: 8px;\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhgmzhn_manga-translator-ui_readme_673f28253c93.png\" width=\"180\" alt=\"微信赞赏码\">\n  \u003C\u002Fdiv>\n  \u003Cp style=\"margin: 8px 0 0 0; font-size: 14px; color: #666;\">💚 微信赞赏\u003C\u002Fp>\n\u003C\u002Fdiv>\n\u003C\u002Ftd>\n\u003Ctd width=\"30\">\u003C\u002Ftd>\n\u003Ctd align=\"center\" style=\"padding: 10px;\">\n\u003Cdiv style=\"border: 2px solid #e0e0e0; border-radius: 10px; padding: 15px; background: #f9f9f9; display: inline-block;\">\n  \u003Cdiv style=\"background: white; padding: 10px; border-radius: 8px;\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhgmzhn_manga-translator-ui_readme_ebcbbdefe312.jpg\" width=\"180\" alt=\"支付宝赞助码\">\n  \u003C\u002Fdiv>\n  \u003Cp style=\"margin: 8px 0 0 0; font-size: 14px; color: #666;\">💙 支付宝赞助\u003C\u002Fp>\n\u003C\u002Fdiv>\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\u003Cp style=\"font-size: 13px; color: #888; margin-top: 10px;\">感谢你的支持 ✨\u003C\u002Fp>\n\n\u003C\u002Fdiv>\n\n---\n\n## 📝 许可证\n\n本项目基于 GPL-3.0 许可证开源。\n\n### 模型协议声明\n\n本项目代码采用 **GPL-3.0 协议**。\n\n本项目支持使用 MangaJaNai\u002FIllustrationJaNai 模型进行图像超分辨率处理。这些模型权重文件采用 **CC BY-NC 4.0 协议**（署名-非商业性使用 4.0 国际），仅供非商业用途使用。\n\n- **模型来源**：[MangaJaNai](https:\u002F\u002Fgithub.com\u002Fthe-database\u002FMangaJaNai)\n- **模型协议**：CC BY-NC 4.0\n- **使用限制**：仅限非商业用途\n\n---\n\n## ⚠️ 特别声明\n\n本项目仅提供技术演示与个人学习交流用途，不构成任何法律、商业或合规建议。  \n你在安装、配置、调用和分发本项目相关功能时，应自行确认并持续遵守所在地法律法规、平台规则、内容来源许可及第三方服务条款。\n\n### 免责与责任限制\n\n- 使用本项目产生的一切行为与后果（包括但不限于内容处理、发布、传播、二次分发、商业化使用），均由使用者独立承担责任。\n- 你应自行确保输入内容、输出内容及数据来源具备合法授权，不得用于侵犯著作权、商标权、隐私权、肖像权等合法权益的场景。\n- 严禁将本项目用于任何违法违规用途，包括但不限于盗版传播、未授权批量抓取与搬运、绕过平台限制、诈骗、诽谤、侵害他人合法权益等行为。\n- 本项目依赖第三方模型、API、数据与库（含 OCR、翻译、超分模型等）；相关可用性、准确性、稳定性、费用、风控与合规要求由对应服务方负责，使用者需自行承担相应风险与成本。\n- 对于因使用或无法使用本项目导致的任何直接或间接损失（包括但不限于数据损失、业务中断、收益损失、账户风险、第三方索赔等），项目作者与贡献者在适用法律允许范围内不承担责任。\n- 若你将本项目用于团队或组织环境，应自行完成权限管理、日志审计、内容审核与合规评估，并建立必要的人工复核流程。\n\n请在使用前审慎评估风险；继续使用即视为你已阅读、理解并同意上述声明。","# manga-translator-ui 快速上手指南\n\n## 环境准备\n\n### 系统要求\n- **Windows**：Windows 10\u002F11（推荐）\n- **macOS**：macOS 12+（Apple Silicon M1\u002FM2\u002FM3\u002FM4 芯片最佳）\n- **Linux**：Ubuntu 20.04+ 或其他主流发行版\n- **显卡支持**：\n  - NVIDIA GPU（驱动 ≥ 525.60.13，支持 CUDA 12.x）\n  - AMD RX 7000\u002F9000 系列（实验性支持）\n  - CPU 模式适用于所有设备（速度较慢）\n\n### 前置依赖（推荐使用安装脚本自动处理）\n- 无需手动安装 Python、Git 或 Conda\n- 安装脚本会自动配置 Miniconda（轻量级 Python 环境）并选择国内镜像源（清华大学源）\n\n---\n\n## 安装步骤\n\n### ✅ 推荐方式：使用安装脚本（自动配置国内源）\n\n#### Windows \u002F Linux\n1. 下载安装脚本：\n   ```bash\n   # 或直接点击下载：https:\u002F\u002Fgithub.com\u002Fhgmzhn\u002Fmanga-translator-ui\u002Fraw\u002Fmain\u002F步骤1-首次安装.bat\n   ```\n2. 将 `步骤1-首次安装.bat` 保存到目标目录（如 `D:\\manga-translator-ui\\`）\n3. 双击运行该脚本，自动完成：\n   - 安装 Miniconda（使用清华镜像加速）\n   - 安装便携版 Git\n   - 克隆代码并创建虚拟环境（Python 3.12）\n   - 根据显卡类型自动安装对应 PyTorch 版本\n4. 安装完成后，双击 `步骤2-启动Qt界面.bat` 启动程序\n\n#### macOS（Apple Silicon）\n```bash\n# 下载并运行安装脚本\ncurl -O https:\u002F\u002Fraw.githubusercontent.com\u002Fhgmzhn\u002Fmanga-translator-ui\u002Fmain\u002FmacOS_1_首次安装.sh\nchmod +x macOS_1_首次安装.sh\n.\u002FmacOS_1_首次安装.sh\n\n# 启动程序\n.\u002FmacOS_2_启动Qt界面.sh\n```\n\n### 📦 备选方式：下载打包版（仅限 Windows）\n1. 访问 [GitHub Releases](https:\u002F\u002Fgithub.com\u002Fhgmzhn\u002Fmanga-translator-ui\u002Freleases)\n2. 根据显卡选择：\n   - **CPU 版本**：通用\n   - **GPU 版本**：仅限 NVIDIA 显卡\n3. 解压后直接运行 `app.exe`\n\n### 🐳 Docker 方式（实验性）\n```bash\n# 使用 CPU 镜像（国内可尝试 ghcr.io 源）\ndocker run -d --name manga-translator -p 8000:8000 hgmzhn\u002Fmanga-translator:latest-cpu\n\n# 访问 Web UI\nhttp:\u002F\u002Flocalhost:8000\n```\n\n---\n\n## 基本使用\n\n### Qt 图形界面（推荐新手）\n1. 启动 `步骤2-启动Qt界面.bat`\n2. **配置 API Key**（如使用在线翻译）：\n   - 菜单栏 → 设置 → API 配置\n   - 填写 OpenAI \u002F Gemini 等密钥（[获取教程](doc\u002FAPI_CONFIG.md)）\n3. 设置输出目录\n4. 拖入漫画图片或文件夹\n5. 在“翻译器”下拉菜单中选择：\n   - **高质量翻译 OpenAI**（推荐）\n   - **高质量翻译 Gemini**\n6. 点击“开始翻译”\n\n> 💡 首次使用建议勾选“详细日志”便于调试\n\n### 命令行模式（适合批量处理）\n```bash\n# 激活虚拟环境（首次使用需先安装）\nconda activate manga-env\n\n# 单张图片翻译\npython -m manga_translator -i manga.jpg\n\n# 批量翻译文件夹\npython -m manga_translator local -i .\u002Finput\u002F -o .\u002Foutput\u002F\n\n# 查看所有参数\npython -m manga_translator --help\n```","一位独立汉化组成员小林正在为新一期日漫《星夜回廊》制作中文版，需处理包含密集对话和复杂排版的20页彩漫。\n\n### 没有 manga-translator-ui 时\n- 需手动用图像软件擦除原文，再逐字输入翻译，仅一页就耗时1小时以上  \n- OCR识别日文漫画文字准确率低，常漏检气泡内小字或竖排文本  \n- 翻译依赖多个平台切换（如DeepL+Google Translate），术语前后不一致  \n- 嵌字排版需反复调整字体、大小和位置，难以匹配原作风格  \n- 输出仅为PNG图片，无法保留图层供后续修改  \n\n### 使用 manga-translator-ui 后\n- 一键自动完成文本检测、OCR识别与翻译，20页批量处理仅需20分钟  \n- 内置MangaOCR与PaddleOCR-VL双引擎，精准识别竖排日文及手写字体  \n- 统一调用Gemini多模态API进行上下文感知翻译，自动积累“星灵”“回廊守卫”等专有名词  \n- 可视化编辑器直接拖拽调整文本框，实时预览中文字体嵌入效果，完美贴合原图气泡  \n- 导出PSD分层文件，原文、修复背景、译文独立成层，方便协作校对  \n\nmanga-translator-ui 将漫画汉化从繁琐的手工劳动转变为高效、一致且可协作的智能流程。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fhgmzhn_manga-translator-ui_aeeb1bc0.png","hgmzhn",null,"https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fhgmzhn_5fef93be.jpg","https:\u002F\u002Fgithub.com\u002Fhgmzhn",[80,84,88,92,96,100,104],{"name":81,"color":82,"percentage":83},"Python","#3572A5",90.3,{"name":85,"color":86,"percentage":87},"JavaScript","#f1e05a",6.1,{"name":89,"color":90,"percentage":91},"HTML","#e34c26",1.4,{"name":93,"color":94,"percentage":95},"Batchfile","#C1F12E",1,{"name":97,"color":98,"percentage":99},"CSS","#663399",0.9,{"name":101,"color":102,"percentage":103},"Shell","#89e051",0.3,{"name":105,"color":106,"percentage":107},"Dockerfile","#384d54",0,1405,59,"2026-04-05T20:27:22","GPL-3.0","Windows, Linux, macOS","非必需，但推荐使用 GPU 加速。NVIDIA：需支持 CUDA 12.x（驱动 >= 525.60.13）；AMD：仅实验性支持 RX 7000\u002F9000 系列（ROCm）；Apple Silicon（M1\u002FM2\u002FM3\u002FM4）支持 MPS 加速。","未说明",{"notes":116,"python":117,"dependencies":118},"安装脚本会自动配置 Miniconda 环境和依赖；首次运行需下载模型文件（约 2GB+）；AMD RX 5000\u002F6000 系列及 Intel Mac 仅支持 CPU 模式；打包版本不支持 AMD GPU；Docker 部署需挂载指定数据目录以持久化配置和结果。","3.12",[119,120,121,122,123,124,125,126,127,128],"torch","PaddleOCR","manga-ocr","transformers","accelerate","opencv-python","numpy","PyQt5","requests","huggingface-hub",[14,26],[131,132,133,134,135,136,137,138,139,140],"automated-translation","comic-translation","gemini","image-translator","machine-translation","ocr","openai","python","scanlation","manga-translato",4,"2026-03-27T02:49:30.150509","2026-04-06T07:26:09.487293",[145,150,155,160,165,170,175,179],{"id":146,"question_zh":147,"answer_zh":148,"source_url":149},386,"翻译过程中频繁出现“Task cancelled”错误怎么办？","该问题通常出现在使用 GPU 加速（如 48px OCR + mocr）处理特定漫画时。目前维护者未提供明确修复方案，但用户反馈移除出问题的漫画后可继续翻译。建议尝试降低并发数（如将 ai_ocr_concurrency 设为 1）或关闭 hybrid OCR 模式以排查是否与并发处理有关。","https:\u002F\u002Fgithub.com\u002Fhgmzhn\u002Fmanga-translator-ui\u002Fissues\u002F116",{"id":151,"question_zh":152,"answer_zh":153,"source_url":154},387,"翻译成人漫画时 AI 返回空文本，如何解决？","空返回可能是因内容审核被屏蔽或 API 截断。可尝试以下方法：1）更换翻译模型（如国产模型对敏感内容限制较少）；2）修改配置文件中的 system_prompt 提示词绕过审核；3）使用中转 API 减少限制。注意 OpenAI、Gemini 和 GLM 对成人内容普遍较严格。","https:\u002F\u002Fgithub.com\u002Fhgmzhn\u002Fmanga-translator-ui\u002Fissues\u002F98",{"id":156,"question_zh":157,"answer_zh":158,"source_url":159},388,"能否跳过 OCR 步骤，直接使用已有文本进行批量翻译？","目前不支持跳过 OCR 直接批量翻译。维护者认为 OCR 所消耗的 token 很少，且多模态模型能自行纠正 OCR 错误，因此暂无计划添加此功能。","https:\u002F\u002Fgithub.com\u002Fhgmzhn\u002Fmanga-translator-ui\u002Fissues\u002F49",{"id":161,"question_zh":162,"answer_zh":163,"source_url":164},389,"如何一键删除当前页面的蒙版？","该功能已在开发计划中（“下个版本发”），但维护者建议复杂封面处理仍推荐使用 Photoshop。未来可能会在编辑器中添加一键清除蒙版按钮。","https:\u002F\u002Fgithub.com\u002Fhgmzhn\u002Fmanga-translator-ui\u002Fissues\u002F100",{"id":166,"question_zh":167,"answer_zh":168,"source_url":169},390,"出现“TypeError: can only concatenate str (not \"list\") to str”错误如何解决？","该错误通常由路径权限问题或文件被占用引起。请确保输出目录有写入权限，且未被其他程序锁定。日志显示“[Errno 13] Permission denied”即表明权限不足。建议更换到简单路径（如 D:\\output）并以管理员身份运行程序。","https:\u002F\u002Fgithub.com\u002Fhgmzhn\u002Fmanga-translator-ui\u002Fissues\u002F62",{"id":171,"question_zh":172,"answer_zh":173,"source_url":174},391,"一键安装脚本无法正确安装依赖，启动时报缺少 PIL 等模块怎么办？","可能因系统已存在 Miniconda 导致脚本逻辑跳过依赖安装。建议：1）使用 cmd 或 PowerShell 手动运行安装脚本并查看完整错误日志；2）检查路径是否过长（如 E:\\Software\\...），尝试缩短路径；3）若环境已创建但缺依赖，可手动执行 pip install -r requirements.txt 补装。","https:\u002F\u002Fgithub.com\u002Fhgmzhn\u002Fmanga-translator-ui\u002Fissues\u002F117",{"id":176,"question_zh":177,"answer_zh":178,"source_url":154},392,"翻译时提示“Character '♥' not found in primary font”会影响结果吗？如何解决？","这类字体缺失警告通常不会中断翻译，但可能导致特殊符号显示异常。建议安装包含更全字符集的字体（如“霞鹜文楷”“Noto Sans CJK”），并在软件设置中将其设为主要字体。只要 fallback 字体可用，翻译仍可正常进行。",{"id":180,"question_zh":181,"answer_zh":182,"source_url":154},393,"使用 Kimi 2.5 模型时报错“温度固定值为1”如何处理？","Kimi 2.5 不支持 temperature 参数，但软件默认传递该参数导致报错。需修改配置文件或代码，移除对 Kimi 的 temperature 传参。目前官方尚未适配此模型的特殊参数要求。",[184,189,194,199,204,209,214,219,224,229,234,239,244,249,254,259,264,269,274,279],{"id":185,"version":186,"summary_zh":187,"released_at":188},109730,"v2.2.5","# v2.2.5 更新日志\n\n发布日期：2026-04-01\n\n## 🔧 优化\n\n- 精简 Qt 文本渲染主文件 `manga_translator.rendering.text_render`，移除文件内重复的断行、glyph 包装和兼容辅助逻辑，整体结构更清晰。\n- 收敛横排与竖排渲染链路，统一基础测量、描边生成和落图流程，减少同一套文本几何在多个分支里重复维护。\n- 同步整理 `auto_linebreak.py`、`text_render_eng.py` 和 `rendering.__init__.py` 的调用方式，降低后续文本渲染链路的维护成本。\n- 调整 `balloon_fill`（智能气泡）排版：断句按原始 `line` 计算，气泡 mask 只在超出时用于缩小。\n\n## 🐛 修复\n\n- 修复桌面编辑器里 `Ctrl + 滚轮` 调字号时概率性串样式的问题：不再把上一个文本框的临时框状态误写到下一个文本框。\n- 调整编辑器的框状态同步规则：改字号、字体、字距、行距、对齐、方向或译文后，用户看到的框会跟随最新渲染结果更新；拖动白框后，当前可见框会同步回编辑状态，避免后续样式修改出现框和字号不同步。\n- 收敛编辑器内部几何状态：将“用户自定义白框”和“样式计算后的渲染框”分开持久化，减少选区切换、批量样式修改和 targeted update 时的状态污染。\n- 调整导出后的内存回收策略：仅在进程内存超过 2GB 时才执行临时缓存清理、非当前图片缓存释放和 Windows 工作集回收，避免低内存场景下额外影响性能。\n\n## 📝 说明\n\n- 本版本主要是文本渲染链路整理与编辑器渲染状态修复，没有新增独立的功能入口。\n- 重点目标是降低 `text_render` 的复杂度和重复代码量，同时修正编辑器在字号\u002F框联动场景下的状态同步问题。\n- 智能气泡模式下，避免因气泡 mask 更宽而把原本 2 段文本自动拆成 3 段。","2026-04-01T15:08:49",{"id":190,"version":191,"summary_zh":192,"released_at":193},109731,"v2.2.4","# v2.2.4 更新日志\n\n发布日期：2026-03-30\n\n## 🐛 修复\n\n- 修复竖排符号额外偏移导致的渲染异常；句读点、括号和其他符号不再附加单独的经验性 `x\u002Fy` 修正，统一回到稳定的槽位定位规则。\n- 修复竖排符号槽位高度与实际行进高度混用的问题；符号现在保留完整竖排行进距离，只在格内使用紧凑槽位显示，不再出现整列间距被压缩的情况。\n- 修复竖排高度对齐依赖墨迹盒导致的列首吸顶问题；像 `一` 这类字高很小的字符位于列首时，不会再把整列错误吸到顶部。\n- 修复竖排 `y` 对齐过度依赖 raster 后非零像素边界的问题；当前改为按位图盒和逻辑槽位做稳定定位，减少不同字体或抗锯齿细节造成的上下抖动。\n- 保持竖排省略号特殊行进逻辑有效；`︙` \u002F `⋯` 仍会按内部点间距估算更紧凑的 advance，连续省略号连接效果不回退。\n- 修复字体 fallback 对空格的误判：半角空格与全角空格现在会正确保留自身 advance，不再因为 glyph 没有轮廓\u002Falpha 位图而被错误当成缺字并替换为占位字符。\n- 修复提示词编辑文本框右键菜单背景透明的问题；“复制 \u002F 粘贴”等标准菜单项现在会使用主题背景与高亮样式正常显示。\n\n## 🔧 优化\n\n- 优化竖排渲染流程：单列文本现在先生成一次布局计划，再直接按计划落图，不再在同一轮里重复做“列几何测量 + 再次逐字渲染”的双遍计算。\n- 优化竖排字符基础状态和描边位图复用方式；同一轮渲染内会复用字符基础几何与旋转后的描边结果，减少重复的 glyph 位图转换和 border 旋转。\n- 优化横排单行渲染流程；同一行不再重复创建两次 `QTextLayout`，直接复用已渲染 surface 返回的行 metrics。\n\n## 📝 说明\n\n- 本版本是 `v2.2.3` 之后的渲染修复补丁，重点收敛在 Qt 竖排文本几何、符号定位和渲染性能，不涉及新的功能入口。","2026-03-31T05:15:14",{"id":195,"version":196,"summary_zh":197,"released_at":198},109732,"v2.2.3","# v2.2.3 更新日志\n\n发布日期：2026-03-28\n\n## 🐛 修复\n\n- 修复 Qt UI 普通翻译提示词 `JSON` \u002F `YAML` 会被误判为 AI 上色提示词并打开错误编辑器的问题；现在只会在检测到上色专用字段时进入上色提示词编辑器。\n- 修复翻译提示词模板编辑器无法编辑 `system_prompt` 的问题；模板模式现在支持读取、展示、添加、编辑和保存 `system_prompt`。\n- 修复提示词编辑器保存后外层预览不同步的问题；保存成功后会直接关闭编辑器并刷新外侧预览。\n- 修复提示词预览在术语表为空时显示空白标签页的问题；现在会显示明确的空状态提示。\n- 修复翻译提示词保存时空 glossary 分类会被整体塌缩成 `{}` 的问题；空分类现在会保留为空列表，避免结构被清空。\n- 修复“导入翻译并渲染”在 TXT 成功导回 JSON 后仍沿用 `skip_font_scaling=true` 导致跳过文字缩放的问题；现在只要本次走了导入流程，就会回写 `skip_font_scaling=false`，后续渲染会重新执行文字缩放。\n- 修复 OpenAI \u002F Gemini（含 HQ）流式翻译日志重复刷屏的问题：预览阶段改为只消费新增 `delta_text`，通过增量缓冲区和扫描游标提取新闭合的 JSON 对象，不再每个分片重扫整段累计文本。\n- 修复流式输出被 `\u003Cthink>` \u002F `\u003Canswer>` 包裹内容干扰解析的问题：流式预览和最终结果解析现在统一清理思考区标签，避免把思考草稿误当成正式翻译结果。\n- 修复流式预览停留在中间态的问题：当预览结果与最终翻译不一致时，结束阶段会补打一份最终结果快照，确保日志落在最终值。\n- 修复文本渲染后端长期依赖 FreeType \u002F HarfBuzz 的问题；`manga_translator.rendering.text_render` 现已切换为 Qt 文本渲染链路，横排整行排版与 shaping 改由 `QTextLayout` \u002F `QPainterPath` 完成。\n- 修复编辑器文本预览只能走 `QPixmap` 主线程路径的问题；编辑器渲染后端现在先生成离屏 `QImage`，再按需转换为 `QPixmap`，便于在非 UI 线程执行离屏渲染。\n- 修复横排复杂脚本（如 Thai）宽度测量依赖旧逐字符逻辑导致的不稳定问题；横排宽度计算现统一改为 Qt layout 宽度，不再使用语言分支特判。\n- 修复竖排标点容易贴紧上一字、下方留白过大的问题；竖排字符现在按统一槽位高度和实际墨迹盒重新定位，句读点、括号、旋转半角字符的几何偏移规则也已同步调整。\n- 修复竖排中的 `\u003CH>` 纯符号块仍保留全角 `！？` 的问题；纯 `!?！？` 横排块现在会自动规范化为半角 `!?` 后再渲染。\n\n## 🔧 优化\n\n- 补齐提示词编辑器相关多语言文案，包括 `System Prompt`、`No glossary entries` 等字段，中文界面不再残留英文。\n- `load_text` 相关流程说明更清晰：TXT 导入仅在实际找到匹配 TXT 时才会执行，普通编辑器导出仍然走临时 JSON 渲染，不会额外导入 TXT。\n- 优化 Qt UI 的“提示词管理 \u002F 字体管理”列表状态展示：当前正在使用的提示词和字体现在会显示明显的选中标记，便于快速识别当前生效项。\n- 重构 Qt 文本渲染实现，移除旧 `Glyph` 兼容壳与多段重复 helper，渲染主文件体积和复杂度均明显下降，同时保留原有换行入口与 `text_render_eng.py` 调用方式不变。\n- 优化竖排布局几何：列宽现在会同时考虑普通竖排字符和 `\u003CH>` 横排块的实际宽度；每列高度按最终渲染几何统一测量，再按顶部 \u002F 底部 \u002F 居中模式对齐，整体竖排块的列布局更稳定。\n- 优化竖排字符槽位规则：小括号、句读点等压缩为更紧凑的槽位高度，`、。，` 等点类字符会额外向右上方向修正，旋转半角字符继续按墨迹盒做居中校正。\n- 优化依赖结构：移除 `freetype-py` 与 `uharfbuzz` 依赖，Qt 文本渲染链路不再需要额外的 FreeType \u002F HarfBuzz Python 绑定。\n\n## 📝 文档\n  \n- 移除独立 `Vertex` \u002F `Vertex OCR` \u002F `Vertex Colorizer` \u002F `Vertex Renderer` 入口的相关说明，统一改为通过 `Gemini` 配置使用 Google Cloud \u002F Vertex 相关 API Key；`Base URL` 保持默认官方地址 `https:\u002F\u002Fgenerativelanguage.googleapis.com` 即可，无需修改。\n\n## 📝 说明\n\n- 本版本除桌面端提示词编辑器和“导入翻译并渲染”流程修复外，也包含一次较大的 Qt 文本渲染链路重构，重点覆盖离屏渲染、竖排排版几何和旧 FreeType 依赖清理。","2026-03-29T19:45:26",{"id":200,"version":201,"summary_zh":202,"released_at":203},109733,"v2.2.1","# v2.2.1 更新日志\n\n发布日期：2026-03-21\n\n## ✨ 新功能\n\n- **\"气泡内居中\"设置重命名并重构**：原\"垂直居中\"更名为\"气泡内居中\"，更准确反映其用途。重构后该设置仅在文字区域确实位于检测到的气泡内时生效；气泡外的文字（旁白框、音效等）不受影响，保持顶部对齐。渲染结果同步写入 `white_frame_rect_local`，确保编辑器打开时白框位置与最终渲染一致。\n\n## 🐛 修复\n\n- 修复“仅翻译（JSON）”和 `load_text` 回写 JSON 时会丢失 `skip_font_scaling` 标志的问题。\n- 修复“仅翻译（JSON）”在关闭“覆盖已存在文件”时跳过逻辑不一致的问题：没有对应 `_original.txt` 时现在会直接跳过。\n- 修复 Qt UI 翻译完成后的“是否在编辑器中打开结果”提示框触发范围过宽的问题：现在只在“正常翻译”“导入翻译并渲染”“替换翻译”三种模式下显示。\n\n## 🔧 优化\n\n- 统一 `skip_font_scaling` 的解析与保留逻辑。\n- 统一 CLI 覆盖检测入口，避免普通模式和子进程模式行为不一致。\n- 优化 OpenAI 兼容接口的 API Key 校验逻辑：非 OpenAI 官方地址（如 Ollama、本地\u002F局域网部署、自定义域名反代）现在支持留空 API Key，不再在 Qt UI 启动前被强制拦截。\n\n## 📝 说明\n\n- “仅翻译（JSON）”删除 `_original.txt` 的时机仍然是 JSON 保存成功之后。\n- 导出原文 \u002F 导出翻译流程仍会写入 `skip_font_scaling=false`。\n- 如果使用 OpenAI 兼容接口且地址不是 `https:\u002F\u002Fapi.openai.com`，可仅填写 `OPENAI_API_BASE` 与模型名，`OPENAI_API_KEY` 允许留空；是否真正需要密钥由对应接口自身决定。","2026-03-21T21:38:40",{"id":205,"version":206,"summary_zh":207,"released_at":208},109734,"v2.2.0","# v2.2.0 更新日志\n\n发布日期：2026-03-20\n\n## ✨ 新功能\n\n- 新增固定 YOLO 框导入功能：开启后会从 `manga_translator_work\u002Fyolo_labels\u002F\u003C图片同名>.txt` 读取标注框。\n- 新增“仅翻译（JSON）”模式：直接从已有 JSON 读取原文进行翻译，并把译文回写到 JSON。\n\n## 🐛 修复\n\n- 修复双栏编辑\u002F原图对比模式下，顶部或边缘文本框在禁用换行后文字超出原图范围时，左右两侧画布无法继续对齐和同步移动的问题。\n- 修复提示词编辑器部分 UI 显示异常。\n- 修复提示词编辑器中 glossary\u002F术语表词条无法上下移动的问题。\n- 修复 `render.font_size` 在 `smart_scaling`、`strict`、`balloon_fill` 三种排版模式下未正确作为“固定字体大小”生效的问题；现在会在统一字号出口覆盖布局计算结果。\n- 统一 `render.font_size`、`font_size_offset`、`font_scale_ratio`、`font_size_minimum`、`max_font_size` 的字号收口逻辑，三种排版模式行为保持一致，`skip_font_scaling` 分支不受影响。\n\n## 🔧 优化\n\n- 支持在人物词条详情中直接修改分类。\n\n## 📝 说明\n\n- “仅翻译（JSON）”模式需要提前存在 JSON 数据。\n- “仅翻译（JSON）”模式完成后会自动删除对应的 `_original.txt`。","2026-03-20T18:10:59",{"id":210,"version":211,"summary_zh":212,"released_at":213},109735,"v2.1.9","# v2.1.9 更新日志\n\n发布日期：2026-03-18\n\n## ✨ 新功能\n\n- 新增翻译设置项 `keep_lang`（保留源语言）：在文本框合并后、翻译前按源语言过滤待翻译区域；适合英文版日漫只保留英文文本，减少日文标题、拟声词等被误翻译或误擦除的情况。\n\n## 🐛 修复\n\n- 修复了泰语渲染异常，添加了对泰语渲染的支持。\n- 修复部分带 `ICC` 色彩配置的 JPG 图片在翻译、修复或编辑器导出后出现偏色的问题：现在会在统一保存链路中尽量保留原图的色彩配置与 `DPI` 信息，减少导出结果与原图颜色不一致的情况。\n- 修复“竖排内横排”关闭后仍会在竖排无断句布局中自动添加横排标记的问题：现在关闭该选项时，不会再额外写入 `\u003CH>` 标记。\n- 修复 Qt UI 中“导入翻译并渲染”预处理阶段忽略字符串图片路径的问题：`load_text` 预导入 TXT 到 JSON 时现在同时支持 `str` \u002F `os.PathLike` 输入，不再因为输入不是带 `.name` 的图片对象而跳过 `manga_translator_work\u002Foriginals\u002F` 或 `translations\u002F` 下的 TXT 文件。\n\n## 📝 文档与说明\n\n- 新增“保留源语言”文档说明：补充 Qt \u002F Web 配置项 `keep_lang` 的用途、推荐用法和中日共用汉字的保留规则。","2026-03-18T18:33:55",{"id":215,"version":216,"summary_zh":217,"released_at":218},109736,"v2.1.8","# v2.1.8 更新日志\n\n发布日期：2026-03-17\n\n## ✨ 新功能\n\n- 新增历史下载短时 `ticket URL` 机制：用户在已登录状态下可先申请临时下载链接，再交给浏览器或 `IDM` 下载，下载过程不再直接暴露会话 token。\n- 新增历史记录下载票据接口：支持单文件下载、单任务打包下载和批量任务打包下载三种场景，兼顾 Web 端使用体验和下载器兼容性。\n\n## 🐛 修复\n\n- 修复历史下载依赖 `?token=` 查询参数的问题：旧方式会把会话 token 暴露到浏览器历史、代理日志和 `Referer`，现已改为短时 ticket 下载。\n- 修复 `\u002Ftranslate\u002Fwith-form\u002Fjson`、`\u002Ftranslate\u002Fwith-form\u002Fbytes`、`\u002Ftranslate\u002Fwith-form\u002Fimage` 非流式接口可绕过完整鉴权流程的问题：现在会统一执行登录校验、权限校验和并发控制。\n- 修复 `\u002Fenv`、`\u002Fprompts` 和历史文件下载接口的权限与路径校验不足问题，避免匿名访问、越权读取和非法路径访问。\n- 修复 `ignore_errors` 在本地翻译任务中的失败处理不一致问题：顺序批处理、并发流水线、高质量批处理与替换翻译模式现在都会在单文件的上色、超分、检测、OCR、文本合并、翻译、蒙版生成、修复、渲染或保存阶段出错时直接标记该文件失败并跳过后续处理，不再回退输出原文或原图，同时会把失败状态记录到后端结果中。\n- 修复 Qt UI 任务进度缺少失败统计的问题：进度栏现在会单独显示运行中失败的文件数量，并与预检查阶段“已跳过的旧文件”分开统计；文件因失败被跳过时，剩余时间估算仍会按已完成文件数继续推进，避免 ETA 卡住。\n- 修复 Qt UI API 连接测试错误提示过于粗糙的问题：现在会区分网络连接 \u002F Host 解析错误与 `503`、模型不可用、渠道不可用等站点或中转异常；提示文案会同时引导检查模型、API 地址和 API 密钥，并在配置无误时提示可能是 API 站点、服务端或渠道暂时异常。\n\n## ⚡ 优化\n\n- 优化历史下载链路：认证统一通过 `X-Session-Token` 完成，实际文件下载改用短时 ticket，兼顾安全性与浏览器 \u002F `IDM` 兼容性。\n- 优化账户接口防护：为 `\u002Fauth\u002Flogin`、`\u002Fauth\u002Fregister`、`\u002Fuser\u002Flogin` 增加限速控制，降低暴力尝试和滥用风险。\n- 优化默认服务端安全配置：默认关闭开放注册，减少服务首次部署后直接暴露公网时的攻击面。\n- 更新 `PaddleOCR-VL` OCR 模型到官方 `PaddleOCR-VL-1.5`：同步调整本地检测目录、下载包命名与文档链接，并兼容当前环境下的模型加载与推理。\n\n## 📝 文档与说明\n\n- 完善 OCR 设置说明与相关文档：补全 `32px`、`48px`、`48px_ctc`、`mocr`、`paddleocr`、`paddleocr_korean`、`paddleocr_latin`、`paddleocr_thai`、`paddleocr_vl`、`openai_ocr`、`gemini_ocr` 的用途简介，明确英文推荐 `paddleocr_latin`，并补充 `PaddleOCR-VL` 语言提示 \u002F 自定义提示词的使用建议。\n- 新增 AI OCR 使用提醒：`openai_ocr` \u002F `gemini_ocr` 通常效果最好，但和本地 OCR 的差距往往不大；由于按文本框逐次请求，会显著消耗请求次数，因此在按次收费的站点上不建议使用。\n\n## 兼容性说明\n\n- 旧的 `?token=` 历史下载链接不再支持。","2026-03-17T16:57:20",{"id":220,"version":221,"summary_zh":222,"released_at":223},109737,"v2.1.7","# v2.1.7 更新日志\n\n发布日期：2026-03-16\n\n## 🐛 修复\n\n- 修复 Qt 编辑器在导出图片后重新进入编辑时，文字下方偶发重新露出原文的问题：导出流程现在不会在修复预览尚未生成时把原图误写回 `manga_translator_work\u002Finpainted\u002F`，避免下次加载时错误回退到带原文的底图。\n- 修复 Qt 编辑器导出后修复图与工作目录状态不同步的问题：后端导出完成后会将实际生成的修复图回写到工作目录，确保再次进入编辑器时优先加载正确的修复图。\n- 修复 Qt 编辑器修复图延后加载\u002F补生成时的显示切换不稳定问题：当已有修复图在后台稍后加载或重新生成时，如果用户未手动调整原图透明度，编辑器会自动切回修复底图，减少译文下方透出原文的情况。\n- 修复 Qt 编辑器在导出与切换图片交错时可能产生的状态污染：导出成功后的快照、修复图缓存与运行时状态更新现在会校验当前活动源图，避免旧图片的导出结果误写回新会话。\n\n## ⚡ 优化\n\n- 优化 Qt 编辑器导出稳定性：导出流程统一基于当前图片、区域、蒙版和修复图快照执行，减少异步修复、切图和后台导出线程交错时的竞态影响。\n- 优化严格边界（`layout_mode=strict`）在无 `[BR]` 文本下的排版行为：现在会接入智能断句求解逻辑，按文本框尺寸自动插入更合理的换行；同时保留“单区域不自动换行”的既有特判。\n- 清理已废弃的排版模式：移除 `default`、`fixed_font`、`disable_all` 的配置入口、下拉选项与多语言文案，`render.layout_mode` 现在仅保留 `smart_scaling`、`strict`、`balloon_fill` 三种模式；旧值不再静默兼容，会被明确判为非法配置。","2026-03-16T16:41:39",{"id":225,"version":226,"summary_zh":227,"released_at":228},109738,"v2.1.6","# v2.1.6 更新日志\n\n发布日期：2026-03-14\n\n## ✨ 新增\n\n- 新增 OpenAI Colorizer \u002F OpenAI Renderer 的图像接口按 `API Base URL` 自动适配能力：\n  - 命中 **硅基流动** `https:\u002F\u002Fapi.siliconflow.cn\u002Fv1` 时，`\u002Fimages\u002Fgenerations` 会自动改用 `image` \u002F `image2` \u002F `image3` 风格请求体，兼容 `Qwen\u002FQwen-Image-Edit-2509`、`Kwai-Kolors\u002FKolors` 等模型。\n  - 命中 **阿里云百炼原生多模态接口** `https:\u002F\u002Fdashscope.aliyuncs.com\u002Fapi\u002Fv1` 或 `https:\u002F\u002Fdashscope-intl.aliyuncs.com\u002Fapi\u002Fv1` 时，会自动改用 `services\u002Faigc\u002Fmultimodal-generation\u002Fgeneration`，并按 `input.messages + parameters` 的百炼原生格式发送图像生成 \u002F 图像编辑请求。\n  - 命中 **官方 OpenAI** `https:\u002F\u002Fapi.openai.com\u002Fv1` 时，会按默认 OpenAI 图像接口处理，继续使用 `\u002Fimages\u002Fedits`、`\u002Fimages\u002Fgenerations`、`\u002Fchat\u002Fcompletions` 的兼容回退流程；AI 上色多图提示词的 `Image 1`、`Image 2`、`Image 3` 编号角色说明也同样生效。\n  - 命中 **火山引擎 \u002F 其他 OpenAI 兼容图像接口** 时，保留原有 OpenAI 兼容请求格式。\n  - 当 `API Base URL` 未命中已知后端时，`\u002Fimages\u002Fgenerations` 现在会按兼容顺序自动尝试多种请求体格式，减少代理站 \u002F 聚合站因字段差异导致的 400 报错。\n- 新增 AI 上色多图提示词的按图号角色说明：请求中的附带图片现在会明确写成 `Image 1`、`Image 2`、`Image 3` 等角色说明，区分目标页、提示词参考图、历史已上色页，避免使用“后面的图”这类笼统描述。\n- 新增 AI 上色 \u002F AI 渲染对自定义 API 参数的后端适配：\n  - 硅基流动图像接口会原样透传 `cfg`、`num_inference_steps`、`image_size`、`guidance_scale` 等参数。\n  - 百炼原生图像接口会自动把自定义参数映射到 `parameters` 字段。\n\n## 🐛 修复\n\n- 修复非并发批量模式下进度条有时长时间不增长的问题：顺序批处理与高质量批处理现在都会在单张图片真正完成后推进整体进度，覆盖普通翻译、导入翻译并渲染、导出原文、导出翻译、仅上色、仅超分、仅修复等批量流程。\n- 修复重新打开 JSON 后文本位置不在上一次保存位置的问题：编辑器加载 JSON 时始终从 `lines` 的外接矩形重算 `center`，避免旧版白框中心污染或超分缩放遗漏导致的位置偏移。\n- 修复 Qt 编辑器切换选中不同文本框时误触发白框边缘编辑的问题：未选中的文本框首次点击现在仅用于切换选中，不再直接命中白框手柄并进入 `white_edge` \u002F `white_move` 编辑状态。\n- 修复 Qt 编辑器移动白框或白框尺寸未变化时仍可能重算字号的问题：白框提交时仅在尺寸实际变化时才执行 `框 -> 字号` 反算，避免来回切换或纯移动操作导致字号被意外刷新。\n- 修复竖排线段符号显示方向错误的问题：为 `─ \u002F ━ \u002F ═` 等横线字符补充竖排字形映射，避免在竖排文本中仍按横线样式显示。\n- 修复 YOLO OBB 辅助检测器长图统一切割路径中的未初始化变量问题：补上 patch 元信息初始化，避免长图检测时触发 `cannot access local variable 'patch_shape'` 并导致辅助检测回退失败。\n- 修复 MangaLens 气泡检测器长图切割与主检测器重排计划不一致的问题：长图分片现在复用共享 `rearrange plan` 与 patch span 计算，统一纵横转置、切片区间和回映射逻辑，减少边界偏移与后续维护分叉。\n- 修复极端长宽比图片的修复模块分片尾部可能未被处理的问题：`inpainting` 分片区间改为向上取整并强制最后一块覆盖到图像末端，避免最后几行或几列漏修复。\n\n## ⚡ 优化\n\n- 优化模型辅助合并中 `other` 辅助框的包裹判定：从必须完全包裹改为覆盖率大于 `90%` 即可参与合并，减少检测框边缘轻微偏差导致的漏合并。","2026-03-15T08:42:05",{"id":230,"version":231,"summary_zh":232,"released_at":233},109739,"v2.1.5","# v2.1.5 更新日志\n\n发布日期：2026-03-14\n\n## ✨ 新增\n\n- 提示词支持 YAML 格式（优先于 JSON）\n- 新增统一提示词加载模块 `prompt_loader.py`\n- Web 端支持上传\u002F管理 YAML 提示词文件\n- 新增提示词编辑器：支持在界面中直接编辑和管理提示词文件。\n- 编辑器新增原图 \u002F 翻译图对比功能，便于对照查看翻译与渲染效果。\n- 编辑器新增取色功能，便于直接从画面中提取和应用颜色。\n- 新增字间距控制功能，支持调整排版时的文字间距。\n- 首页新增字体预览功能，便于快速查看当前字体效果。\n- 新增禁用流式传输开关，可按需关闭 OpenAI \u002F Gemini 的流式输出。\n- 新增字间距倍率 `letter_spacing`：支持全局设置、区域设置和编辑器区域属性；默认值 `1.0` 与旧行为一致，并统一作用于排版计算、文本框尺寸计算和最终渲染。\n- 新增禁用 ONNX GPU 加速开关 `disable_onnx_gpu`：可在 ONNX Runtime 的 GPU 兼容性不佳时强制切换到 `CPUExecutionProvider`。\n- 新增 API OCR：`openai_ocr` 与 `gemini_ocr`，支持逐框调用多模态接口识别文本，识别完成后继续使用本地 `48px` 模型提取文字颜色。\n- 新增 API 上色器：`openai_colorizer` 与 `gemini_colorizer`，支持整页调用 OpenAI \u002F Gemini 图像接口进行漫画上色。\n- 新增 API 渲染器：`openai_renderer` 与 `gemini_renderer`，支持整页调用 OpenAI \u002F Gemini 图像接口进行漫画渲染；会自动把清图画上编号框，并将对应编号的翻译文本一起组合进提示词，拟声词 \u002F 音效也会一并发送。\n- 新增独立的 AI OCR \u002F AI 上色 \u002F AI 渲染固定提示词文件：\n  - `dict\u002Fai_ocr_prompt.yaml`\n  - `dict\u002Fai_colorizer_prompt.yaml`\n  - `dict\u002Fai_renderer_prompt.yaml`\n- 新增 AI OCR \u002F AI 上色 \u002F AI 渲染并发配置项，支持分别限制 API 请求并发数。\n- 新增翻译设置项 `remove_trailing_period`（自动移除末尾句号）：当原文结尾没有标点时，可自动移除译文末尾额外补上的 `。` \u002F `.` \u002F `．`；作用于主翻译流程，包括普通批量、高质量批量和并发流水线。\n\n## 🐛 修复\n\n- 修复最小字体设置不生效的问题：最小字体限制现在会正确参与排版与渲染计算。\n- 修复强制设置为竖排时渲染框计算异常的问题：系统计算渲染框时不再忽略已设置的竖排模式，不会再错误按自动模式参与计算。\n- 修复行间距设置不生效的问题：行间距参数现在会正确参与排版与渲染。\n- 修复 `不跳过目标语言文本` 在并发模式下不生效的问题：开启 `no_text_lang_skip` 后，并发流水线不再把“译文与原文相同”的目标语言文本错误当成已跳过并过滤掉，普通批量 \u002F 高质量批量 \u002F 并发流水线的行为现已统一。\n- 修复翻译错误提示框中长原始错误信息显示不全的问题：原始错误现在会自动换行，支持完整查看与复制，并移除了冗余分隔线。\n- 修复网络错误识别不完整的问题：“测试连接”和翻译错误提示现在都能识别连接错误、超时以及 Host \u002F DNS 解析失败，并提示检查网络及尝试开启 TUN（虚拟网卡模式）。\n- 修复编辑器与工作目录协作逻辑：\n  - 上色\u002F超分后的编辑器底图现在统一保存到 `manga_translator_work\u002Feditor_base\u002F`\n  - 修复图继续保存到 `manga_translator_work\u002Finpainted\u002F`，`保存 JSON` 会直接更新这张图，不再额外调用后端修复\n  - `导入翻译并渲染` 检测到已有修复图时会直接复用，不再重复跑修复\n  - `导出图片` 不再重复执行上色\u002F超分，优先直接使用编辑器当前修复图进行渲染\n  - PSD 导出现在会优先使用 `editor_base` 作为原图层底图，并优先使用当前会话修复图作为修复图层\n\n## 🔧 优化\n\n- 更新了新的 UI，统一了桌面端主界面、设置页和编辑器的整体风格。\n- 重构 Qt UI 主题配置：浅色、深色、灰色、海洋、森林、落日、玫瑰 7 个主题现在都使用各自独立的底色与强调色组合，不再只是复用同一套底色换强调色；同时统一了主题注册表与主题 token 来源，后续维护和扩展新主题更简单。\n- 更新 YOLO OBB 辅助检测器为原生 PyTorch 版本：模型切换为 `ysgyolo_yolo26_2.0.pt`，直接加载 checkpoint 推理，并统一设备选择与模型加载链路。\n- 更新 MangaLens 气泡检测模型为 PyTorch 版本：`mangalens_detector.py` 现直接加载 `mangalens.pt` checkpoint 推理，并兼容旧 `best.pt` 文件自动迁移。\n- `_build_system_prompt` 和 `_flatten_prompt_data` 统一到基类，消除约 320 行重复代码\n- 优化 HQ 系统提示词结构：基础系统提示与输出格式要求拆分，自动术语提取按开关追加术语提取规则，并统一在末尾输出格式要求。\n- 优化历史上下文附加逻辑：上下文改为以消息形式注入对话，Gemini 使用 `systemInstruction` 承载系统提示，高质量翻译的历史上下文不再携带图片。\n- 调整 OpenAI \u002F Gemini 发送提示词结构：历史上下文改为构造成过去 `user` \u002F `assistant` 多轮消息，使用与当前请求一致的文本输入和 JSON 输出结构，并统一采用单行 JSON 以减少 token 消耗。\n- 优化并发模式调度逻辑：避免 OCR、检测和渲染任务持续无限制触发，降低无效重复处理。\n- 优化主翻译流程的图片加载策略：按需加载图片，减少不必要的内存与处理开销。\n- 优化横排排版间距调节曲线：调整间距变化逻辑，使横排排版的调节效果更平滑、可控。\n- 优化 Gemini 空响应诊断：日志会输出 `finish_reason`、`block_reason` 和 `safetyRatings`，并结合诊断结果调整重试策略。\n- 清理 `common.py` 死代码，从 2890 行精简至约 2436 行\n- 优化 Qt 设置页提示词编辑入口：AI OCR \u002F AI 上色 \u002F AI 渲染统一改为固定文件的简化编辑器，不再显示路径输入框，也不再提供另存为。\n- 优化 API 预设与 `.env` 管理：预设现在会统一纳入 OCR \u002F 上色 \u002F 渲染三组 API 环境变量，切换预设时可一起保存和加载。\n- 优化服务端配置输出：Web \u002F 服务器端不再暴露 `openai_ocr`、`gemini_ocr`、`openai_colorizer`、`gemini_colorizer`、`openai_renderer`、`gemini_renderer` 以及对应 AI 并发参数。\n\n## 🗑️ 移除\n\n- 旧版 JSON 系统提示词（已有 YAML 替代）","2026-03-14T08:03:00",{"id":235,"version":236,"summary_zh":237,"released_at":238},109740,"v2.1.4","# v2.1.4 更新日志\n\n发布日期：2026-02-28\n\n## ✨ 新增\n\n- 新增“气泡裁剪单图调试图”输出（`mask_bubble_clip_debug.png`）：\n  - 触发条件：`verbose=true` 且开启 `ocr.limit_mask_dilation_to_bubble_mask`。\n  - 统一单图叠加显示：蓝色=气泡蒙版，绿色=最终蒙版，红色=被筛掉区域，黄色=保护回填区域。\n- 新增 line 保护机制（最小外接矩形外扩 20px）：\n  - 以每条 `line` 的最小外接矩形为基础向外扩张 20 像素，作为掩码保护区。\n  - 保护策略仅用于防误删，不改变裁剪主流程。\n\n## 🐛 修复\n\n- 修复“膨胀不超过气泡蒙版”在部分页面中过度裁剪的问题：文本附近原有掩码在与气泡约束冲突时可能被误删。\n- 修复调试图不易区分“最终保留”与“被筛掉”区域的问题，提升排查准确性。\n- 修复竖排内横排块旋转规则不一致问题：字母\u002F数字 `\u003CH>` 块统一按 90° 旋转，不再受“长度>=3”条件影响；符号块保持原先横排行为不变。\n- 修复 `\u003CH>` 与 BR 联动中的历史残留逻辑：移除 `__ROT90__ \u002F force_rotate` 注入与依赖分支，避免出现“字母数字始终被旧路径强制旋转”或行为不一致。\n- 修复模型辅助合并中“一个框被多个 `other` 包裹”时的连通粘连：同一非 `other` 框仅保留单一 `other` 归属（按等比例缩放包裹稳定性优先），并禁止 `other` 与 `other` 互连，避免出现三框同组的误合并。\n- 修复“添加文件夹”扫描压缩包时解压目录平铺到输出根目录的问题：现在按文件夹相对结构嵌套输出为 `\u003C输出目录>\u002F\u003C所选文件夹名>\u002F\u003C相对路径>\u002F\u003C压缩包名>\u002Foriginal_images`。\n- 修复压缩包解压图回写路径不一致问题：翻译结果优先回写到解压目录上一级（压缩包目录），不再错误回落到输出根目录。\n- 修复同名压缩包目录冲突问题（不同路径但同名文件）：基于 `.archive_source.txt` 与 `.extract_meta.json` 识别来源，在“覆盖关闭”时跳过，在“覆盖开启”时清空同名目录后重解压。\n- 修复编辑器误将 PDF\u002F压缩包当图片加载导致 `cannot identify image file` 的问题：文件选择、文件列表导入与加载链路统一限制为图片格式。\n\n## 🔧 优化\n\n- 优化保护逻辑语义：仅回填“裁剪前已存在且被本次裁剪去掉”的像素，不二次裁剪、不额外新增蒙版。\n- 优化日志信息：`Bubble constrained dilation` 新增 `protected_pixels` 统计，便于验证保护回填是否生效。\n- 优化解压目录命名：`原图目录` 统一为英文目录名 `original_images`。","2026-02-28T17:33:44",{"id":240,"version":241,"summary_zh":242,"released_at":243},109741,"v2.1.3","# v2.1.3 更新日志\n\n发布日期：2026-02-27\n\n## 🐛 修复\n\n- 修复智能缩放\u002F智能气泡模式下，竖排 `has_br=False` 场景断句失效：竖排断句预处理顺序调整为先规范化 `[BR]\u002F\u003Cbr>\u002F【BR】` 再注入 `\u003CH>` 标签，避免换行标记被标签化后失效。\n- 修复模型辅助合并在 `other` 包裹场景下的漏合并：特殊合并阶段允许 `other` 作为包裹关系桥接参与分组；`other` 仍仅作辅助，不参与最终文本块几何合并结果。\n- 回退 inpainting 画布级额外 `padding + 裁回` 逻辑，仅保留原有 ONNX\u002F模型内部对齐路径，避免引入额外尺寸处理分支。\n- Desktop UI：翻译任务完成后增加 `torch.cuda.empty_cache()` 调用，并将该提示日志级别调整为 `DEBUG`，减少 INFO 日志噪音。\n- 修复 `load_text` 导入 JSON 蒙版时的尺寸错配：进入 inpainting 前统一将 `mask_raw\u002Fmask` 对齐到当前 `img_rgb` 尺寸并规整为 `uint8`，避免 ONNX `Mul` 广播维度错误（如 `1408x2758` 不一致）。\n- 修复 Sakura 翻译器异常路径的 `str + list` 报错（`can only concatenate str (not \"list\") to str`）：统一响应类型并改进失败兜底，避免二次报错覆盖真实错误。\n- 移除 `SAKURA_VERSION` UI\u002F配置项与后端版本分支：Sakura 逻辑统一为单路径，默认启用术语表能力（有词典则加载，无词典自动降级）。\n- 修复竖排内横排与换行标记联动：`[BR]\u002F\u003Cbr>\u002F【BR】` 不再被错误当作横排内容；支持 `\u003CH>abc[BR]def\u003C\u002FH>` 在渲染阶段拆为两行并分别旋转；`符号[BR]符号`（如 `!?[BR]!?`、`!!![BR]!!`）不打横排标记。\n- 编辑器“横排⇄”按钮交互优化：无选中时在光标处插入单个 `⇄`，有选中时保持两侧包裹 `⇄...⇄`。","2026-02-27T19:14:04",{"id":245,"version":246,"summary_zh":247,"released_at":248},109742,"v2.1.2","# v2.1.2 更新日志\n\n发布日期：2026-02-26\n\n## ✨ 新增\n\n- 新增 PaddleOCR-VL OCR 提示词配置能力（语言下拉 + 自定义提示词）：\n  - 支持 `ocr.ocr_vl_language_hint` 语言下拉（常用语言英文全称），自动生成 `OCR: Extract all \u003CLanguage> text.` 风格提示词。\n  - 支持 `ocr.ocr_vl_custom_prompt` 自定义提示词输入；填写后优先使用自定义提示词。\n  - Web 首页参数面板新增以上两项并支持多语言文案显示。\n  - 管理端权限编辑器（参数权限）新增以上两项，可按用户组进行显示\u002F禁用\u002F默认值控制。\n  - Qt UI 首页 OCR 参数区新增以上两项；优化长语言名称下拉宽度并补充自定义提示词输入框（含占位示例）。\n- 新增“智能气泡缩字”能力（`layout_mode=balloon_fill`）：\n  - 使用 MangaLens 全图完整蒙版（含分割掩码）驱动排版，不再按区域重复检测。\n  - 原始 OCR `line` 完全被气泡蒙版包裹时：\n    - `has_br`：直接二分法锁定可放入蒙版的最大字号。\n    - `no_br`：先用 `solve_no_br_layout` 断句，再二分法锁字。\n  - 未被完整包裹时：自动回退到 `smart_scaling` 分支，避免错误缩字。\n  - `dst_points` 随最终字号实时重算，保持中心点与旋转角度语义不变。\n- 新增统一气泡蒙版能力：将模型检测结果统一转换为可复用的气泡蒙版，同步服务 OCR 过滤、修复范围扩展和排版，保证三处判断口径一致。\n- 新增 MangaLens 检测结果缓存：`detect_bubbles_with_mangalens(...)` 增加缓存，减少 OCR 过滤\u002F修复范围扩展\u002F渲染阶段的重复推理开销。\n- 新增 OCR 模型气泡“像素级重叠过滤”策略：由框重叠阈值升级为文本框与模型蒙版像素重叠阈值，过滤结果更稳定。\n- 编辑器 OCR 新增 YOLO OBB 辅助拆分：裁剪大框区域后发送给 YOLO OBB 检测文本行，`_split_polygon_by_yolo()` 过滤重叠文本行（overlap >= 30%），排除 `other` 标签。\n- 编辑器 OCR 新增方向感知排序：`_sort_quads_by_direction()` 按多数投票判断方向，水平按 y 上到下、竖直按 -(x+w) 右到左排序后再拼接文本。\n- 新增“膨胀不超过气泡蒙版”：\n  - 限制蒙版膨胀范围不超出气泡区域，防止气泡边框在修复时被误擦除。\n  - 配置项：`ocr.limit_mask_dilation_to_bubble_mask`（默认 `false`）。\n\n## 🐛 修复\n\n- 修复 YOLO `other` 检测框在 OCR \u002F 常规渲染链路中误参与的问题：检测结果改为“全量检测框”与“下游处理框”分离。\n- 修复 `other` 标签在后续流程中身份丢失导致过滤失效的问题：`other` 不再进入 mOCR 合并输入，避免因新建四边形未继承标签而漏过滤。\n- 修复模型辅助合并与常规合并输入边界不清晰的问题：仅“模型辅助合并”可读取 `other` 检测框，mOCR 合并明确不可读取。\n- 修复开启模型辅助合并后发送给翻译器的文本顺序不一致问题：统一合并结果排序规则，保证输入顺序稳定。\n- 修复编辑器 OCR 拆分仅对 ocr32px\u002F48px\u002F48px_ctc 生效的问题：移除 OCR 模型白名单限制，PaddleOCR 等模型均可受益于 YOLO 拆分（`mocr` 和 `paddleocr_vl`等多行模型除外）。\n- 修复自动断句在“单区域（OCR lines=1）+ 无 `[BR]`”场景下仍被强制插入 `[BR]` 的问题：\n  - `solve_no_br_layout(...)` 读取当前区域上下文后，单区域时不再主动断句。\n  - 适用于智能气泡相关流程（包含 `smart_scaling` \u002F `balloon_fill` 走到 no-br 自动布局的路径）。\n  - 保持多区域场景原有自动断句行为不变。\n\n## 🔧 优化\n\n- 优化“启用模型气泡过滤盒 \u002F 扩大气泡修复范围”链路：统一使用同一模型蒙版构建逻辑，减少重复实现与行为偏差。\n- 优化 Qt UI 多语言与环境变量交互体验：\n  - API Key 全空时“开始翻译”拦截弹窗改为完整 i18n（含“文件列表为空\u002F未设置输出目录”短提示键补齐）。\n  - API\u002F模型输入框改为“有值显示真实值，空值显示占位符”；占位符文案及常用地址\u002F模型默认值统一并支持多语言。\n  - 统一补齐各语言包 OCR 语言下拉项（`ocr_lang_*`），并移除不再使用的 `ocr_prompt_mode_*` 文案键，避免显示不一致。\n\n- 新增检测阶段上下文缓存：\n  - `ctx.all_detected_textlines`：保存全量检测框（用于调试\u002F追踪）。\n  - `ctx.model_assisted_other_textlines`：仅保存 `other`，供模型辅助合并按需使用。\n- 优化文本线合并入口：按配置动态拼接模型辅助输入，默认下游 OCR 链路只处理非 `other` 文本框。\n- 优化 YOLO OBB（`yolo26obb`）后处理链路：仅保留 end-to-end 输出格式解析（`[cx, cy, w, h, conf, class_id, angle]`）；移除单 patch 内部二次去重，保留长图合并后的跨 patch 去重。\n- 清理无效配置项：移除 `detector.yolo_obb_iou`（`yolo26obb` 现为 end-to-end 后处理，不再使用该参数）。\n- 编辑器 OCR 移除旧 canny_flood 切割逻辑（约 250 行）：删除 `_build_text_mask_canny_flood()`、`_split_spans_from_mask()`、`_split_single_polygon()` 及其 fallback 分支，统一使用 YOLO OBB。","2026-02-27T01:28:27",{"id":250,"version":251,"summary_zh":252,"released_at":253},109743,"v2.1.1","# v2.1.1 更新日志\n\n发布日期：2026-02-19\n\n## ✨ 新功能\n\n- **新增四翻译器统一流式输出**：\n  - OpenAI \u002F OpenAI HQ \u002F Gemini \u002F Gemini HQ 全部支持流式输出\n  - 新增通用流式传输层（统一处理异步流、同步流、SSE 分片）\n  - 终端日志支持实时输出 `--- Translation Results ---` + `原文 -> 译文` 对照\n  - 术语提取支持流式实时预览（`[TERM]`）并与非流式日志格式统一\n- **新增模型辅助合并能力（YOLO 标签辅助）**：\n  - 新增 `balloon \u002F qipao \u002F other` 与 `changfangtiao` 分组预合并流程\n  - 支持“完全包裹”约束，且预合并结果不再参与后续原始合并\n  - `other` 仅用于包裹辅助，不参与标签感染与几何替换\n\n## 🐛 修复\n\n- 修复并发流水线取消时翻译线程可能继续等待 API 返回的问题：统一取消检测链路，`stop_workers` 也会触发翻译器取消回调，确保停止信号可传递到 in-flight 请求\n- 修复 OpenAI \u002F Gemini（含 HQ）长耗时请求在取消时不及时退出的问题：API await 全部改为可轮询取消，收到取消后主动中断当前连接\n- 修复重试与限速等待阶段无法及时响应取消的问题：重试 sleep 和 ratelimit sleep 统一改为可取消等待\n- 修复 OpenAI \u002F Gemini HQ 的双路径请求实现不一致问题：移除单图后备 API 分支，统一走同一套 HQ 批量翻译路径\n- 修复 Gemini 普通翻译器在 curl 分支下安全设置回退不生效的问题：安全错误后可正确切换为 `safety_settings=None` 重试\n- 修复停止任务时偶发 `Task was destroyed but it is pending` 警告：并发线程事件循环关闭前先取消并回收 pending tasks，再执行 loop shutdown\n- 修复竖排内横排块旋转规则：仅字母\u002F数字（长度≥3）执行 90° 旋转，符号块保持横排不旋转\n- 修复省略号转换为竖排三点（`︙\u002F⋯`）后行进距离未锁紧导致视觉空隙的问题：统一竖排省略号紧凑步进规则，并同步换行高度计算与实际渲染步进\n- 修复竖排文本在不同字形\u002F标点下出现竖向对齐不齐的问题：竖排 `center\u002Fright` 改为基于实际墨迹包围盒（含描边）对齐，不再仅依赖 `vertAdvance` 累加高度\n- 修复横排文本对齐在不同字形下出现视觉不齐的问题：横排 `left\u002Fcenter\u002Fright` 改为基于实际墨迹包围盒（含描边）对齐，不再仅依赖字体 advance 度量\n- 修复 Qt 编辑器描边颜色不一致问题：新建文本框默认描边统一为白色，避免与属性面板默认值不一致（白\u002F黑混用）\n- 修复翻译重试次数边界行为：`重试次数` 现已明确支持 `0`（仅首次请求）和 `1`（首次请求 + 1 次重试），避免翻译阶段提前报错\n- 修复字体路径绝对路径跨目录\u002F跨盘符失效问题：当 region 中存储的旧绝对路径在当前机器不存在时，自动以文件名在 `fonts\u002F` 目录兜底查找，避免字体回退到默认值导致文本框尺寸计算异常（越缩越小）\n- 修复 OpenAI \u002F Gemini 空响应（空回）报错提示不清晰的问题：统一识别 `NoneType.strip`、`returned empty content\u002Ftext` 等空回信号，前端友好提示统一为“可能触发内容审核或服务器繁忙”，并给出“更换模型 \u002F 更换站点 \u002F 更换图片内容 \u002F 稍后重试”建议\n- 修复 OpenAI \u002F Gemini（含 HQ）流式兼容性问题：统一支持异步\u002F同步流消费，修复 `async for got coroutine`、SSE `bytes\u002Fstr` 类型不匹配等导致的流式回退异常\n- 修复流式输出重复拼接问题：增强累计块\u002F增量块识别与去重，避免重复整段 JSON 导致解析失败（`expected N, got 0`）\n- 修复术语流式日志重复问题：同一术语按“原文+译文”去重并优先输出带分类版本，避免“无分类+有分类”双条重复\n- 修复高质量翻译在部分 OpenAI 兼容站点（如仅支持 text）的多模态报错重试体验：识别 `image_url \u002F expected text` 等信号并自动降级为文本重试\n- 修复特殊预合并顺序不稳定问题：特殊预合并分组内文本线排序与原合并规则对齐（主方向投票 + 打平时按宽高比决策），避免因集合遍历导致顺序漂移\n- 修复调试图标签显示不一致：`verbose` 调试图统一支持显示模型标签；同时按策略隐藏 `other` 可视化（仅内部参与包裹辅助，不在调试图绘制）\n- 修复 Qt 编辑器方向选项体验：编辑器方向下拉移除 `auto`，仅保留横排\u002F竖排；主页配置项保持不变\n\n## 🔧 优化\n\n- 更新 YOLO OBB 辅助检测模型为 `ysgyolo_1.2_OS1.0_1600.onnx`，提高辅助模型精度\n- 优化取消场景日志完整性：翻译线程在正常\u002F异常\u002F取消路径都会输出线程结束日志，便于定位停止行为\n- 优化字体大小输入框体验：属性面板字体大小输入框新增 `8~1000` 校验，输入大值时不再被滑条上限回写\n- 优化 OpenAI \u002F Gemini（含 HQ）流式能力：四个翻译器统一接入通用流式传输层，并统一回退到非流式路径\n- 优化超时策略：非流式请求超时统一提升到 10 分钟；流式新增“首包超时\u002F空闲超时”双阈值（默认 5 分钟）\n- 优化翻译日志样式统一：流式与非流式都使用 `--- Translation Results ---` + `原文 -> 译文` 对照格式，减少重复刷屏\n- 优化术语日志可见性：移除单独 `[Glossary] Added...` 打印，统一使用 `[TERM]` 输出，流式\u002F非流式行为一致\n- 优化自定义 API 参数日志：提取为公共函数统一管理，仅在启用时输出 `已启用自定义API参数: {...}`\n- 优化翻译流程内存占用：补齐 GPU\u002FONNX 路径中的清理逻辑，移除无效占位清理代码，降低长批处理过程中的内存累积风险\n- 优化文本排序稳定性：面板检测（Kumiko）新增 60 秒超时保护，超时后自动回退简单排序，避免个别页面卡住整批任务\n- 优化 Qt 编辑器新建文本框默认方向：根据用户绘制框形状自动推断方向（高>宽为竖排，否则横排）","2026-02-25T18:37:38",{"id":255,"version":256,"summary_zh":257,"released_at":258},109744,"v2.1.0","# v2.1.0 更新日志\n\n发布日期：2026-02-14\n\n## 🐛 修复\n\n- 修复编辑器导出时字体大小不是用户设定值的问题（`skip_font_scaling` 模式下完全跳过排版缩放，用户设多少字号就渲染多少）\n- 修复编辑器导出时文本方向判断与渲染不一致的问题（`calc_box_from_font` 现在考虑 `direction` 强制覆盖，与 `render()` 的方向判断逻辑保持一致）\n- 修复横排文本在有 BR 标记时仍被框宽度强制断行的问题（横排渲染统一使用无限宽度，换行完全由 BR\u002F换行符控制）\n- 加强气泡边框保护：提升 bubble mask 向内腐蚀力度（半径由短边 `1%` 提升到 `1.5%`，范围由 `3-30px` 调整为 `4-36px`，并保留“腐蚀后为空时回退原 mask”保护）\n- 修复 `smart_scaling` 在 BR 分支下可能触发的 `cannot access local variable 'n'` 异常（统一初始化并在 BR 路径显式设置行\u002F列数，避免渲染回退与性能劣化）","2026-02-15T10:08:45",{"id":260,"version":261,"summary_zh":262,"released_at":263},109745,"v2.0.9","# v2.0.9 更新日志\n\n发布日期：2026-02-14\n\n## ✨ 新功能\n\n- **增强的输出格式支持**：\n  - Qt 编辑器和翻译后端现在支持更多输出格式\n  - 新增支持：AVIF、BMP、TIFF、HEIC\u002FHEIF 格式\n  - 完整支持列表：PNG、JPEG、WebP、AVIF、BMP、TIFF、HEIC\u002FHEIF\n  - HEIC\u002FHEIF 格式需要安装 `pillow-heif` 库，未安装时自动降级为 PNG\n\n- **curl_cffi TLS 指纹伪装**：\n  - Gemini 翻译器支持 curl_cffi 绕过 TLS 指纹检测\n  - 支持自定义 Gemini API Base 使用 Google 原生认证方式（x-goog-api-key）\n  - 支持包含 \"\u002F\" 的模型名（如 z-ai\u002Fglm4.7）自动 URL 编码\n\n- **MangaLens 气泡检测与长图支持**：\n  - 新增 `mangalens.onnx` 气泡检测模块（纯 `onnxruntime`，移除 `ultralytics` 依赖）\n  - 支持 CUDA\u002FCPU 自动回退，模型下载地址统一到模型仓库\n  - 新增长图切割检测（对齐 YOLO 辅助检测长图逻辑），分片推理后回映射并全局去重\n\n- **OCR 气泡过滤配置**：\n  - 新增 `use_model_bubble_filter` 开关\n  - 新增 `model_bubble_overlap_threshold` 阈值配置\n  - 补齐多语言 i18n（`zh_CN`、`zh_TW`、`en_US`、`ja_JP`、`ko_KR`、`es_ES`）\n\n- **蒙版优化策略扩展**：\n  - 新增“扩大气泡修复范围”配置（`use_model_bubble_repair_intersection`）\n  - 仅保留与优化蒙版有交集的气泡连通域，并与优化蒙版合并\n\n## 🐛 修复\n\n- 修复 Qt 编辑器翻译图查看模式下图片不显示的问题（翻译后的图片现在正确加载到 inpainted 层）\n- 修复并行模式下 PSD 导出图层缺少修复图的问题（修复图现在在 PSD 导出前保存）\n- 修复并行模式下停止翻译响应不及时的问题（增加更多取消检查点，优化线程停止逻辑）\n- 修复 Qt 编辑器中手动添加换行符后文本仍被强制换行的问题（检测到换行符时自动开启 AI 断句）\n- 修复 Qt 编辑器蒙版编辑工具光标在整个应用程序显示的问题（光标现在仅在画布上显示）\n- 修复 Qt 编辑器导出时拖动白框后文本位置不更新的问题（导出前会将白框中心同步到 `center`）\n- 修复 `generate_and_export` 在高质量翻译分支未执行蒙版优化的问题（现在会先做 mask refinement 再写入 JSON）\n- 修复导入翻译并渲染（`load_text`）后 JSON 不回写的问题（渲染后会回写最新 `regions`，包括 `translation`\u002F`font_size`）\n- 修复 `AsyncGeminiCurlCffi` 响应解析时 `NoneType` 不可迭代错误\n- 修复 Gemini API 安全设置格式错误（去掉枚举类名前缀）\n- 修复 Gemini API 请求缺少 `role` 字段导致 400 错误\n- 修复多模态不支持错误检测（新增 `image_url`、`expected \\`text\\``、`unknown variant` 关键词）\n- 修复 API 连接测试使用 GPT-5.2 等新模型时 `max_tokens` 参数不支持的问题（移除该参数以兼容所有模型）\n- 修复 Gemini 翻译器在 `max_tokens` 为 None 时仍传递 `max_output_tokens` 参数的问题（现在只在非 None 时传递）\n\n## 🔧 优化\n\n- curl_cffi 客户端仅在出错时打印日志\n- 更新模型推荐为最新版本（gpt-5.2、gemini-3-pro、grok-4.2）\n- 友好错误提示使用 UI 显示名称（OpenAI高质量翻译、Google Gemini 等）\n- 重构 Qt 编辑器：支持彩色描边，并优化编辑交互体验\n- 导出模式（导出原文\u002F导出翻译）写入 `skip_font_scaling=false`，导入渲染时按 JSON 标志决定是否跳过字体缩放\n- 移除导出原文\u002F导出翻译阶段的字体缩放预计算，避免导出流程隐式改写文本布局\n- 统一 `generate_and_export` 执行路径（单图\u002F标准批量\u002F高质量批量共用同一处理逻辑）\n- 统一 `template + save_text` 执行路径（共用导出原文处理逻辑）","2026-02-13T18:02:49",{"id":265,"version":266,"summary_zh":267,"released_at":268},109746,"v2.0.8","# v2.0.8 更新日志\n\n发布日期：2026-01-19\n\n## ✨ 新功能\n\n- **Qt 编辑器多选批量样式设置**：支持选中多个文本框后批量修改字体、颜色、大小、对齐等样式属性\n- **增强的字体颜色选择器**：\n  - 显示当前颜色的 RGB 值\n  - 支持复制\u002F粘贴颜色功能，可快速将一个文本的颜色应用到其他文本\n  - 新增常用颜色保存功能，最多保存 20 个常用颜色\n  - 常用颜色持久化保存，关闭软件后不会丢失\n  - 颜色选择对话框自动加载保存的常用颜色\n- **自定义 API 参数功能**：\n  - 支持为 OpenAI、Gemini 等翻译器传递自定义 API 参数\n  - 可通过 UI 界面勾选开关并点击\"打开文件\"按钮编辑配置\n  - 配置文件位于 `examples\u002Fcustom_api_params.json`\n  - 支持实时生效，修改配置后下次翻译立即使用新参数\n  - 适用于控制 Ollama 等本地模型的特殊参数（如关闭思考模式）\n\n## 🐛 修复\n\n- **Qt 编辑器选择和交互**：修复框选残留、Ctrl+多选显示、光标样式等问题，简化选择逻辑提高稳定性\n- **Qt 编辑器右键菜单**：修复多选时右键打开菜单会取消选择的问题\n- **Qt 编辑器保存 JSON**：修复保存 JSON 时\"正在保存\"提示不消失的问题\n- **Qt 编辑器复制粘贴**：修复新增\u002F粘贴文本框时重复添加两个的问题\n- 修复高质量翻译会覆盖替换翻译流程的 bug\n- 修复 OpenAI 翻译器被 Cloudflare 拦截的问题\n- 修复 `packaging\u002Flaunch.py` 中 `continue` 语法错误\n- 修复 ONNX 修复模型缺少日志输出的问题\n- 修复日志输出缓冲导致的卡住问题\n- 修复 `ignore_bubble` 功能的一致性问题\n\n## 🔧 优化\n\n- 优化 Qt 编辑器日志级别，减少噪音\n- 优化安装脚本的删除提醒\n- 优化并发流水线翻译性能\n- 优化 OpenAI 翻译器重试机制","2026-01-19T09:43:58",{"id":270,"version":271,"summary_zh":272,"released_at":273},109747,"v2.0.7","# v2.0.7 更新日志\n\n发布日期：2026-01-10\n\n## 🐛 修复\n\n- 修复预设管理功能的配置混淆问题：\n  - 修复加载预设时保留 .env 原有字段导致不同翻译器配置混淆的问题\n  - 修复保存预设时过滤空值导致无法区分\"空值\"和\"不存在\"的问题\n  - 现在加载预设会完全替换 .env 文件，只保留预设中的字段\n- 修复 OpenAI\u002FGemini 翻译器错误提示问题：\n  - 修复 `finish_reason: stop` 但内容为空时误报\"意外的结束原因\"\n  - 新增 `length`（token限制）和 `tool_calls`（工具调用）的专门处理\n  - 完善降级机制：所有异常情况都会触发降级，下次重试不再发送图片\n- 修复 PaddleOCR-VL 在打包模式下报错的问题\n- 修复 PaddleOCR-VL 在 Windows 中文路径下崩溃问题\n- 修复 Qt UI编辑器手动修改换行后导出时换行符被替换成空格的问题\n- 修复 PaddleOCR-VL 模型加载参数名错误导致的序列化问题\n\n## 🔧 优化\n\n- 升级 Gemini 翻译器到新版 SDK (`google-genai`)\n- 更新项目依赖\n- 新增 PaddleOCR-VL 自动修补工具，无需手动修改模型文件\n- 优化 PaddleOCR-VL 日志输出，移除冗余信息\n- Qt UI编辑器保存JSON时直接调用后端inpainting模块更新修复图片，提升性能和稳定性\n- 优化后端渲染导出日志，避免重复输出\n- 编辑器导出时强制开启AI断句模式，保留用户手动编辑的换行符\n- 修复依赖冲突：移除 `anyio` 版本限制","2026-01-10T08:42:08",{"id":275,"version":276,"summary_zh":277,"released_at":278},109748,"v2.0.6","# v2.0.6 更新日志\n\n发布日期：2026-01-06\n\n## 🐛 修复\n\n- 修复 Qt 编辑器导出 PSD 文件相关问题：\n  - 修复导出图片时未导出 PSD 文件的问题：在 export_service 中添加 cli 配置传递，确保 PSD 导出配置被正确传递给后端渲染引擎\n  - 修复 PSD 文件保存路径错误的问题：PSD 文件现在会正确保存到原图所在目录的 `manga_translator_work\u002Fpsd\u002F` 下，而不是临时目录，避免导出后文件丢失\n  - 修复 PSD 导出时无法找到 inpainted 图片的问题：现在使用原图路径查找 `manga_translator_work\u002Finpainted\u002F` 下的修复图，而不是在临时目录查找\n- 修复 Qt 编辑器导出 CMYK 模式图片失败的问题：保存 PNG\u002FWEBP 格式时自动将 CMYK 模式转换为 RGB 模式\n- 修复替换翻译模式检测到无字图时不输出原图的问题：无字图现在会直接输出生肉原图\n- 修复 ctd_replace 模块导入错误：将 `det_rearrange_forward` 从正确的位置导入\n- 修复 OpenAI 翻译器使用新模型（如 o1、gpt-4.1）时闪退的问题：当 `max_tokens` 为空时不再传递该参数\n- 修复某些情况下 UI 调用翻译程序闪退的问题\n- 修复渲染时透视变换矩阵计算失败导致崩溃的问题：当 `findHomography` 返回无效矩阵时跳过该文本区域\n\n## ✨ 新功能\n\n- 新增 PaddleOCR-VL-For-Manga OCR 模型支持：针对日文漫画优化的视觉语言模型，效果最好但最吃配置\n\n## 🔧 优化\n\n- 优化替换翻译直接粘贴模式的蒙版处理：DenseCRF 边缘优化结果与扩张蒙版叠加，保留更完整的文字区域\n- 增加替换翻译模式蒙版膨胀配置：支持通过 `kernel_size` 和 `mask_dilation_offset` 参数控制蒙版膨胀力度","2026-01-08T13:23:04",{"id":280,"version":281,"summary_zh":282,"released_at":283},109729,"v2.2.6","# v2.2.6 更新日志\n\n发布日期：2026-04-02\n\n## 🔧 优化\n\n- 重构桌面编辑器内部结构：将主控制器拆分为文档加载、局部修复、导出三块服务，减少 `editor_controller` 单文件堆积的业务逻辑。\n- 重构编辑器画布结构：将 `graphics_view` 拆分为图层更新、区域渲染、输入交互三块模块，压短调用链，后续维护和排查更直接。\n- 引入统一的编辑器会话与文档快照模型，加载、清理、导出前持久化都改为走统一状态入口，减少多处重复持有状态。\n- 收口图片转换链路，统一 `PIL \u002F numpy \u002F QImage` 的桥接方式，降低编辑期图片对象重复转换和重复常驻。\n- 优化桌面编辑器局部修复逻辑，连续涂抹时只应用最新一次修复结果。\n- 优化编辑器缓存策略：文本渲染缓存集中到协调器管理，并增加缓存上限、失效和清理逻辑。\n- 优化大图显示内存：compare \u002F mask \u002F inpaint 预览改为走可降采样显示帧，降低预览层峰值占用。\n- 优化底图数组复用：新增弱缓存复用基础 RGB 数组，减少局部修复时重复执行整图 `PIL -> numpy` 转换。\n\n## 🐛 修复\n\n- 修复命令行\u002F无头离屏渲染时 Qt 字体目录未正确指向项目内置 `fonts\u002F` 的问题；现在在 `offscreen` 模式下会自动补充 `QT_QPA_FONTDIR`，避免出现 `Cannot find font directory ... Qt6\u002Flib\u002Ffonts`、字体发现失败及字体回退异常。\n- 修复编辑器实时修复在快速操作时可能出现的结果回退问题。\n- 减少编辑器蒙版修复过程中的额外卡顿。\n- 修复编辑器区域拖动、旋转和白框调整后撤销不稳定的问题；几何类操作恢复为稳定快照撤销，移动后可正常 `Ctrl+Z`。\n- 修复切图和清空编辑器后旧图片缓存未完全释放的问题，避免多张大图切换时内存持续抬高。\n- 修复 compare 视图、mask 叠层和 inpaint 预览在降采样显示后可能出现的对齐风险，保持场景坐标一致。\n- 修复导出链路里 base image \u002F inpainted image 的重复快照与重复拷贝，减少导出期间额外内存占用。\n- 修复导出时当前活动图片已切换导致旧文档结果误回写的问题，只允许仍然匹配当前源图时更新运行时缓存与导出快照。\n- 修复蒙版绘制提交路径里找不到 controller 时的旧兼容回退逻辑，统一要求通过 `model.controller` 执行命令，避免无撤销直写。\n- 修复字体管理器预览区在切换同家族不同样式字体时显示不准确的问题，避免预览错误合并为同一字体效果。\n- 修复渲染器字体选择逻辑，按当前选中的具体字体文件取字形，正确区分不同字体家族及同家族下的不同样式。\n\n## 📝 说明\n\n- 本版本主要是桌面编辑器内核重构、内存管理收口和撤销稳定性修复，没有新增独立功能入口。\n- 新增离屏编辑器回归验证，覆盖大图切换后的内存回收、compare 同步缩放、mask \u002F inpaint 预览对齐和导出回写链路。\n- 重点目标是降低编辑器内的状态分散、重复缓存和大文件切换时的内存峰值，同时把控制器与画布主文件从“超大单文件”拆回可维护结构。","2026-04-05T07:53:07"]