针对群内、各个图站上大量不太可能会有人去翻译的图片设计,让我这种日语小白能够勉强看懂图片
主要支持日语,汉语、英文和韩语
支持图片修补和嵌字
该项目是求闻转译志的 v2 版本
只是初步版本,我们需要您的帮助完善
这个项目目前只完成了简单的 demo,依旧存在大量不完善的地方,我们需要您的帮助完善这个项目!
支持我们
请支持我们使用 GPU 服务器,谢谢!
- Ko-fi: https://ko-fi.com/voilelabs
- Patreon: https://www.patreon.com/voilelabs
- 爱发电: https://afdian.net/@voilelabs
在线版
官方演示站 (由 zyddnys 维护): https://cotrans.touhou.ai/
镜像站 (由 Eidenz 维护): https://manga.eidenz.com/
浏览器脚本 (由 QiroNT 维护): https://greasyfork.org/scripts/437569
- 注意如果在线版无法访问说明 Google GCP 又在重启我的服务器,此时请等待我重新开启服务。
- 在线版使用的是目前 main 分支最新版本。
使用说明
1 | 首先,确信你的机器安装了 Python 3.8 及以上版本 |
注意:pydensecrf 并没有作为一个依赖列出,如果你的机器没有安装过,就需要手动安装一下。
如果你在使用 Windows,可以尝试在 https://www.lfd.uci.edu/~gohlke/pythonlibs/#_pydensecrf (英文) (pip install https://www.lfd.uci.edu/~gohlke/pythonlibs/#_pydensecrf) 找一个对应 Python 版本的预编译包,并使用 pip 安装。
如果你在使用其它操作系统,可以尝试使用 pip install git+https://github.com/kodalli/pydensecrf.git 安装。
[使用谷歌翻译时可选]
申请有道翻译或者 DeepL 的 API,把你的 APP_KEY 和 APP_SECRET 或 AUTH_KEY 写入 translators/key.py 中。
翻译器列表
| 名称 | 是否需要 API Key | 是否离线可用 | 其他说明 |
|---|---|---|---|
| youdao | ✔️ | 需要 YOUDAO_APP_KEY 和 YOUDAO_SECRET_KEY |
|
| baidu | ✔️ | 需要 BAIDU_APP_ID 和 BAIDU_SECRET_KEY |
|
| deepl | ✔️ | 需要 DEEPL_AUTH_KEY |
|
| caiyun | ✔️ | 需要 CAIYUN_TOKEN |
|
| gpt3 | ✔️ | Implements text-davinci-003. Requires OPENAI_API_KEY |
|
| gpt3.5 | ✔️ | Implements gpt-3.5-turbo. Requires OPENAI_API_KEY |
|
| gpt4 | ✔️ | Implements gpt-4. Requires OPENAI_API_KEY |
|
| papago | |||
| offline | ✔️ | 自动选择可用的离线模型,只是选择器 | |
| sugoi | ✔️ | 只能翻译英文 | |
| m2m100 | ✔️ | 可以翻译所有语言 | |
| m2m100_big | ✔️ | 带big的是完整尺寸,不带是精简版 | |
| none | ✔️ | 翻译成空白文本 | |
| original | ✔️ | 翻译成源文本 |
语言代码列表
可以填入 --target-lang 参数
1 | CHS: Chinese (Simplified) |
选项
1 | -h, --help show this help message and exit |
使用命令行执行
1 | 如果机器有支持 CUDA 的 NVIDIA GPU,可以添加 `--use-gpu` 参数 |
使用命令行批量翻译
1 | 其它参数如上 |
使用浏览器 (Web 服务器)
1 | 其它参数如上 |
程序提供两个请求模式:同步模式和异步模式。
同步模式下你的 HTTP POST 请求会一直等待直到翻译完成。
异步模式下你的 HTTP POST 会立刻返回一个 task_id,你可以使用这个 task_id 去定期轮询得到翻译的状态。
同步模式
- POST 提交一个带图片,名字是 file 的 form 到 http://127.0.0.1:5003/run
- 等待返回
- 从得到的
task_id去 result 文件夹里取结果,例如通过 Nginx 暴露 result 下的内容
异步模式
- POST 提交一个带图片,名字是 file 的 form 到http://127.0.0.1:5003/submit
- 你会得到一个
task_id - 通过这个
task_id你可以定期发送 POST 轮询请求 JSON{"taskid": <task_id>}到 http://127.0.0.1:5003/task-state - 当返回的状态是
finished、error或error-lang时代表翻译完成 - 去 result 文件夹里取结果,例如通过 Nginx 暴露 result 下的内容
人工翻译
人工翻译允许代替机翻手动填入翻译后文本
POST 提交一个带图片,名字是 file 的 form 到 http://127.0.0.1:5003/manual-translate,并等待返回
你会得到一个 JSON 数组,例如:
1 | { |
将翻译后内容填入 t 字符串:
1 | { |
将该 JSON 发送到 http://127.0.0.1:5003/post-manual-result,并等待返回
之后就可以从得到的 task_id 去 result 文件夹里取结果,例如通过 Nginx 暴露 result 下的内容
下一步
列一下以后完善这个项目需要做的事,欢迎贡献!
- 使用基于扩散模型的图像修补算法,不过这样图像修补会慢很多
【重要,请求帮助】目前的文字渲染引擎只能勉强看,和 Adobe 的渲染引擎差距明显,我们需要您的帮助完善文本渲染!我尝试了在 OCR 模型里提取文字颜色,均以失败告终,现在只能用 DPGMM 凑活提取文字颜色,但是效果欠佳,我会尽量完善文字颜色提取,如果您有好的建议请尽管提 issue文本检测目前不能很好处理英语和韩语,等图片修补模型训练好了我就会训练新版的文字检测模型。韩语支持在做了- 文本渲染区域是根据检测到的文本,而不是汽包决定的,这样可以处理没有汽包的图片但是不能很好进行英语嵌字,目前没有想到好的解决方案。
- Ryota et al. 提出了获取配对漫画作为训练数据,训练可以结合图片内容进行翻译的模型,未来可以考虑把大量图片 VQVAE 化,输入 nmt 的 encoder 辅助翻译,而不是分框提取 tag 辅助翻译,这样可以处理范围更广的图片。这需要我们也获取大量配对翻译漫画/图片数据,以及训练 VQVAE 模型。
- 求闻转译志针对视频设计,未来这个项目要能优化到可以处理视频,提取文本颜色用于生成 ass 字幕,进一步辅助东方视频字幕组工作。甚至可以涂改视频内容,去掉视频内字幕。
结合传统算法的 mask 生成优化,目前在测试 CRF 相关算法。尚不支持倾斜文本区域合并
效果图
以下样例可能并未经常更新,可能不能代表当前主分支版本的效果。
| 原始图片 | 翻译后图片 |
|---|---|
![]() |
|
| (Source @09ra_19ra) | ![]() |
| (Mask) | |
![]() |
|
| (Source @VERTIGRIS_ART) | ![]() |
--detector ctd (Mask) |
|
![]() |
|
| (Source @hiduki_yayoi) | ![]() |
--translator none (Mask) |
|
![]() |
|
| (Source @rikak) | ![]() |
| (Mask) |







