随记体验 · 2024年3月28日

【尝鲜】免费的开源图片翻译神器!不可以涩涩哦~

前言

骨哥有个朋友(当然,不是我本人了)前几天问骨哥有没有好用的图片翻译工具,嘿,还真让他问对人了~今天我就把这款工具推荐给各位,目前该工具在Github上已经收获4k Star,用的好的童鞋们,记得给作者zyddnys点个Star哈~ img

工具介绍

你是否在各个群里、社区、图站上遇到很多外文的图片,但又苦于不懂外文而苦恼?那么相信今天这款工具会相当适合你。
排球少年!! 日文原版漫画- 传习日文原版书

工具名叫“Manga-image-traslator”,目前在Github上已收获4K Star,该工具目前主要支持日语、英语、汉语以及韩语,同时该工具为了照顾不懂代码和本地部署使用的童鞋们贴心的提供了在线版以及‘篡改猴’脚本:

更多效率工具

安装

首先要确保你的电脑中已经安装好了Python3.8或以上版本:

# 拉取仓库
$ git clone https://github.com/zyddnys/manga-image-translator.git

# 安装依赖
$ pip install -r requirements.txt

$ pip install git+https://github.com/kodalli/pydensecrf.git

如果你想使用有道翻译或者 DeepL 的 API,需要把你的 APP_KEYAPP_SECRETAUTH_KEY 写入 translators/key.py 文件中。

使用

工具使用的话,分为命令执行和浏览器两种方式,先来看看命令执行的方式:

# 如果机器有支持 CUDA 的 NVIDIA GPU,可以添加 `--use-gpu` 参数
# 使用 `--use-gpu-limited` 将需要使用大量显存的翻译交由CPU执行,这样可以减少显存占用
# 使用 `--translator=<翻译器名称>` 来指定翻译器
# 使用 `--target-lang=<语言代码>` 来指定目标语言
# 将 <图片文件路径> 替换为图片的路径
# 如果你要翻译的图片比较小或者模糊,可以使用upscaler提升图像大小与质量,从而提升检测翻译效果
$ python -m manga_translator --verbose --use-gpu --translator=google --target-lang=CHS -i <path_to_image_file>
# 结果会存放到 result 文件夹里

使用浏览器方式如下:

# 其它参数如上
# 使用 `--mode web` 开启 Web 服务器模式
$ python -m manga_translator --verbose --mode web --use-gpu

成功运行后,可以通过在浏览器中访问http://127.0.0.1:5003 使用。工具提供两种请求模式,分别为同步和异步模式,两种模式区别在于:

  • 同步模式下你的 HTTP POST 请求会一直等待直到翻译完成
    1. POST 提交一个带图片,名字是 file 的 form 到 http://127.0.0.1:5003/run
    2. 等待返回
    3. 从得到的 task_id 去 result 文件夹里取结果,例如通过 Nginx 暴露 result 下的内容
  • 异步模式下你的 HTTP POST 会立刻返回一个 task_id,你可以使用这个 task_id 去定期轮询得到翻译的状态
    1. POST 提交一个带图片,名字是 file 的 form 到http://127.0.0.1:5003/submit
    2. 你会得到一个 task_id
    3. 通过这个 task_id 你可以定期发送 POST 轮询请求 JSON {"taskid": <task_id>}http://127.0.0.1:5003/task-state
    4. 当返回的状态是 finishederrorerror-lang 时代表翻译完成
    5. 去 result 文件夹里取结果,例如通过 Nginx 暴露 result 下的内容

如果你精通外文,发现工具翻译的效果不理想,该工具还支持人工翻译,可以将你认为比较贴切的翻译文本覆盖原有的翻译文本中,具体操作:

{
  "task_id": "12c779c9431f954971cae720eb104499",
  "status": "pending",
  "trans_result": [
    {
      "s": "☆上司来ちゃった……",
      "t": ""
    }
  ]
}

将翻译后内容写入 t 字符串内即可:

{
  "task_id": "12c779c9431f954971cae720eb104499",
  "status": "pending",
  "trans_result": [
    {
      "s": "☆上司来ちゃった……",
      "t": "☆上司来了..."
    }
  ]
}

然后将该 JSON 发送到 http://127.0.0.1:5003/post-manual-result,并等待返回即可。之后就可以从得到的 task_id 去 result 文件夹里取结果,例如通过 Nginx 暴露 result 下的内容。

来看看官方的使用效果图:

Emmm…骨哥知道你此刻正在想什么(果然GHS是第一生产力🤔)咳咳~当然,除了上面用途,遇到图片格式的外文内容,也可以利用该工具进行翻译,大大提升我们的工作效率。如果觉得不错的话,可以给该工具的作者在Github上点个Star,或者支持他们使用 GPU 服务器贡献一点绵薄之力,毕竟靠爱发电真的很难😭。