新闻| 文章| 资讯| 行情| 企业| wap手机版| article文章| 首页|会员中心|保存桌面|手机浏览
普通会员

淄博市又菱科技有限公司

返回的结果是json格式,包含以下字段

例如:将英文单词 apple 翻译成中文

请求参数

q=applefrom=ento=zhappid=2015063000000001(请替换为您的appidsalt=1435660288(随机码平台分配的密钥: 12345678

生成签名sign

Step1. 拼接字符串1拼接appid=2015063000000001+q=apple+salt=1435660288+密钥=12345678得到字符串1:“2015063000000001apple143566028812345678”Step2. 计算签名(对字符串1做md5加密sign=md5(2015063000000001apple143566028812345678),得到sign=f89f9594663708c1605f3d736d01d2d4

拼接完整请求

http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4

:也可使用 POST 方式,如 POST 方式传送,Content-Type 请指定为:application/x-www-form-urlencoded

通用翻译API支持语种数已达 201种,完整列表如下。其中,对于常见语种列表内的语种,所有用户均可调用。对于非常见语种,仅企业已认证的尊享版用户可调用,未认证的非尊享版用户调用将返回错误。源语言语种不确定时可设置为 auto,目标语言语种不可设置为 auto。但对于非常用语种,语种自动检测可能存在误差。常见语种列表

完整语种列表

当翻译结果无法正常返回时,请参考下表处理

词典和语音合成资源为企业尊享版用户专属增值服务。如需使用,请先进行企业认证并开通尊享版服务,之后在开发者信息—通用翻译API—服务信息处申请开通词典或语音合成资源,请详细注明您的使用场景,审核通过后即可使用。资源开通后,API 翻译结果中将默认附带 dict(词典)和 tts(语音合成)字段,仅对中英、英中互译有效。词典资源

词典分中英词典,由于每个词属性不同,词典结果不一定包含所有部分。如源语言为中文,词典数据包括:拼音、词性、中文释义、英文释义、近义词等资源。如源语言为英文,词典数据包括:英文释义、中文释义、音标、核心词汇类别等。:单个 query 需为词、词组或短语,如 query 为句子,则 dict 字段为空。

语音合成资源

语音合成资源包含 query 原文、译文的发音,以 mp3 文件格式提供。:单个query内不支持分段,只有1段且字符数量不超过200的query才会返回tts字段。

自定义术语库是百度翻译最新推出的 API 增值服务,如果您认为通用翻译API对于某些术语翻译不准确,可在“管理控制台-我的术语库”页面填写您认为正确的原文和译文,启用术语库,并在接口 URL 增加“&action=1”,即可在翻译结果中看到干预效果(提交后需等待 10 分钟方可生效)。需要提醒您的是:因翻译模型并非对术语的一一替换,而是将您填写的术语翻译与原翻译进行对比和计算。如您填写的翻译与原译文差异过大,则可能导致干预后结果有错乱。此外,术语干预仅适用于专有名词、术语的自定义,目前暂不支持针对 HTML 代码(如<p> <div>)原样输出,即:您暂时无法在原文和译文都填写英文单词“text”。

1. 如何在一次请求中翻译多个单词或者多段文本?

您可以在发送的字段 q 中用换行符(在多数编程语言中为转义符号 。其中 是需要能被程序解析出来的换行符而不是字符串 ,您可以用换行符来分隔要翻译的多个单词或者多段文本,这样您就能得到多段文本独立的翻译结果了。注意在发送请求之前需对 q 字段做 URL encode

2. 什么是URL encode

网络标准RFC 1738规定了URL中只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号。如果您需要翻译的文本里面出现了不在该规定范围内的字符(比如中文,需要通过URL encode将需要翻译的文本做URL编码才能发送HTTP请求。大部分编程语言都有现成的URL encode函数,具体使用方法可以针对您使用的编程语言自行搜索。

3. 通用翻译API中,字符数量如何统计

字符数量的统计以翻译的源语言字符长度为标准。一个汉字、一个英文字母、一个标点符号等均记为一个字符。空格、html标签等均计入在内。

4. 单次翻译请求是否有字符数限制

为保证您的使用体验,请将单次翻译文本长度限定为6000字节以内(汉字约为2000个字符)。此外,高峰时期单次请求文本过长或将导致翻译超时。您可将query分多次请求。

5. 为什么我的请求总是返回签名错误(错误码54001

54001表示签名错误,请检查按照如下步骤检查您的签名生成方法是否正确1. appid+q+salt+密钥 拼接成的字符串做MD5得到32位小写的sign,确保要翻译的文本q为UTF8格式2. 在生成签名拼接 appid+q+salt+密钥 字符串时,q不需要做URL encode,在生成签名之后,发送HTTP请求之前才需要对要发送的待翻译文本字段q做URL encode。很多开发者遇到签名报错均是由于拼接sign前就做了URL encode,或在拼接url时对query做了两次urlencode。如有不明白可前往 https://tool.chinaz.com/tools/urlencode.aspx 验证3. 如果您无法确认自己生成签名的结果是否正确,可以将您生成的签名结果和在MD5在线加密 - MD5加密工具 - MD5在线生成中生成的常规md5加密-32位小写签名结果对比4. 如您使用POST方式传送,Content-Type请指定为:application/x-www-form-urlencoded5. 请参考上方各语言Demo代码文档仔细检查。

6. 为什么我的请求会返回 54003

54003 表示请求频率超限,请降低您的请求频率。对于标准版服务,您的 QPS(每秒请求量=1,如需更大频率,请先进行身份认证,认证通过后可切换为高级版(适用于个人,QPS=10)或尊享版(适用于企业,QPS=100

7. 为什么我的请求会返回 52001

52001 表示请求超时,请检查按照如下步骤检查您的签名生成方法是否正确1. 您传入的 query 长度是否超长?建议将原文采用" "分段请求2. 如间隔一段时间再次请求,是否可正常返回结果?如果不可以,请检查您所填写的原文或译文语种是否在支持的语种列表里。

8. 为什么我的请求会返回58003

因黑产采用不正当手段收集用户APPID及密钥,由此产生的盗刷字符量现象日益猖獗,系统风控增加了 IP 校验规则,如同一 IP 当日使用多个 APPID 发送翻译请求,则该IP将被封禁当日请求权限,次日解封。但由于 IP 多变,应用场景复杂,难免出现误伤正常使用的情况。如您属正常使用,但出现 58003 的提示,请发送邮件至 translate_api@baidu.com,同时提供如下信息。我方在收到邮件后将与您取得联系,核实后将解除封禁。公司名称产品名称联系人联系方式服务器IPAPPID1)如提供信息不全,将影响审核通过率。2)请不要将您的 APPID 及密钥泄露出去,也不要填写到任何第三方软件中,包括“SCITranslate”、“微信学英语”、“Potplayer”等软件以及各类计算机辅助翻译工具插件。如因此造成密钥泄露形成经济损失,或因此被封禁,百度翻译将有权拒绝解封。

9. 如果我需要翻译整个网页,尖括号内的标签无法原样输出,怎么办

翻译API会将传入的所有字符串当做可翻译字符,目前暂时无法区分哪些部分需原样保留,因此 API 不适合直接处理 HTML 文件。您可将 HTML 文件进行译前处理,抽取出待翻译文本,传入 API 翻译后再回填。

10. 是否支持对译文中的术语结果进行修改

已认证用户可进入“管理控制台→ 我的术语库”维护术语列表,同时开通“干预通用翻译API结果”。开通后,您将可对译文中的术语翻译结果进行优化和修正。请注意:干预通用翻译API结果将可能导致翻译延时增长。因此在无需干预结果时可将开关关闭。如术语干预功能无法满足您的需要,或有更多意见或建议,可联系translate_api@baidu.com

11. 我应该如何获取词典、语音合成资源结果

接入文档与通用翻译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ōng guó","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-"]}}}"

    }

  ]

}

12. 我已开通词典、语音合成资源,但不想在结果中呈现,应该怎么办

如需隐藏词典、语音合成信息,可在拼接请求参数时附加"&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

13. 我怎样开通“我的术语库”功能

“我的术语库”功能面向个人及企业认证用户开放,您需首先前往“开发者信息”处完成身份认证,认证后即可在管理控制台看到“我的术语库”入口。目前自定义术语功能已开通“中文”和“英语”两个语种,更多语种需求,请发送邮件至translate_api@baidu.com告诉我们。

14. 为什么我添加了术语却看不出效果

添加术语却看不出效果,可能出于以下几个原因1. 添加或修改术语后,需要大约 10 分钟的生效时间,如果您是刚刚修改过术语,请您耐心等候生效2. 在拼接接口 URL 时,需要在输入参数中增加“action=1”,详见输入参数小节3. 翻译系统判断您定义的翻译与原翻译差异过大。由于神经网络翻译模型中,术语的定制化干预功能并非对翻译结果的生硬替换,而是类似于“调优”。如果您对术语的定义与原释义含义差距过大,会导致经计算过后的出现不可控的翻译结果。如您对术语干预效果不满意,请与translate_api@baidu.com联系。

  1. 实现代码

import requestsimport hashlibinwd=input("输入你要翻译的文字(默认英译中):")def is_all_chinese(strs):     for _char in strs:         if not '' <= _char <= '':             return False    return True#print(is_all_chinese(inwd))#判断是否全部为中文is_chinese=is_all_chinese(inwd)if is_chinese==True:    ffrom="zh"     ttram="en"     print("系统检测到你输入的全部为中文将自动翻译为英文")else:    ffrom="en"     ttram="zh"app_id="20201223001037485"#你的百度接口的app_idapp_password="K3456Mdf6H25wZIHUPw"#对应秘钥salt="1435660288"#随机数ysmd=app_id+inwd+salt+app_password#需要将百度翻译app_id翻译接口id和搜索关键字+随机数+秘钥进行MD5加密转换head = {     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}def md5value(key):    input_name = hashlib.md5()    input_name.update(key.encode("utf-8"))     return (input_name.hexdigest()).lower()md5code=md5value(ysmd)url_statr="http://api.fanyi.baidu.com/api/trans/vip/translate?q="+inwd+"&from="+ffrom+"&to="+ttram+"&appid=20201223001037485&salt=1435660288&sign="+md5code+"&tts=1&Content-Type=application/x-www-form-urlencoded"reponse=requests.get(url_statr,headers=head).json()result=reponseprint("翻译结果:"+result['trans_result'][0]['dst'])

4、实现效果

企业列表
新闻列表
  • 暂无新闻
推荐企业新闻
联系方式
  • 联系人:汪女士
首页 > 新闻中心 > 用python写的翻译器
新闻中心
用python写的翻译器
发布时间:2024-11-08        浏览次数:0        返回列表

一、灵感来源

用python写的翻译器

1、最近在学习python爬虫,发现现在的百度翻译限制爬虫了,在网上找到了一些文档,说现在都限制反爬,让我一顿失望,爬虫的时候会报:{"errno":997,"errmsg":"未知错误","query":"he","from":"en","to":"zh","error":997}的错误;但是还是让我找到了解决方案,有位博主用5行代码写出了对应调用对应接口的程序,我是特别膜拜,就大树底下好乘凉,你懂得,借鉴借鉴。这边奉上对应博主文章链接,有兴趣的伙伴,可以从他的文档开始入手。

  【python】5行代码实现百度翻译api接口调用_XavierJ的博客-CSDN博客

  1. 但是运用这种方式有个致命的缺点就是每次只能翻译一个单词,而且单词里面不能有特殊符号,比如翻译hello,world就会报错,这对于严谨的我们来说肯定接受不了,竟然百度限制了反爬,那我们加入百度开放的API不就好了。打不过就加入(真香)。
  • 运用申请的百度API自己开发一个本地的翻译软件
  1. 申请百度翻译API:如何申请百度翻译API_360新知
  2. API接口文档(通用翻译

欢迎使用通用翻译API,本文档将指导您如何快速接入。

  1. 使用您的百度账号登录百度翻译开放平台http://api.fanyi.baidu.com
  2. 注册成为开发者,获得 APPID
  3. 进行开发者认证(如仅需标准版可跳过
  4. 开通通用翻译API服务开通链接
  5. 参考技术文档和 Demo 编写代码。

通用翻译API通过 HTTP 接口对外提供多语种互译服务。您只需要通过调用通用翻译API,传入待翻译的内容,并指定要翻译的源语言(支持源语言语种自动检测)和目标语言种类,就可以得到相应的翻译结果。

通用翻译API HTTPS 地址

https://fanyi-api.baidu.com/api/trans/vip/translate

签名是为了保证调用安全,使用 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 encode3.如遇到报 54001 签名错误,请检查您的签名生成方法是否正确,在对 sign 进行拼接和加密时,q 不需要做 URL encode,很多开发者遇到签名报错均是由于拼接 sign 前就做了 URL encode4.在生成签名后,发送 HTTP 请求时,如果将 query 拼接在 url 上,需要对 query 做 URL encode。

请求方式: 可使用 GET 或 POST 方式,如使用 POST 方式,Content-Type 请指定为:application/x-www-form-urlencoded字符编码:统一采用 UTF-8 编码格式query 长度:为保证翻译质量,请将单次请求长度控制在 6000 bytes以内(汉字约为输入参数 2000 个

字段名

类型

是否必填

描述

备注

q

string

请求翻译query

UTF-8编码

from

string

翻译源语言

可设置为auto

to

string

翻译目标语言

不可设置为auto

appid

string

APP ID

可在管理控制台查看

salt

string

随机数

可为字母或数字的字符串

sign

string

签名

appid+q+salt+密钥的MD5值

以下字段仅开通了词典、TTS用户需要填写

tts

integer

是否显示语音合成资源

0-显示1-不显示

dict

integer

是否显示词典资源

0-显示1-不显示

以下字段仅开通了”我的术语库“用户需要填写

action

integer

判断是否需要使用自定义术语干预API

1-是0-否

字段名

类型

描述

备注

from

string

源语言

返回用户指定的语言,或者自动检测出的语种(源语言设为 auto 时

to

string

目标语言

返回用户指定的目标语言

trans_result

array

翻译结果

返回翻译结果,包括 src 和 dst 字段

trans_result.*.src

string

原文

接入举例中的“apple”

trans_result.*dst

string

译文

接入举例中的“苹果”

error_code

integer

错误码

仅当出现错误时显示

以下字段仅开通了词典、TTS用户可见

src_tts

string

原文tts链接

mp3格式,暂时无法指定发音

dst_tts

string

译文tts链接

mp3格式,暂时无法指定发音

dict

string

中英词典资源

返回中文或英文词典资源,包含音标,简明释义等内容

名称

代码

名称

代码

名称

代码

自动检测

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

中文首字母

名称

代码

语种检测

名称

代码

语种检测

名称

代码

语种检测

A

阿拉伯语

ara

爱尔兰语

gle

奥克语

oci

阿尔巴尼亚语

alb

阿尔及利亚阿拉伯语

arq

阿肯语

aka

阿拉贡语

arg

阿姆哈拉语

amh

阿萨姆语

asm

艾马拉语

aym

阿塞拜疆语

aze

阿斯图里亚斯语

ast

奥塞梯语

oss

爱沙尼亚语

est

奥杰布瓦语

oji

奥里亚语

ori

奥罗莫语

orm

B

波兰语

pl

波斯语

per

布列塔尼语

bre

巴什基尔语

bak

巴斯克语

baq

巴西葡萄牙语

pot

白俄罗斯语

bel

柏柏尔语

ber

邦板牙语

pam

保加利亚语

bul

北方萨米语

sme

北索托语

ped

本巴语

bem

比林语

bli

比斯拉马语

bis

俾路支语

bal

冰岛语

ice

波斯尼亚语

bos

博杰普尔语

bho

C

楚瓦什语

chv

聪加语

tso

D

丹麦语

dan

德语

de

鞑靼语

tat

掸语

sha

德顿语

tet

迪维希语

div

低地德语

log

E

俄语

ru

F

法语

fra

菲律宾语

fil

芬兰语

fin

梵语

san

弗留利语

fri

富拉尼语

ful

法罗语

fao

G

盖尔语

gla

刚果语

kon

高地索布语

ups

高棉语

hkm

格陵兰语

kal

格鲁吉亚语

geo

古吉拉特语

guj

古希腊语

gra

古英语

eno

瓜拉尼语

grn

H

韩语

kor

荷兰语

nl

胡帕语

hup

哈卡钦语

hak

海地语

ht

豪萨语

hau

黑山语

mot

J

吉尔吉斯语

kir

加利西亚语

glg

加拿大法语

frn

加泰罗尼亚语

cat

捷克语

cs

K

卡拜尔语

kab

卡纳达语

kan

卡努里语

kau

卡舒比语

kah

康瓦尔语

cor

科萨语

xho

科西嘉语

cos

克里克语

cre

克里米亚鞑靼语

cri

克林贡语

kli

克罗地亚语

hrv

克丘亚语

que

克什米尔语

kas

孔卡尼语

kok

库尔德语

kur

L

拉丁语

lat

老挝语

lao

罗马尼亚语

rom

拉特加莱语

lag

拉脱维亚语

lav

林堡语

lim

林加拉语

lin

卢干达语

lug

卢森堡语

ltz

卢森尼亚语

ruy

卢旺达语

kin

立陶宛语

lit

罗曼什语

roh

罗姆语

ro

逻辑语

loj

M

马来语

may

缅甸语

bur

马拉地语

mar

马拉加斯语

mg

马拉雅拉姆语

mal

马其顿语

mac

马绍尔语

mah

迈蒂利语

mai

曼克斯语

glv

毛里求斯克里奥尔语

mau

毛利语

mao

孟加拉语

ben

马耳他语

mlt

苗语

hmn

N

挪威语

nor

那不勒斯语

nea

南恩德贝莱语

nbl

南非荷兰语

afr

南索托语

sot

尼泊尔语

nep

P

葡萄牙语

pt

旁遮普语

pan

帕皮阿门托语

pap

普什图语

pus

Q

齐切瓦语

nya

契维语

twi

切罗基语

chr

R

日语

jp

瑞典语

swe

S

萨丁尼亚语

srd

萨摩亚语

sm

塞尔维亚-克罗地亚语

sec

塞尔维亚语

srp

桑海语

sol

僧伽罗语

sin

世界语

epo

书面挪威语

nob

斯洛伐克语

sk

斯洛文尼亚语

slo

斯瓦希里语

swa

索马里语

som

塞尔维亚语(西里尔

src

T

泰语

th

土耳其语

tr

塔吉克语

tgk

泰米尔语

tam

他加禄语

tgl

提格利尼亚语

tir

泰卢固语

tel

突尼斯阿拉伯语

tua

土库曼语

tuk

W

乌克兰语

ukr

瓦隆语

wln

威尔士语

wel

文达语

ven

沃洛夫语

wol

乌尔都语

urd

X

西班牙语

spa

希伯来语

heb

希腊语

el

匈牙利语

hu

西弗里斯语

fry

西里西亚语

sil

希利盖农语

hil

下索布语

los

夏威夷语

haw

新挪威语

nno

西非书面语

nqo

信德语

snd

修纳语

sna

宿务语

ceb

叙利亚语

syr

巽他语

sun

Y

英语

en

印地语

hi

印尼语

id

意大利语

it

越南语

vie

意第绪语

yid

因特语

ina

亚齐语

ach

印古什语

ing

伊博语

ibo

伊多语

ido

约鲁巴语

yor

亚美尼亚语

arm

伊努克提图特语

iku

伊朗语

ir

Z

中文(简体)

zh

中文(繁体)

cht

中文(文言文)

wyw

中文(粤语)

yue

扎扎其语

zaz

中古法语

frm

祖鲁语

zul

爪哇语

jav

错误码

含义

解决方案

52000

成功

52001

请求超时

请重试

52002

系统错误

请重试

52003

未授权用户

请检查appid是否正确或者服务是否开通

54000

必填参数为空

请检查是否少传参数

54001

签名错误

请检查您的签名生成方法

54003

访问频率受限

请降低您的调用频率,或进行身份认证后切换为高级版/尊享版

54004

账户余额不足

请前往管理控制台为账户充值

54005

长query请求频繁

请降低长query的发送频率,3s后再试

58000

客户端IP非法

检查个人资料里填写的IP地址是否正确,可前往开发者信息-基本信息修改

58001

译文语言方向不支持

检查译文语言是否在语言列表里

58002

服务当前已关闭

请前往管理控制台开启服务

90107

认证未通过或未生效

请前往我的认证查看认证进度