小牛翻译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),及时获取最新的功能和优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/343032.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux命令篇(六):vi/vim专项

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝您生活愉快! 文章目录 一、什么是vim二…

Vue3入门 - vue3相比于vue2的优点,及如何创建Vue3项目

目录 一、认识Vue3 1. Vue2 选项式 API vs Vue3 组合式API 2. Vue3的优势 二、使用create-vue搭建Vue3项目 1. 认识create-vue 2. 使用create-vue创建项目 3.熟悉项目和关键文件 一、认识Vue3 1. Vue2 选项式 API vs Vue3 组合式API <script>export default …

操作系统教材第6版——个人笔记6

3.3.4 页面调度 页面调度 当主存空间已满而又需要装入新页时&#xff0c;页式虚拟存储管理必须按照一定的算法把已在主存的一些页调出去 #主存满加新&#xff0c;把已在主存一些页调出选择淘汰页的工作称为页面调度 选择淘汰页的算法称为页面调度算法 页面调度算法设计不当&a…

BERT应用——文本间关联性分析

本文结合了自然语言处理&#xff08;NLP&#xff09;和深度学习技术&#xff0c;旨在分析一段指定的任务文本中的动词&#xff0c;并进一步探讨这个动词与一系列属性之间的关联性。具体技术路径包括文本的词性标注、语义编码和模型推断。 一、技术思路 NLP和词性标注 在自然…

基于fabric封装一个简单的图片编辑器(vue 篇)

介绍 前言vue demo版本react 版本 前言 对 fabric.js 进行二次封装&#xff0c;实现图片编辑器的核心功能。核心代码 不依赖 ui响应式框架vue ,react 都适用。 只写了核心编辑相关代码便于大家后续白嫖二次开发 核心代码我就没有打包发布 会 和 业务代码一起放到项目中。 vu…

鸿蒙轻内核M核源码分析系列九 互斥锁Mutex

多任务环境下会存在多个任务访问同一公共资源的场景&#xff0c;而有些公共资源是非共享的临界资源&#xff0c;只能被独占使用。鸿蒙轻内核使用互斥锁来避免这种冲突&#xff0c;互斥锁是一种特殊的二值性信号量&#xff0c;用于实现对临界资源的独占式处理。另外&#xff0c;…

博客系统测试报告

博客系统 测试报告 一、项目背景 一个Web网站程序&#xff0c;你可以观看到其他用户博客也可以登录自己的账号发布博客&#xff0c;通过使用Selenium定位web元素、操作测试对象等方法来对个人博客系统的进行测试&#xff0c;测试的核心内容有用户登录、博客列表及博客数量的展…

pypi 发布自己的包

注册pypi个人用户 网址&#xff1a;https://pypi.org 目录结构dingtalk_utils 必须-pkgs- __init__.py .gitignore LICENSE 必须 README.md 必须 requirements.txt setup.py 必须安装依赖 pip install setuptools wheel安装上传工具 pip install twinesetup.py i…

基于ChatGLM3的本地问答机器人部署流程

基于ChatGLM3的本地问答机器人部署流程 前言一、确定文件结构1.新建文件夹储存本地模型2.下载源码和模型 二、Anaconda环境搭建1.创建anaconda环境2.安装相关库3.设置本地模型路径4.启动 三、构建本地知识库1.下载并安装postgresql2.安装c库3.配置向量插件 四、线上运行五、 全…

【全开源】JAVA打车小程序APP打车顺风车滴滴车跑腿源码微信小程序打车源码

&#xff1a;构建便捷出行新体验 一、引言&#xff1a;探索打车系统小程序源码的重要性 在数字化快速发展的今天&#xff0c;打车系统小程序已成为我们日常生活中不可或缺的一部分。它以其便捷、高效的特点&#xff0c;极大地改变了我们的出行方式。而背后的关键&#xff0c;…

从零开始学JAVA

一、编写Hello world程序 public class JavaMain1 {//主程序执行入口&#xff0c;main方法public static void main(String[] args){System.out.println("Hello world!");} } 运行结果 Hello world! java编写主程序常见错误&#xff1a; 1、System ---首字母没有…

外汇天眼:金融服务补偿计划(FSCS)确认已任命清算人为TenetConnect Services有限公司

2024年6月5日&#xff0c;Tenet Group有限公司的董事们任命了Interpath有限公司的Ed Boyle、Howard Smith和Rob Spence为联合清算人。Ed Boyle和Rob Spence也被任命为其子公司Tenet有限公司、TenetConnect有限公司和TenetConnect Services有限公司的联合清算人。Tenet Mortgage…

应对800G以太网挑战:数据中心迁移

在过去几年中&#xff0c;云基础设施和服务的大规模使用推动了对更多带宽、更快速度和更低延迟性能的需求。交换机和服务器技术的改进要求布线和架构随之调整。因此&#xff0c;800G以太网对数据中心迁移的需求&#xff0c;特别是对速率&#xff08;包括带宽、光纤密度和通道速…

突破性技术: 大语言模型LLM量化激活outliers异常值抑制

LLM过去有两种突破性技术大大提升了量化精度&#xff0c;分别是group-wise量化和GPTQ/AWQ量化。前者相比于过去的per-tensor和per-channel/per-axis量化提出了更细粒度的对channel拆分为更小单元的量化方式&#xff0c;后者通过巧妙的算法明显提升了4bit量化的精度。 LLM量化存…

接口的应用、 适配器设计模式

接口的应用 适配器设计模式 Inter package com.itheima.a09;public interface Inter {public abstract void show1();public abstract void show2();public abstract void show3();public abstract void show4();}InterAdapter package com.itheima.a09; //抽象 public abs…

二说springboot3的自动配置机制

大家好&#xff0c;这里是教授.F 目录 SpringBootApplication&#xff1a; EableAutoConfiguration&#xff1a; 上一篇文章粗略的讲了自动配置机制&#xff0c;二说系列将从源码的角度进行讲解。 SpringBootApplication&#xff1a; 首先我们还是得从SpringBootApplication…

2 - 寻找用户推荐人(高频 SQL 50 题基础版)

2.寻找用户推荐人 考点: sql里面的不等于&#xff0c;不包含null -- null 用数字判断筛选不出来 select name from Customer where referee_id !2 OR referee_id IS NULL;

Cesium401 (Unauthorized)https://api.cesium.com/v1/assets/2/endpoint未授权问题

目录 前言1.原因分析2.解决问题1.禁用默认的imageryProvider2.禁用图层切换3.移除所有默认图层4.使用自己的地形(可选) 3.最终解决方案4.总结 前言 在初始化Cesium的Viewer以后&#xff0c;Viewer会自动去访问Cesium官网的资源&#xff0c;如果访问不到官网的资源&#xff0c;就…

Prometheus + Grafana + Alertmanager 系统监控

PrometheusGrafana 系统监控 1. 简介1.1 Prometheus 普罗 米修斯1.2 Grafana 2. 快速试用2.1 Prometheus 普罗 米修斯2.2 Prometheus 配置文件2.3 Grafana 2. 使用 Docker-Compose脚本部署监控服务3. Grafana 配置3.1 配置数据源 Prometheus3.2 使用模板ID 配置监控模板3.3 使用…

2024/6/7 英语每日一段

A recent review study examining a decade of research on technology and sleep found the link is more nuanced than previously thought. “It’s an interaction between a person’s vulnerabilities--and not everyone has these vulnerabilities--and the type of act…