python调用百度通用翻译API进行翻译

本文详细介绍了如何使用Python调用百度通用翻译API进行中英互译。首先,需要在百度翻译开放平台注册成为开发者并获取APPID和秘钥。接着,查看技术文档理解API的接入方式、签名生成方法以及请求和响应参数。最后,展示了一个Python函数示例,该函数利用GET请求调用API进行翻译,并返回翻译结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python调用百度通用翻译API

1.百度翻译开放平台申请成为开发者

使用Baidu翻译API,首先需要去百度翻译开放平台申请成为开发者,在成为开发者之后,可获得APPID以及秘钥用于之后的API的调用。
百度翻译开放平台链接
申请成为开发者之后,申请使用百度翻译通用API可在【管理控制台】–【开发者信息】中查看自己的APPID以及秘钥。
在这里插入图片描述

2.查看平台提供的技术文档

  • 接入方式
    通用翻译API通过 HTTP 接口对外提供多语种互译服务。只需要通过调用通用翻译API,传入待翻译的内容,并指定要翻译的源语言(支持源语言语种自动检测)和目标语言种类,就可以得到相应的翻译结果。
    通用翻译API HTTP 地址:
    http://api.fanyi.baidu.com/api/trans/vip/translate
  • 签名生成方法
    签名是为了保证调用安全,使用 MD5 算法生成的一段字符串,生成的签名长度为 32 位,签名中的英文字符均为小写格式。
    生成方法:
    Step1: 将请求参数中的 APPID(appid), 翻译 query(q, 注意为UTF-8编码), 随机数(salt), 以及平台分配的密钥按照 appid+q+salt+密钥的顺序拼接得到字符串str。
    Step2: 对字符串 str 做 md5 ,得到 32 位小写的 sign。
  • 输入参数
    请求方式: 可使用 GET 或 POST 方式,如使用 POST 方式,Content-Type 请指定为:application/x-www-form-urlencoded
    字符编码:统一采用 UTF-8 编码格式.
    query 长度:为保证翻译质量,请将单次请求长度控制在 6000 bytes以内(汉字约为输入参数 2000 个)
    在这里插入图片描述
  • 输出参数
    返回的结果是json格式,包含以下字段:
    在这里插入图片描述

更加详细的文档内容可以参考通用翻译API接入文档

3.python调用百度翻译通用API进行翻译

中英互译的实现,可以根据需求对参数进行修改

def baiduTranslate(translate_text, flag=1):
    '''
    :param translate_text: 待翻译的句子,len(q)<2000
    :param flag: 1:原句子翻译成英文;0:原句子翻译成中文
    :return: 返回翻译结果。
    For example:
    q=我今天好开心啊!
    result = {'from': 'zh', 'to': 'en', 'trans_result': [{'src': '我今天好开心啊!', 'dst': "I'm so happy today!"}]}
    '''

    appid = 'xxxxx'  # 填写你的appid
    secretKey = 'xxxxxx'  # 填写你的密钥
    httpClient = None
    myurl = '/api/trans/vip/translate'  # 通用翻译API HTTP地址
    fromLang = 'auto'  # 原文语种

    if flag:
        toLang = 'en'  # 译文语种
    else:
        toLang = 'zh'  # 译文语种

    salt = random.randint(3276, 65536)

    sign = appid + translate_text + str(salt) + secretKey
    sign = hashlib.md5(sign.encode()).hexdigest()
    myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(translate_text) + '&from=' + fromLang + \
            '&to=' + toLang + '&salt=' + str(salt) + '&sign=' + sign

    # 建立会话,返回结果
    try:
        httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
        httpClient.request('GET', myurl)
        # response是HTTPResponse对象
        response = httpClient.getresponse()
        result_all = response.read().decode("utf-8")
        result = json.loads(result_all)

        # return result
        return result['trans_result'][0]['dst']

    except Exception as e:
        print(e)
    finally:
        if httpClient:
            httpClient.close()
if __name__ == '__main__':
    # 手动录入翻译内容,q存放
    # q = raw_input("please input the word you want to translate:")
    q = "介绍一下整本书,比如是传主的人生,或者作者写这本书的特色。可参看目录、序言或简介等资料。"
    '''
    flag=1 输入的句子翻译成英文
    flag=0 输入的句子翻译成中文
    '''
    result = baiduTranslate(q, flag=1)  # 百度翻译
    print("原句:"+q)
    print(result)

输出结果:
在这里插入图片描述

记录备用

### 使用Python通过百度翻译API实现照片翻译功能 为了利用Python调用百度翻译API来完成图片中的文字识别与翻译,主要分为两个部分:一是使用OCR技术从图像中提取文本;二是将获取到的文字传递给百度翻译API进行多语言转换。具体操作如下: #### OCR 图像转文本 百度AI开放平台提供了强大的OCR接口用于处理各种场景下的图文转化需求。对于想要读取并解析图片上的字符而言,可以先调用`General Basic API`(基础版通用文字识别),它能够满足大多数情况下对印刷体汉字以及英文字母的精准辨识。 ```python import requests from PIL import Image import base64 def get_access_token(api_key, secret_key): url = "https://aip.baidubce.com/oauth/2.0/token" params = { 'grant_type': 'client_credentials', 'client_id': api_key, 'client_secret': secret_key } response = requests.post(url, data=params) result = response.json() return result['access_token'] def ocr_image_to_text(image_path, access_token): request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic" f = open(image_path, 'rb') img = base64.b64encode(f.read()) params = {"image": img} headers = {'content-type': 'application/x-www-form-urlencoded'} request_url = request_url + "?access_token=" + access_token response = requests.post(request_url, data=params, headers=headers) words_result = [] if response: content = response.json() for item in content["words_result"]: words_result.append(item["words"]) return "\n".join(words_result) # 获取访问令牌 api_key = '<your_api_key>' secret_key = '<your_secret_key>' token = get_access_token(api_key, secret_key) # 将图片转化为可被翻译的文字串 text_from_image = ocr_image_to_text('example.jpg', token)[^2] ``` #### 文字翻译请求构建 当成功获得来自图片内的纯文本之后,则可以根据官方文档指导构造相应的POST请求向百度翻译API发送待译字符串。这里需要注意的是,在实际编码过程中应当妥善保管自己的API密钥信息,并按照规定格式设置必要的参数选项如源语言目标语种等。 ```python import urllib.parse import hashlib import random import time import json def translate(text, appid, key, to_lang='en'): salt = str(random.randint(32768, 65536)) sign_str = appid + text + salt + key m = hashlib.md5(sign_str.encode()) sign = m.hexdigest() url = '/api/trans/vip/translate' query_string = '?appid={}&q={}&from=auto&to={}&salt={}&sign={}'.format( appid, urllib.parse.quote(text), to_lang, salt, sign) full_url = 'http://api.fanyi.baidu.com' + url + query_string try: rsp = requests.get(full_url).json() dst_texts = [item['dst'] for item in rsp['trans_result']] return '\n'.join(dst_texts) except Exception as e: print(e) return None translated_text = translate(text_from_image, '<your_appid>', '<your_key>')[^1] print(translated_text) ``` 上述代码展示了如何结合OCR技术和百度翻译API实现从图片到指定语言文本的有效转变过程[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山风wind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值