HomeLab迷你小主机(x86):Docker部署开源机器翻译LibreTranslate

NO.1
libretranslate简介

github地址

https://github.com/LibreTranslate/LibreTranslate

docker images地址

https://hub.docker.com/r/libretranslate/libretranslate

官网体验地址

https://libretranslate.com/

免费开源机器翻译 API。自托管、离线功能且易于设置

不依赖于 Google 或 Azure 等专有提供商来执行翻译。相反,它的翻译引擎由开源Argos Translate库提供支持。

img

截止到目前为止

云翻译准确度相对高的有

  • 谷歌翻译

  • DeepL翻译

但是它们断网不可用,且DeepL有免费闲置,谷歌受网络影响不便使用

需要一个可以离线托管,且能相对准确翻译的开源免费应用来代替谷歌翻译等(避免受到网络,价格,广告等其他因素影响)

NO.2
libretranslate安装

新建docker-compose.yml文件

version: '3.5'
services:
libretranslate:
image: libretranslate/libretranslate
container_name: libretranslate
ports:

- 3051:5000

command: –load-only en,zh

    # network_mode: “host”

 

开放端口

sudo ufw allow 3051

拉取镜像并启动服务

docker-compose up

img

遇到报错

libretranslate  | (URLError(ConnectionRefusedError(111, 'Connection refused')),)
libretranslate | (URLError(ConnectionRefusedError(111, 'Connection refused')),)
libretranslate | (URLError(ConnectionRefusedError(111, 'Connection refused')),)
libretranslate | (RecursionError('maximum recursion depth exceeded while calling a Python object'),)
libretranslate | (RecursionError('maximum recursion depth exceeded while calling a Python object'),)
libretranslate | (RecursionError("encoding with 'idna' codec failed (RecursionError: maximum recursion depth exceeded in comparison)"),)
libretranslate | (RecursionError('maximum recursion depth exceeded while calling a Python object'),)
libretranslate | (RecursionError('maximum recursion depth exceeded while calling a Python object'),)
libretranslate | (RecursionError('maximum recursion depth exceeded'),)
libretranslate | (RecursionError('maximum recursion depth exceeded while calling a Python object'),)
libretranslate | (RecursionError('maximum recursion depth exceeded while calling a Python object'),)
libretranslate | Traceback (most recent call last):
libretranslate | File "/app/./venv/bin/libretranslate", line 8, in <module>
libretranslate | Updating language models
libretranslate | Cannot update models (normal if you're offline): maximum recursion depth exceeded while calling a Python object
libretranslate | sys.exit(main())
libretranslate | File "/app/venv/lib/python3.10/site-packages/libretranslate/main.py", line 192, in main
libretranslate | app = create_app(args)
libretranslate | File "/app/venv/lib/python3.10/site-packages/libretranslate/app.py", line 160, in create_app
libretranslate | language_target_fallback = languages[1] if len(languages) >= 2 else languages[0]
libretranslate | IndexError: list index out of range
libretranslate exited with code 1

解决方案(无法解决)

尝试修改网路模式network_mode: “host”,经过测试依旧不行

尝试切换网络线路,也依旧还不行

可能的错误原因

  1. URLError(OSError(99, ‘Cannot assign requested address’)):这个错误通常是由于尝试绑定到无法分配的地址¹。你可以尝试将服务器绑定的地址更改为本机地址¹。如果你在云服务器(如阿里云或腾讯云)上遇到这个问题,你可以尝试将服务端的 IP 填写为私网 IP,客户端填写为公网 IP¹。

  2. RecursionError(‘maximum recursion depth exceeded while calling a Python object’):这个错误是因为 Python 的递归深度超过了限制。你可能需要检查你的代码,看看是否有无限递归或者递归深度过深的情况。

  3. IndexError: list index out of range:这个错误是因为你试图访问一个超出范围的索引。在这种情况下,你可能需要检查 `languages` 列表的长度,确保你访问的索引在列表长度范围内。

简而言之就是libretranslate依赖的模型无法拉取,导致代码检测模型时发现数量不对,导致无限循环报错

NO.4
其他方式安装

使用conda创建环境

conda create -n ibretranslate python=3.10

输入y,回车

img

切换到新的环境

conda activate ibretranslate

img

切换后,红框出会变为当前的环境名称

img

官方安装文档

https://github.com/LibreTranslate/LibreTranslate#arguments

img

运行安装命令

pip install libretranslate

img

等待安装完成

img

启动命令

libretranslate --load-only en,zh

同样报错

(URLError(ConnectionRefusedError(111, 'Connection refused')),)

img

一些可能的问题

  1. 检查服务器是否启动:确保你试图连接的服务器已经启动并正在监听预期的端口¹²。

  2. 检查地址和端口:确保你正在使用正确的地址和端口号¹²。

  3. 检查防火墙设置:防火墙可能会阻止某些连接,尤其是如果你试图从外部网络连接到内部服务¹²。

  4. 使用内网穿透服务:如果你在尝试从外部网络访问本地网络中的服务,你可能需要使用内网穿透服务⁴。

  5. 检查服务器资源:如果服务器资源不足(例如,内存不足),也可能导致连接被拒绝²

猜测是内存不足的问题

NO.5
win主机运行

零刻小主机16GB内存,无GPU,Ubuntu Server20.04运行失败

img

换win系统运行,64GB内存,12GB显存 RTX显卡

img

拉取项目文件

git clone https://github.com/LibreTranslate/LibreTranslate.git

img

拉取完成

img

进入到文件夹

img

双击运行run.bat

获取命令端执行run.bat

img

img

会跳转到docker安装界面

img

下载并双击安装

img

安装docker desktop

点击ok

img

继续安装

img

重启电脑

img

找不到镜像,无法运行

Unable to find image 'libretranslate/libretranslate:latest' locally
[docker-credential-desktop.system][W] Windows version might not be up-to-date: The system cannot find the file specified.

img

可能原因

这个问题可能是由于Docker在尝试从本地获取名为’libretranslate/libretranslate:latest’的镜像,但是没有找到。这可能是由于以下几个原因:

  1. 镜像不存在:你可能没有在本地创建或拉取过这个镜像1。

  2. 标签问题:如果你在创建镜像时使用了特定的标签,但在运行时没有指定,Docker会默认寻找带有’latest’标签的镜像1。

  3. Docker登录问题:如果这个镜像是存储在Docker Hub上的,你可能需要先登录你的Docker Hub账户才能拉取这个镜像2。

你可以尝试以下步骤来解决这个问题:

  • 确保你已经正确地创建或拉取了这个镜像。

  • 在运行命令时使用正确的镜像名和标签。

  • 如果这个镜像是存储在Docker Hub上的,确保你已经登录了你的Docker Hub账户

先登录docker账户

登录后,可以查找并拉取镜像了

点击pull拉取

img

提示拉取成功

img

再次点击run.bat,开始下载模型

看描述找到60个模型

img

下载到一半,关掉再次打开,发现没有下载模型了

直接启动webui

img

NO.6
LibreTranslate使用

访问ip:端口

也就是http://localhost:5000/

可以看到界面已经正常运行访问了

img

简单的翻译

这是一个测试文字,用来测试简体中文转为英文的翻译测试

翻译结果

This is a test language used to test the Chinese translation test of the simplified Chinese into English

img

使用谷歌翻译反向翻译,意思差不多

img

NO.7
Tips

至此LibreTranslate成功在win上的docker运行,这样在离线的时候也同样可用

END.

觉得本文还行,不妨顺手点赞收藏,下期见。

推荐阅读

AI人工智能:开源PaddleOCR(OCR图像识别)

HomeLab迷你小主机(x86):Docker部署开源AI相册应用PhotoPrism(支持树莓派部署)

HomeLab迷你小主机(x86):Docker部署开源跨平台ChatGPT应用Next-Web

☕ 朋友,都看到这了,确定不关注一下么? 👇