通用翻译API技术文档
如何使用通用翻译API
1.使用您的百度账号登录百度翻译开放平台(https://api.fanyi.baidu.com);
2.注册成为开发者,获得APPID;
3.进行开发者认证(如仅需标准版可跳过);
4.开通通用翻译API服务;
5.参考技术文档和Demo编写代码
接入方式
通用翻译API通过HTTP接口对外提供多语种互译服务。您只需要通过调用通用翻译API,传入待翻译的内容,并指定要翻译的源语言(支持源语言语种自动检测)和目标语言种类,就可以得到相应的翻译结果。
通用翻译API HTTP地址:
http://api.fanyi.baidu.com/api/trans/vip/translate
通用翻译API HTTPS地址:
https://fanyi-api.baidu.com/api/trans/vip/translate
输入参数
字段名 | 类型 | 必填参数 | 描述 | 备注 |
---|---|---|---|---|
q | TEXT | Y | 请求翻译query | UTF-8编码 |
from | TEXT | Y | 翻译源语言 | 语言列表(可设置为auto) |
to | TEXT | Y | 译文语言 | 语言列表(不可设置为auto) |
appid | TEXT | Y | APP ID | 可在管理控制台查看 |
salt | TEXT | Y | 随机数 | |
sign | TEXT | Y | 签名 | appid+q+salt+密钥 的MD5值 |
以下字段仅开通了词典、TTS者需填写 | ||||
tts | STRING | N | 是否显示语音合成资源 | tts=0显示,tts=1不显示 |
dict | STRING | N | 是否显示词典资源 | dict=0显示,dict=1不显示 |
以下字段仅开通“我的术语库”用户需填写 | ||||
action | STRING | N | 是否需使用自定义术语干预通用翻译API | 1=是,0=否 |
请求方式:可使用GET或POST方式,如使用POST方式,Content-Type请指定为:application/x-www-form-urlencoded
字符编码:统一采用UTF-8编码格式
query长度:为保证翻译质量,请将单次请求长度控制在 6000 bytes以内。(汉字约为2000个)
签名生成方法
签名是为了保证调用安全,使用MD5算法生成的一段字符串,生成的签名长度为32位,签名中的英文字符均为小写格式。
生成方法:
Step1、将请求参数中的 APPID(appid), 翻译query(q, 注意为UTF-8编码), 随机数(salt), 以及平台分配的密钥(可在管理控制台查看)
按照 appid+q+salt+密钥 的顺序拼接得到字符串1。
Step2、对字符串1做md5,得到32位小写的sign。
注:
1、待翻译文本(q)需为UTF-8编码
2、在生成签名拼接 appid+q+salt+密钥 字符串时,q不需要做URL encode,在生成签名之后,发送HTTP请求之前才需要对要发送的待翻译文本字段q做URL encode。
输出参数
返回结果是json格式,包含以下字段:
字段名 | 类型 | 描述 | 备注 |
---|---|---|---|
from | TEXT | 翻译源语言 | 返回用户指定的语言,或自动检测的语言(源语言设为auto时) |
to | TEXT | 译文语言 | 返回用户指定的目标语言 |
trans_result | MIXED LIST | 翻译结果 | 返回翻译结果,包含src 和 dst 字段。 |
src | TEXT | 原文 | |
dst | TEXT | 译文 | |
error_code | Int32 | 错误码 | 仅当出现错误时显示 |
以下字段仅开通词典、TTS资源者可见 | |||
src_tts | 原文tts | mp3格式,暂时无法指定发音 | |
dst_tts | 译文tts | mp3格式,暂时无法指定发音 | |
dict | 中英词典资源 | 返回中文或英文词典资源,包含音标、简明释义等内容 |
接入举例
例如:将英文单词apple翻译成中文:
请求参数:q=apple
from=en
to=zh
appid=2015063000000001(请替换为您的appid)
salt=1435660288(随机码)
平台分配的密钥: 12345678
生成签名sign:
Step1. 拼接字符串1:
拼接appid=2015063000000001+q=apple+salt=1435660288+密钥=12345678
得到字符串1:"2015063000000001apple143566028812345678"
Step2. 计算签名sign(对字符串1做md5加密)
sign=md5(2015063000000001apple143566028812345678),
得到 sign=f89f9594663708c1605f3d736d01d2d4
拼接完整请求:
注:也可使用POST方式,如POST方式传送,Content-Type请指定为:application/x-www-form-urlencoded
语言列表
源语言语种不确定时可设置为 auto,目标语言语种不可设置为auto。但对于非常用语种,语种自动检测可能存在误差。
语言简写 | 名称 |
---|---|
auto | 自动检测 |
zh | 中文 |
en | 英语 |
yue | 粤语 |
wyw | 文言文 |
jp | 日语 |
kor | 韩语 |
fra | 法语 |
spa | 西班牙语 |
th | 泰语 |
ara | 阿拉伯语 |
ru | 俄语 |
pt | 葡萄牙语 |
de | 德语 |
it | 意大利语 |
el | 希腊语 |
nl | 荷兰语 |
pl | 波兰语 |
bul | 保加利亚语 |
est | 爱沙尼亚语 |
dan | 丹麦语 |
fin | 芬兰语 |
cs | 捷克语 |
rom | 罗马尼亚语 |
slo | 斯洛文尼亚语 |
swe | 瑞典语 |
hu | 匈牙利语 |
cht | 繁体中文 |
vie | 越南语 |
错误码列表
当翻译结果无法正常返回时,请参考下表处理:
错误码 | 含义 | 解决方法 |
---|---|---|
52000 | 成功 | |
52001 | 请求超时 | 重试 |
52002 | 系统错误 | 重试 |
52003 | 未授权用户 | 检查您的 appid 是否正确,或者服务是否开通 |
54000 | 必填参数为空 | 检查是否少传参数 |
54001 | 签名错误 | 请检查您的签名生成方法 |
54003 | 访问频率受限 | 请降低您的调用频率 |
54004 | 账户余额不足 | 请前往管理控制台为账户充值 |
54005 | 长query请求频繁 | 请降低长query的发送频率,3s后再试 |
58000 | 客户端IP非法 | 检查个人资料里填写的 IP地址 是否正确 可前往管理控制平台修改 IP限制,IP可留空 |
58001 | 译文语言方向不支持 | 检查译文语言是否在语言列表里 |
58002 | 服务当前已关闭 | 请前往管理控制台开启服务 |
90107 | 认证未通过或未生效 | 请前往我的认证查看认证进度 |
词典、语音合成资源
通用翻译API默认不提供词典、语音合成资源。如需使用请先进行企业认证,之后发送邮件至translate_api@baidu.com申请开通词典或语音合成资源,请注明您的使用场景及APPID。
资源开通后,API翻译结果中将默认附带dict(词典)和tts(语音合成)字段,仅对中英、英中互译有效。
词典资源:
词典分中英词典,由于每个词属性不同,词典结果不一定包含所有部分。
如源语言为中文,词典数据包括:拼音、词性、中文释义、英文释义、近义词等资源。
如源语言为英文,词典数据包括:英文释义、中文释义、音标、核心词汇类别等。
注:单个query需为词、词组或短语,如query为句子,则dict字段为空。
语音合成资源:
语音合成资源包含query原文、译文的发音,以mp3文件格式提供。
注:单个query内分段数超过3段,或字数超过500字,则tts字段为空。
自定义术语库
自定义术语库是百度翻译最新推出的API增值服务,如果您认为通用翻译API对于某些术语翻译不准确,可在“管理控制台-我的术语库”页面填写您认为正确的原文和译文,启用术语库,并在接口URL增加“&action=1”,即可在翻译结果中看到干预效果(提交后需等待10分钟方可生效)。
需要提醒您的是:因翻译模型并非对术语的一一替换,而是将您填写的术语翻译与原翻译进行对比和计算。如您填写的翻译与原译文差异过大,则可能导致干预后结果有错乱。此外,术语干预仅适用于专有名词、术语的自定义,目前暂不支持针对HTML代码(如<p> <div>)原样输出,即:您暂时无法在原文和译文都填写英文单词“text”。
各语言DEMO
PHP 版(点击下载)
JS 版(点击下载)
Python2 版(点击下载)
Python3 版(点击下载)
C 版(点击下载)
Java 版(点击下载)
C# 版(点击下载)
常见问题
1. 如何在一次请求中翻译多个单词或者多段文本?
您可以在发送的字段q中用换行符(在多数编程语言中为转义符号 n。其中n是需要能被程序解析出来的换行符而不是字符串n,您可以将n用双引号包围 )或者回车换行来分隔要翻译的多个单词或者多段文本,这样您就能得到多段文本独立的翻译结果了。注意在发送请求之前需对q字段做URL encode!
2. 什么是URL encode?
网络标准RFC 1738规定了URL中只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号。如果您需要翻译的文本里面出现了不在该规定范围内的字符(比如中文),需要通过URL encode将需要翻译的文本做URL编码才能发送HTTP请求。大部分编程语言都有现成的URL encode函数,具体使用方法可以针对您使用的编程语言自行搜索。
3. 通用翻译API中,字符数量如何统计?
字符数量的统计以翻译的源语言字符长度为标准。一个汉字、一个英文字母、一个标点符号等均记为一个字符。
4. 单次翻译请求是否有字符数限制?
为保证您的使用体验,请将单次翻译文本长度限定为6000字节以内(汉字约为2000个字符)。此外,高峰时期单次请求文本过长或将导致翻译超时。您可将query分多次请求。
5. 为什么我的请求总是返回错误码54001?
54001表示签名错误,请检查您的签名生成方法是否正确。
应该对 appid+q+salt+密钥 拼接成的字符串做MD5得到32位小写的sign。确保要翻译的文本q为UTF-8编码。
注意在生成签名拼接 appid+q+salt+密钥 字符串时,q不需要做URL encode,在生成签名之后,发送HTTP请求之前才需要对要发送的待翻译文本字段q做URL encode。
如果您无法确认自己生成签名的结果是否正确,可以将您生成的签名结果和在https://md5jiami.51240.com/中生成的常规md5加密-32位小写签名结果对比。
6. 为什么我的请求会返回54003?
54003表示请求频率超限,请降低您的请求频率。
对于标准版服务,您的QPS(每秒请求量)=1,如需更大频率,请先进行身份认证,认证通过后可切换为高级版(适用于个人,QPS=10)或尊享版(适用于企业,QPS=100)
7. 如果我需要翻译整个网页,尖括号内的标签无法原样输出,怎么办?
翻译API会将传入的所有字符串当做可翻译字符,目前暂时无法区分哪些部分需原样保留,因此API不适合直接处理html文件。您可将html文件进行译前处理,抽取出待翻译文本,传入API翻译后再回填。
8. 我应该如何获取词典、语音合成资源结果?
接入文档与通用翻译API一致,接入流程上无变化。与未开通词典、语音合成服务相比,仅在返回结果处增加tts、dict字段,请注意辨别字段名称。
举例:
(1) 未接入资源时,query=apple,语言方向为英到中,返回结果为:
{"from":"en","to":"zh","trans_result":[{"src":"apple","dst":"苹果"}]}
接入词典、语音合成资源后,返回结果为:
{"from":"en","to":"zh","trans_result":[{"src":"apple","dst":"苹果","src_tts":"https://fanyiapp.cdn.bcebos.com/api/tts/95e906875b87d342d7325a36a4e1ab42.mp3","dst_tts":"https://fanyiapp.cdn.bcebos.com/api/tts/62f4ff87617655bc1f65e24cf4ed4963.mp3","dict":"{"lang":"1","word_result":{"simple_means":{"word_name":"apple","from":"original","word_means":["苹果"],"exchange":{"word_pl":["apples"]},"tags":{"core":["高考","考研"],"other":[""]},"symbols":[{"ph_en":"ˈæpl","ph_am":"ˈæpl","parts":[{"part":"n.","means":["苹果"]}],"ph_other":""}]}}}"}]}
(2) 未接入资源时,query=中国,语言方向为中到英,返回结果为:
{"from":"zh","to":"en","trans_result":[{"src":"中国","dst":"China"}]}
接入词典、语音合成资源后,返回结果为:
{"from":"zh","to":"en","trans_result":[{"src":"中国","dst":"China","src_tts":"https://fanyiapp.cdn.bcebos.com/api/tts/d943b8e0e31e8d0ea8879dde5d41f016.mp3","dst_tts":"https://fanyiapp.cdn.bcebos.com/api/tts/2e2312a1d33e2ff453f92d5d95277e13.mp3","dict":"{"lang":"0","word_result":{"simple_means":{"symbols":[{"word_symbol":"zhōngguó","parts":[{"part_name":"","means":[{"text":"China","part":"n.","word_mean":"China","means":["中国"]},{"text":"Sino-","part":"comb.","word_mean":"Sino-","means":["中国的","中国人(的)"]}]}]}],"word_name":"中国","from":"CEDict","word_means":["China","Sino-"]}}}"}]}
9. 我已开通词典、语音合成资源,但不想在结果中呈现,应该怎么办?
如需隐藏词典、语音合成信息,可在拼接请求参数时附加"&dict=1&tts=1",例如,如仅需隐藏tts字段,完整请求为:
http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4&tts=1
10. 我怎样开通“我的术语库”功能?
“我的术语库”功能面向个人及企业认证用户开放,您需首先前往“开发者信息”处完成身份认证,认证后即可在管理控制台看到“我的术语库”入口。目前自定义术语功能已开通“中文”和“英语”两个语种,更多语种需求,请发送邮件至translate_api@baidu.com告诉我们。
11. 为什么我添加了术语却看不出效果?
添加术语却看不出效果,可能出于以下几个原因:
a. 添加或修改术语后,需要大约10分钟的生效时间,如果您是刚刚修改过术语,请您耐心等候生效;
b. 翻译系统判断您定义的翻译与原翻译差异过大。由于神经网络翻译模型中,术语的定制化干预功能并非对翻译结果的生硬替换,而是类似于“调优”。如果您对术语的定义与原释义含义差距过大,会导致经计算过后的出现不可控的翻译结果。如您对术语干预效果不满意,请与我们联系。translate_api@baidu.com