不用GPU搭建一个漫画自动翻译网站

查看 79|回复 6
作者:2life.top   
简介
最近因为看《我心里危险的东西》和《放学后失眠的你》然后因为太喜欢了就去看漫画了,后来又一发不可收拾就去追更漫画了。还追了一部没找到熟肉的条漫。条漫是英语还好,我自己虽然只是四级水平的英语能力,但是可以勉强能看懂台词,实在看不懂的可以去直接各个翻译平台就行了。但是日漫还有一些本子来说说,我完全不认识日文,想去平台翻译也不太好翻译。因为漫画不是小说,文字都是图片形式的,自己去做OCR识别再去翻译属实是折磨中的折磨。因此我就到处找能用的软件/平台终于让我找到了这个程序。试用了一下就觉得这就是我要的。
这个项目就是:https://github.com/zyddnys/manga-image-translator
硬件需求
理论上来说还是推荐大家使用GPU服务器提供服务,这样速度会更快。还有就是推荐用海外平台。主要是为了方便用一些海外服务商的翻译服务。当然,也可以国内直接搭建,家用电脑也可以。
我们这里用的是
腾讯云的硅谷轻量服务器(2C2G),目前腾讯云正在开展618大促活动,新用户最低95元就可以秒杀一年服务器。点击前往活动页面:https://curl.qcloud.com/DaHhipRg

GPU服务器只需要298一个月。
个人推荐大家可以购买两款三年有效期的服务器。虽然比一年有效期的价格稍微贵一点,但是可以享受三年低价。

说回项目本身。硬件配置2C2G其实是有些低的,但是我也只是需要最小可用即可。因为这是为我自己个人使用而搭建的,没有正式商业化的打算。如果你需要的是商业化或者说开放给大家使用的话那么推荐可以考虑购买活动主场的新老同享区的GPU计算型 GN7服务器,推荐年付。服务器价格只有平时的三折,对于GPU服务器来说每月只需798还是很划算的。
购买时镜像可以选择Debian或者是linux宝塔

环境配置
方面主要是python环境推荐3.8及以上版本。
可以通过`python --version`进行查看默认版本号。如果遇到提示版本号2.7或者提示下图的
`python :command not found`可以尝试使用
```
python3 --version
```

确定python3版本符合要求之后我们还需要进行额外的一步操作,让linux系统下的默认的python命令绑定到python3上。
1、如果你的系统只有python3:
1.1 首先,确认已安装的 Python3 版本和其安装路径。可以通过以下命令查找 Python3 的安装路径:
[ol]
which python3
#/usr/bin/python3[/ol]复制代码
1.2 假设 Python3 的路径为 `/usr/bin/python3`(如果实际路径不同,请将以下步骤中的路径更改为实际路径),你可以运行以下命令将 Python3 添加为系统的可选择 Python 版本:
[ol]update-alternatives --install /usr/bin/python python /usr/bin/python3 1[/ol]复制代码
这个命令的意思是,将 `/usr/bin/python3` 作为可供选择的 Python 版本,并为它设置优先级为 1。
1.3 运行以下命令,你可以看到所有可供选择的 Python 版本:
[ol]update-alternatives --config python[/ol]复制代码
在出现的列表中,选择 Python3 作为默认版本。

2、同时有python2,python3
还是一样的操作
```
[ol]which python2
which python3[/ol]复制代码
```
然后,你需要使用 `update-alternatives` 命令将两个版本的 Python 添加到可选项中。你可以给它们设置一个优先级,数值越大,优先级越高。在这个例子中,我们将给 Python3 设置更高的优先级,使其成为默认版本:
```
[ol]update-alternatives --install /usr/bin/python python /usr/bin/python2 1
update-alternatives --install /usr/bin/python python /usr/bin/python3 2[/ol]复制代码
```
最后再选择python3版本的作为默认版本即可
```
[ol]update-alternatives --config python[/ol]复制代码
```
项目搭建
接下来就是重头戏了。
添加swap
首先给你的服务器添加swap。因为这个项目还是比较吃内存的,我个人推荐内存+swap最好大于8GB。这里我添加了8GB的swap
按照以下的命令一次复制粘贴执行即可
[ol]fallocate -l 8G /swapfile
#创建swap文件
chmod 600 /swapfile
#权限设置成只有root用户才能读写
mkswap /swapfile
#设置成swap空间
swapon /swapfile
#启用swap文件
swapon --show
#查看是否成功启用
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
#重启有效
[/ol]复制代码

项目配置
首先我们需要编译安装`pydensecrf`,注意一定要先安装这个,不然可能会导致奇奇怪怪的问题
```
#海外服务器
[ol]pip install git+https://github.com/lucasb-eyer/pydensecrf.git[/ol]复制代码
#国内服务器
[ol]pip install git+https://ghproxy.com/https://github.com/lucasb-eyer/pydensecrf.git[/ol]复制代码
```
这个速度可能会有点慢,稍微等几分钟就行。
![](https://image.xuehaiwu.com/2023/06/10/chrome_oQVXt8TwHp.png)
再拉取项目仓库:
```
#海外服务器
git clone https://github.com/zyddnys/manga-image-translator.git
#国内服务器
git clone https://ghproxy.com/https://github.com/zyddnys/manga-image-translator.git
```
安装依赖:
[ol]cd manga-image-translator
pip install -r requirements.txt[/ol]复制代码
等依赖安装的过程之中我们可以先看下面的操作。
## 防火墙设置
项目可以命令行运行也可以web运行,我们时需要web服务,方便在线访问的。项目web模式会默认运行在5003端口,所以我们需要先去服务器控制台进行端口开放,如果使用了宝塔服务器还需要去宝塔后台同样进行操作。
腾讯云轻量服务器控制台:https://console.cloud.tencent.com/lighthouse/instance
选择项目服务器,点击防火墙

开放5003端口协议选tcp

宝塔面板开放端口,操作都是类似的,但是宝塔强制要求备注

防火墙设置完成之后,项目依赖应该也已经完成了。
项目运行
我们是CPU服务器,需要提供web在线服务。
所以我们可以直接用命令行命令,如果是腾讯云的GPU服务器,在初始化的时候会自动安装cuda,运行命令也只需要加上`--use-cuda`就可以了
[ol]python -m manga_translator --verbose --mode web
python -m manga_translator --verbose --mode web --use-cuda
[/ol]复制代码

这时候你可以直接在宝塔面板设置反向代理就可以通过域名访问了
如果你不需要域名,要直接通过IP:端口来访问,还需要给命令指定host才行,否则无法访问公网IP:端口,内网IP可在服务器控制台查看,也可以通过`ifconfig`命令查看一般都是eth0的ip
[ol]
python -m manga_translator --verbose --mode web --host 内网IP
# python -m manga_translator --verbose --mode web --host 10.0.4.14[/ol]复制代码

这样就可以直接在公联通过公网ip:5003来访问web服务了。

我个人偏向于使用离线翻译节约成本,需要其他翻译器的可以查看官方文档添加api key。
翻译器列表:

我用的是m2m100_big。
首次运行会下载对应翻译模型,OCR包等大文件

你可以下载对应文件然后上传到对应目录,也可以先看一下是需要下哪些文件,可以提前下好

下载文件都是github文件,所以都可以通过加速链接下载源文件到指定文件夹
加速下载方式:
[ol]wget https://ghproxy.com/+github-url -P 文件夹
# wget https://ghproxy.com/https://github.com/zyddnys/manga-image-translator/releases/download/beta-0.3/inpainting_lama_mpe.ckpt -P /home/lighthouse/manga-image-translator/models/inpainting
[/ol]复制代码
然后就可以看到项目运行了

测试效果:
原图

完成图

我对这个效果还是很满意的。
油猴脚本
写了个n**.net的翻译脚本,要先自建服务才能使用。由于网站的CORS问题,所以需要额外安装一个插件:CORS插件并且在n**上开启。有需要的可以去我的博客获取脚本:  https://www.xuehaiwu.com/manga-image-translator/
脚本是通用的,用在其他网站只要稍微改一下图片选取规则基本上就没问题了

服务器, 代码, 项目

君柯   
66666回头研究一下,膜拜大佬

ok1122   
厉害了 玩出花来了
laoniu0711   
放学后失眠的你确实好看,不过还是更愿意等汉化组,日语有承汉语精髓,在语序造词表达情感方面还是强英语一节的,机翻效果强差人意,小说也一样。
laoniu0711   
你图床炸了
2life.top
OP
  

laoniu0711 发表于 2023-6-12 00:40
放学后失眠的你确实好看,不过还是更愿意等汉化组,日语有承汉语精髓,在语序造词表达情感方面还是强英语一 ...

我是看两遍,出来了看生肉然后慢慢等汉化组
bios12567496   
牛逼
您需要登录后才可以回帖 登录 | 立即注册

返回顶部