ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Argos Translate离线翻译API集成:Python/JS/Java三分钟跑通

Argos Translate离线翻译API集成:Python/JS/Java三分钟跑通 Argos Translate离线翻译API集成Python/JS/Java三分钟跑通【免费下载链接】argos-translateOpen-source offline translation library written in Python项目地址: https://gitcode.com/GitHub_Trending/ar/argos-translate服务器不能出网或者不想把用户内容发给云端翻译APIArgos Translate是一个解法用Python写的开源离线翻译库模型以本地argosmodel语言包形式存在装好之后离线翻译API完全不依赖网络。它同时也是LibreTranslate服务背后的离线引擎。这里不罗列功能直接按顺序走先跑通最小示例再看三种语言的接入姿势和语言包管理最后是几个容易踩的坑。一个30秒能跑通的最小示例 先用pip install argostranslate装库。下面这段代码干两件事装一个英→西语言包再翻译一句话。import argostranslate.package import argostranslate.translate argostranslate.package.update_package_index() # 更新语言包索引 pkg next(p for p in argostranslate.package.get_available_packages() if p.from_code en and p.to_code es) argostranslate.package.install_from_path(pkg.download()) # 下载并安装 print(argostranslate.translate.translate(Hello World, en, es)) # ¡Hola Mundo!输出就是¡Hola Mundo!。首次运行要下载模型几十MB之后拔网线也能用。语言对换成任何已安装的组合调用方式不变语言代码是ISO 639格式比如 en、zh、fr。三种语言三种姿势Python本地机器翻译的首选如果你的主进程是Python或者愿意起一个Python边车进程直接用这个Python离线翻译库——模型全在本地没有key、没有配额。translate(text, from_code, to_code)就是全部接口入口在 translate.py 源码 末尾的同名函数。注意只有下载模型那一下要联网翻译本身不发任何请求。想看候选译文和质量分可以取翻译对象调hypotheses()t argostranslate.translate.get_translation_from_codes(en, es) print(t.hypotheses(Hello World, num_hypotheses3)) # 前3个候选得分不写代码的话库自带的argos-translate命令行在终端里也能直接翻。Node.js给Web服务调Node.js翻译接口前端或Node后端不想嵌模型常见做法是自己机器上跑一个LibreTranslate实例基于Argos Translate的REST服务客户端打本地接口const res await fetch(http://127.0.0.1:5000/translate, { method: POST, body: JSON.stringify({ q: Hello!, source: en, target: es }), headers: { Content-Type: application/json } }); const data await res.json(); console.log(data.translatedText); // 输出¡Hola!URL指向127.0.0.1整条链路留在本机请求体就 q、source、target 三个字段客户端一个普通fetch不用装任何SDK。JavaJava翻译SDK的一个HTTP调用Java侧没有官方第一方绑定社区做法是调LibreTranslate接口。核心就一句方法调用// 用社区Java客户端调LibreTranslate实例 LibreTranslateClient client new LibreTranslateClient(http://127.0.0.1:5000); System.out.println(client.translate(Hello!, en, es).getTranslatedText());原理和Node.js一样模型在LibreTranslate进程里Java进程只负责发请求收结果。纯内网环境跑后端的话这条路其实最顺。语言包怎么管更新、安装、卸载 一个.argosmodel是zip包解开看就是三样东西OpenNMT CTranslate2模型权重、tokenizersentencepiece或bpe、句界检测数据。package.py 源码 里三个函数覆盖日常全部操作更新远端索引update_package_index()安装install_from_path(pkg.download())上文已用过卸载uninstall(pkg)# 卸载 en→es 语言包 pkg next(p for p in argostranslate.package.get_installed_packages() if p.from_code en and p.to_code es) argostranslate.package.uninstall(pkg)GUI里有同样的表格可以查看、安装、一键卸载默认装在~/.local/share/argos-translate下想用别的位置就设ARGOS_PACKAGE_DIR环境变量。模型体积上留个心眼每个语言对的量化模型通常是几十MB加载后常驻进程内存想在小型容器里塞十几个语言对先把内存账算好。容易踩的几个坑 ⚠️没有直接模型对交给语言中转判断标准别急着认定这组语言对翻不了先看有没有直接的包。规避写法没有直连包时库会自动找中转路径——比如 zh→fr 会走 en 中转由 translate.py 里的CompositeTranslation拼接你的调用一行不用改。代价是误差累积两轮建议只当非核心语言对的兜底。批量翻译整段传别逐条调判断标准文本有多段就直接传整个字符串。规避写法别自己切成句子再循环调接口——translate()内部先做句子切分再用translate_batch整批喂给CTranslate2N次串行HTTP请求比它慢得多尤其是走LibreTranslate接口时。模型加载后注意内存回收判断标准每个语言对的Translator实例只加载一次且被进程内缓存get_installed_languages上挂了lru_cache。规避写法服务里别反复装卸包或重复创建翻译对象真要释放就重启进程uninstall时缓存也会一并清掉。收尾下一步建议先在自己机器上把英文↔中文这对跑通量一下首次推理延迟和常驻内存再决定同一台机器上能塞几个语言对。需要Web入口的话旁边起一个LibreTranslate实例各语言共用同一套REST接口即可。【免费下载链接】argos-translateOpen-source offline translation library written in Python项目地址: https://gitcode.com/GitHub_Trending/ar/argos-translate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表