当前位置: 首页 > news >正文

小牛翻译API详解:功能、优势介绍及案例实战(附完整代码)

    • 写在前面
    • 小牛翻译是做什么的
    • 案例-调用图片翻译API进行英文翻译
      • ✔准备工作
      • ✔获取密钥
      • ✔调用API
      • ✔完整代码
      • ✔运行项目
    • 使用建议


写在前面

随着全球化的快速发展和跨国交流的增多,翻译软件的市场需求持续增长。根据市场数据,全球语言翻译软件市场规模在过去几年中呈现稳步增长的趋势。拿有道翻译来说,有道翻译近一年的“翻译请求次数”已远超“查词请求次数”,达到 1600 亿次/年,由此可见用户对于翻译功能的使用频率之高。此外许多知名的翻译软件如 Google Translate、Microsoft Translator、百度翻译等,通过提供实时、准确的翻译服务均有着有庞大的用户基础。

除了这几个老牌翻译软件,最近我也新“探索”到了一款好用的翻译软件——小牛翻译,除了文本和文档翻译之外,图片翻译和语音翻译是它较为出众的地方。特别是近期新更新上线了 API 服务,新增扫描件 PDF 文件的翻译、新增图片、短语音多模态文件的翻译,更是翻译界的重大突破。

在这里插入图片描述

小牛翻译是做什么的

小牛翻译是一家专注于人工智能翻译技术研发与应用的公司,凭借强大的研发团队和先进的技术实力,小牛翻译在翻译领域取得了显著的成果,提供了全方位的翻译服务,包括文本翻译、语音翻译、图片翻译等。经过试用,我发现小牛翻译有着以下优势:

  • 准确:采用先进的机器学习和人工智能技术,具备强大的语义理解和翻译能力,能够准确理解原文含义,并生成高质量的翻译结果。
  • 实时:支持实时翻译,用户可以在输入文本或语音的同时立即获取翻译结果,大大提高了翻译效率。

在这里插入图片描述

  • 易用:拥有简洁明了的界面设计,用户无需复杂的操作即可轻松使用。同时,它还支持多种输入方式,如键盘输入、语音输入、图片输入等,满足不同用户的需求。

在这里插入图片描述

案例-调用图片翻译API进行英文翻译

本案例为:调用小牛翻译的图片翻译 API,翻译一张带有英文文章的图片。这个图片需要自己准备,如下;

在这里插入图片描述

✔准备工作

想要使用翻译 API 需要先注册账号并登录小牛翻译云平台;

随后页面右上角点击“控制台”进入控制台页面;

在这里插入图片描述
点击“API应用”,可以看到有文本 API、文档 API、语音 API、图片 API 四种供我们选择;

在这里插入图片描述
选择自己的业务需要进行开通即可。

✔获取密钥

密钥指的是 APIKEY 和 APPID,二者是调用 API 的前提,缺一不可;

点击“开通服务”,开通服务后即可查看密钥;

在这里插入图片描述
密钥信息如下;

在这里插入图片描述

✔调用API

获取到 APIKEY 和 APPID 之后,就可以进行开发了,在这里以使用 Python 语言为例;

设置小牛翻译 API 的基础 URL 以及密钥信息;

# 小牛翻译API的基础URL
BASE_URL = "https://api.niutrans.com/v2/image/translate"# 你的API应用信息
app_id = "Ud317175911xxxxx"
api_key = "8f1147129b741d7bce9b1f4254bxxxxx"

设置所需要翻译的图片文件路径,我这里将图片放到了项目文件夹中;

# 图片文件路径
image_path = "微信图片_20240605224414.png"

源语言-英文(en),目标语言-中文(zh);

# 目标语言和源语言
from_lang = "en"  # 源语言
to_lang = "zh"  # 目标语言

设置时间戳;

# 当前时间戳
timestamp = str(int(time.time() * 1000))

在前置工作准备好之后,开始 API 的调用;

调用接口-上传并翻译文件;

在这里插入图片描述
代码如下;

# 上传并翻译文件
def upload_and_translate(image_path, from_lang, to_lang):# 准备上传的图片文件files = {'file': open(image_path, 'rb')}params = {'from': from_lang,'to': to_lang,'timestamp': timestamp,'appId': app_id,}# 生成权限字符串params['authStr'] = generate_auth_str(params)# 构造请求URLurl = f"{BASE_URL}/upload"# 发送POST请求response = requests.post(url, files=files, data=params)# 关闭文件对象files['file'].close()# 返回响应内容return response.json()

其余接口如查询翻译状态、下载翻译结果等参见小牛翻译开发文档。文档详细的介绍了各接口 API 调用方式以及 Java、Python 等语言的调用示例,对于新开发的用户非常友好;

在这里插入图片描述

✔完整代码

import urllibimport requests
import json
import time
import hashlib
from urllib.parse import urlencode# 小牛翻译API的基础URL
BASE_URL = "https://api.niutrans.com/v2/image/translate"# 你的API应用信息
app_id = "Ud317175911xxxxx"
api_key = "8f1147129b741d7bce9b1f4254bxxxxx"# 图片文件路径
image_path = "微信图片_20240605224414.png"# 目标语言和源语言
from_lang = "en"  # 源语言
to_lang = "zh"  # 目标语言# 当前时间戳
timestamp = str(int(time.time() * 1000))# 权限字符串生成规则
def generate_auth_str(params):sorted_params = sorted(list(params.items()) + [('apikey', api_key)], key=lambda x: x[0])param_str = '&'.join([f'{key}={value}' for key, value in sorted_params])md5 = hashlib.md5()md5.update(param_str.encode('utf-8'))auth_str = md5.hexdigest()return auth_str# 上传并翻译文件
def upload_and_translate(image_path, from_lang, to_lang):# 准备上传的图片文件files = {'file': open(image_path, 'rb')}params = {'from': from_lang,'to': to_lang,'timestamp': timestamp,'appId': app_id,}# 生成权限字符串params['authStr'] = generate_auth_str(params)# 构造请求URLurl = f"{BASE_URL}/upload"# 发送POST请求response = requests.post(url, files=files, data=params)# 关闭文件对象files['file'].close()# 返回响应内容return response.json()# 查询翻译状态
def check_translation_status(file_no):params = {'timestamp': timestamp,'appId': app_id,}# 生成权限字符串params['authStr'] = generate_auth_str(params)# 构造请求URLurl = f"{BASE_URL}/status/{file_no}"# 发送GET请求response = requests.get(url, params=params)# 返回响应内容return response.json()# 下载翻译结果
def download_translation(file_no, download_type=1):params = {'type': 1,'timestamp': timestamp,'appId': app_id,}# 生成权限字符串params['authStr'] = generate_auth_str(params)# 构造请求URLurl = f"{BASE_URL}/download/{file_no}"# 发送GET请求response = requests.get(url, params=params)# 返回二进制数据return response.headers.get("Content-Disposition").split("=")[1] ,response.content# 使用示例
if __name__ == "__main__":# 上传并翻译图片response = upload_and_translate(image_path, from_lang, to_lang)time.sleep(5)file_no = response['data']['fileNo']print("图片上传成功,文件编号为:", file_no)# 轮询查询翻译状态while True:status_response = check_translation_status(file_no)print("正在查询结果...")if status_response['data']['transStatus'] == 105:print("翻译成功")breaktime.sleep(5)  # 等待5秒再次查询# 下载翻译结果filename, translation_content = download_translation(file_no)print("正在下载翻译结果...")# 对filename进行url_decode解码filename = urllib.parse.unquote(filename)time.sleep(5)with open(filename, "wb") as f:f.write(translation_content)print("翻译结果已下载")

✔运行项目

开发完成后运行项目;

在这里插入图片描述
运行成功之后会下载翻译结果,是 Word 文档的形式下载至项目文件夹,结果如下:

在这里插入图片描述
至此整个案例就完成了。

使用建议

小牛翻译的出现提高了翻译的准确性和效率,降低了翻译成本,使得更多的个人和企业能够享受到高质量的翻译服务。对于个人而言,小牛翻译能够帮助我们更好进行翻译,满足我们的各项业务;对于企业而言,支持超 30 款定制专属机器翻译服务部署于企业内部服务器中,数据安全性极高,拓展性更优。

更多信息可关注小牛翻译的官方动态和更新信息(http://niutrans.com),及时获取最新的功能和优化。

相关文章:

  • python怎么下载numpy
  • BGP基础实验
  • 使用Python实现深度学习模型:Transformer模型
  • 亚马逊新品如何快速吸引流量?自养号测评助卖家一臂之力
  • C++ | Leetcode C++题解之第129题求根节点到叶节点数字之和
  • 深入TypeScript中Promise的高级用法:高级技巧与避坑指南
  • 1000Base-T协议解读
  • MyBatis总结(2)- MyBatis实现原理(一)
  • python绘制piper三线图
  • 如何更精准定位你的Facebook广告受众?
  • 【GD32F303红枫派使用手册】第九节 RTC-万年历实验
  • 深入理解feign远程调用的各种超时参数
  • 大模型训练学习笔记
  • 网络协议三
  • 蓝桥杯物联网竞赛_STM32L071_19_输出方波信号(PWM)
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • [笔记] php常见简单功能及函数
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • CSS居中完全指南——构建CSS居中决策树
  • ES6系统学习----从Apollo Client看解构赋值
  • golang 发送GET和POST示例
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • js操作时间(持续更新)
  • Python中eval与exec的使用及区别
  • 从PHP迁移至Golang - 基础篇
  • 浮现式设计
  • 解决iview多表头动态更改列元素发生的错误
  • 解析 Webpack中import、require、按需加载的执行过程
  • 自动记录MySQL慢查询快照脚本
  • 【云吞铺子】性能抖动剖析(二)
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 2017年360最后一道编程题
  • 交换综合实验一
  • ​低代码平台的核心价值与优势
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (06)Hive——正则表达式
  • (10)ATF MMU转换表
  • (7)svelte 教程: Props(属性)
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (二)斐波那契Fabonacci函数
  • (三) diretfbrc详解
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET MVC第三章、三种传值方式
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .net开发时的诡异问题,button的onclick事件无效
  • /var/log/cvslog 太大