欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python調(diào)用有道智云API實現(xiàn)文件批量翻譯

 更新時間:2020年10月10日 16:12:29   作者:程序媛Danny  
這篇文章主要介紹了python如何調(diào)用有道智云API實現(xiàn)文件批量翻譯,幫助大家更好得理解和使用python,感興趣的朋友可以了解下

最近工作過程中,需要對一批文件進行漢譯英的翻譯,對單個文檔手工復(fù)制、粘貼的翻譯方式過于繁瑣,考慮到工作的重復(fù)性和本人追求提高效率、少動手(懶),想通過調(diào)用已有的接口的方法,自己實現(xiàn)一個批量翻譯工具,一勞永逸。在網(wǎng)上找了幾款翻譯API,通過對比翻譯的結(jié)果和學(xué)習(xí)成本,選擇了有道智云的服務(wù),自己開發(fā)了一個批量翻譯的小軟件。詳細記錄一下使用和開發(fā)過程,后面的小伙伴們有相關(guān)需求,可以參考。

批量文檔翻譯工具的使用

我這里開發(fā)批量文檔翻譯工具使用python作為開發(fā)工具,功能如下:

     1)通過文件夾選擇多個文檔;

     2)可以將多個文檔的翻譯結(jié)果存到目標文件夾下。

話不多說,看圖↓↓↓↓↓

部分翻譯結(jié)果展示(涉及工作內(nèi)容的保密性,這里用荷塘月色作為樣例):

開發(fā)過程

下面開始詳細介紹調(diào)用有道智云API接口的步驟和軟件開發(fā)的過程:

1、個人開發(fā)者賬號注冊

首先,需要注冊個人的開發(fā)者賬號。

在官網(wǎng)點擊注冊,然后填寫個人資料。即可完成注冊,官網(wǎng)地址:http://ai.youdao.com/gw.s#/

2、 創(chuàng)建應(yīng)用和實例

注冊成功并登錄后個人中心頁面如下圖,有道智云提供了自然語言翻譯、文字識別、語音合成、語音測評等服務(wù)接口。 這些服務(wù)接口都是通過以實例的方式運行的,通過應(yīng)用進行管理的。需要分別創(chuàng)建實例、創(chuàng)建應(yīng)用,通過應(yīng)用獲取應(yīng)用ID和應(yīng)用密鑰等信息。

我這里用到的是自然語言翻譯服務(wù),首先,需要分別創(chuàng)建一個應(yīng)用、創(chuàng)建一個自然語音翻譯的實例;其次,需要將實例綁定到應(yīng)用上。最后,就可以通過應(yīng)用的應(yīng)用ID、應(yīng)用密鑰調(diào)用自然語音翻譯api接口了。有道平臺會對不同的實例、應(yīng)用的使用情況進行記錄、分析、收費。剛剛注冊的體驗者會有免費體驗字數(shù)和50元的體驗金哦(加客服貌似還會有額外的50元的)。

創(chuàng)建實例的步驟:

根據(jù)使用需求,選擇對應(yīng)服務(wù)(“自然語言翻譯”/“文字識別OCR”/“語音合成TTS”/“語音識別ASR”/“智能語音評測”/“多平臺編輯器”)->“創(chuàng)建實例”,按步驟完成實例創(chuàng)建。

創(chuàng)建應(yīng)用并綁定實例(應(yīng)用接口分為三種:API、安卓、ios接口):

點擊“應(yīng)用管理”->“我的應(yīng)用”->“創(chuàng)建應(yīng)用”,填寫應(yīng)用名稱等相關(guān)信息,選擇接入方式,并綁定我們所創(chuàng)建的實例,完成應(yīng)用創(chuàng)建。我們這里用到的是API方式接入,安卓、ios接口需要根據(jù)提示填寫相應(yīng)的信息,詳見官網(wǎng)新手指南。

應(yīng)用創(chuàng)建成功后,可獲取應(yīng)用ID(appKey)和應(yīng)用密鑰等信息,這些信息是調(diào)用API接口必不可少的參數(shù)。

3、接口調(diào)用及代碼實現(xiàn)

1)API接口介紹

下面介紹API接口的調(diào)用方法

文本翻譯API HTTPS地址:https://openapi.youdao.com/api

調(diào)用規(guī)則:在調(diào)用集成文本翻譯API時,需遵循以下規(guī)則。

規(guī)則 描述
傳輸方式 HTTPS
請求方式 GET/POST
字符編碼 統(tǒng)一使用UTF-8 編碼
請求格式 表單
響應(yīng)格式 JSON

調(diào)用傳參:調(diào)用API需要向接口發(fā)送以下字段來訪問服務(wù)。

字段名 類型 含義 必填 備注
q text 待翻譯文本 True 必須是UTF-8編碼
from text 源語言 True 參考下方 支持語言 (可設(shè)置為auto)
to text 目標語言 True 參考下方 支持語言 (可設(shè)置為auto)
appKey text 應(yīng)用ID True 可在 應(yīng)用管理 查看
salt text UUID True UUID
sign text 簽名 True sha256(應(yīng)用ID+input+salt+curtime+應(yīng)用密鑰)
signType text 簽名類型 True v3
curtime text 當前UTC時間戳(秒) true TimeStamp
ext text 翻譯結(jié)果音頻格式,支持mp3 false mp3
voice text 翻譯結(jié)果發(fā)音選擇 false 0為女聲,1為男聲。默認為女聲
strict text 是否嚴格按照指定from和to進行翻譯:true/false false 如果為false,則會自動中譯英,英譯中。默認為false

簽名生成方法如下:
signType=v3;
sign=sha256(應(yīng)用ID+input+salt+curtime+應(yīng)用密鑰);
其中,input的計算方式為:input=q前10個字符 + q長度 + q后10個字符(當q長度大于20)或 input=q字符串(當q長度小于等于20);

返回結(jié)果格式:返回的結(jié)果是json格式,具體說明如下:

字段名 類型 含義 備注
errorCode text 錯誤返回碼 一定存在
query text 源語言 查詢正確時,一定存在
translation Array 翻譯結(jié)果 查詢正確時,一定存在
basic text 詞義 基本詞典,查詞時才有
web Array 詞義 網(wǎng)絡(luò)釋義,該結(jié)果不一定存在
l text 源語言和目標語言 一定存在
dict text 詞典deeplink 查詢語種為支持語言時,存在
webdict text webdeeplink 查詢語種為支持語言時,存在
tSpeakUrl text 翻譯結(jié)果發(fā)音地址 翻譯成功一定存在,需要應(yīng)用綁定語音合成實例才能正常播放 否則返回110錯誤碼
speakUrl text 源語言發(fā)音地址 翻譯成功一定存在,需要應(yīng)用綁定語音合成實例才能正常播放 否則返回110錯誤碼
returnPhrase Array 單詞校驗后的結(jié)果 主要校驗字母大小寫、單詞前含符號、中文簡繁體

當返回的結(jié)果errorCode為 0 時說明調(diào)用成功,不為0時,則會出現(xiàn)不同含義的錯誤碼。詳細含義可查閱官方開發(fā)文檔。

2)批量文檔翻譯開發(fā)

批量翻譯demo使用python3實現(xiàn),為了方便測試,我用tkinter做了簡單的界面,用來讀取待翻譯文檔,指定結(jié)果存儲路徑,為了最大化簡化開發(fā)過程,降低測試的時間成本,目前只實現(xiàn)了讀取.txt類型文件的方法。

整個demo分為三個文件,mainwindow.py,translate.py和translatetool.py,mainwindow為UI部分的代碼,translate中實現(xiàn)了批量讀取文檔并翻譯保存的邏輯,translatetool為根據(jù)示例代碼改造后的翻譯方法,需調(diào)用其他平臺API時,亦可封裝相應(yīng)方法,增加了項目的擴展性。

mainwindow的元素如下:

root=tk.Tk()
root.title("netease youdao translation test")
frm = tk.Frame(root)
frm.grid(padx='50', pady='50')
btn_get_file = tk.Button(frm, text='選擇待翻譯文件', command=get_files)
btn_get_file.grid(row=0, column=0, ipadx='3', ipady='3', padx='10', pady='20')
text1 = tk.Text(frm, width='40', height='10')
text1.grid(row=0, column=1)
btn_get_result_path=tk.Button(frm,text='選擇翻譯結(jié)果路徑',command=set_result_path)
btn_get_result_path.grid(row=1,column=0)
text2=tk.Text(frm,width='40', height='2')
text2.grid(row=1,column=1)
btn_sure=tk.Button(frm,text="翻譯",command=translate_files)
btn_sure.grid(row=2,column=1)

其中translate_files()方法最終調(diào)用了translate類的translate_files()方法:

def translate_files():
 if translate.file_paths:
  translate.translate_files()
  tk.messagebox.showinfo("提示","搞定")
 else :
  tk.messagebox.showinfo("提示","無文件")

類translate定義如下:

import os
from translatetool import connect

class Translate():
 def __init__(self,name,file_paths,result_root_path,trans_type):
  self.name=name
  self.file_paths=file_paths							# 待翻譯文件路徑
  self.result_root_path=result_root_path				# 翻譯結(jié)果存儲路徑
  self.trans_type=trans_type
  
 # 翻譯過程:讀取文件-掉用有道api-解析返回信息-保存
 def translate_files(self):
  for file_path in self.file_paths:
   file_name=os.path.basename(file_path)
   file_content=open(file_path,encoding='utf-8').read()
   trans_reult=self.translate_use_netease(file_content)
   resul_file=open(self.result_root_path+'/result_'+file_name,'w').write(trans_reult)
 def translate_use_netease(self,file_content):
  result=','.join(connect(file_content,'zh-CH','EN'))	 # 翻譯API返回結(jié)果為一個數(shù)組
  return result

調(diào)用有道API主要方法為connect(),根據(jù)API的簽名信息等要求組成data并發(fā)送請求,解析返回的json:

# input輸入待翻譯字段,fromlanguage待翻譯的語言,tolanguage翻譯成的目標語言
# 返回翻譯的字段
def connect(inputtext,fromlanguage,tolanguage):
 q=inputtext
 data = {}
 data['from'] = fromlang
 data['to'] = tolang
 data['signType'] = 'v3'
 curtime = str(int(time.time()))
 data['curtime'] = curtime
 salt = str(uuid.uuid1())
 signStr = APP_KEY + truncate(q) + salt + curtime + APP_SECRET
 sign = encrypt(signStr)
 data['appKey'] = APP_KEY
 data['q'] = q
 data['salt'] = salt
 data['sign'] = sign
 print(data)
 response = do_request(data)
 print(response.content)
 j = json.loads(str(response.content, encoding="utf-8"))["translation"]
 return j

完整demo代碼地址:https://github.com/LemonQH/BatchFileTraslationProgram/tree/master

得益于API的學(xué)習(xí)成本之低,接口調(diào)用部分的開發(fā)過程十分順利,僅有一個小插曲,最開始調(diào)用API總是返回錯誤碼206(即時間戳錯誤),最后發(fā)現(xiàn)是我的系統(tǒng)時間比標準時間慢了十分鐘 - - #

總結(jié)

對于我此次的需要翻譯的文檔需求來說,有道智云贈送的字數(shù)和賬戶額度,已經(jīng)夠用了,但是如果想長期的使用下去,還是要付費的。最后發(fā)現(xiàn),有道智云在個人主頁中還提供了按小時統(tǒng)計當日實例調(diào)用次數(shù)和查詢字符數(shù)和按天統(tǒng)計歷史天數(shù)內(nèi)實例的調(diào)用次數(shù)和字符數(shù),對有需求的小伙伴,還可以記錄查看自己接口的翻譯量、實時調(diào)用量等狀態(tài)。

如上是我整個demo的開發(fā)過程。整體來說從注冊到調(diào)用有道智云API的過程還是比較順利的,而且每一步都有官方的詳細文檔可以參照。以至于主要開發(fā)時間都分配給了tkinter排版(順便吐槽下tkinter的“好用” :p)。

以上就是python調(diào)用有道智云API實現(xiàn)文件批量翻譯的詳細內(nèi)容,更多關(guān)于python 文件批量翻譯的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python內(nèi)置數(shù)據(jù)類型中的集合詳解

    Python內(nèi)置數(shù)據(jù)類型中的集合詳解

    這篇文章主要為大家詳細介紹了Python內(nèi)置數(shù)據(jù)類型中的集合,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • python 3利用BeautifulSoup抓取div標簽的方法示例

    python 3利用BeautifulSoup抓取div標簽的方法示例

    這篇文章主要介紹了python 3利用BeautifulSoup抓取div標簽的方法,文中給出了詳細的示例代碼供大家參考學(xué)習(xí),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • Python中參數(shù)打包和解包的實現(xiàn)

    Python中參數(shù)打包和解包的實現(xiàn)

    在Python中,打包和解包參數(shù)是一種操作方式,可以將多個參數(shù)打包成一個元組或字典,也可以將一個元組或字典解包成多個參數(shù),本文就來介紹一下如何使用
    2023-09-09
  • python常用的魔法方法(雙下劃線)

    python常用的魔法方法(雙下劃線)

    本文介紹一下python中常用的魔法方法以及面向?qū)ο笾蟹浅V匾膯卫J?。具有一定的參考價值,感興趣的可以了解一下
    2021-09-09
  • django 解決model中類寫不到數(shù)據(jù)庫中,數(shù)據(jù)庫無此字段的問題

    django 解決model中類寫不到數(shù)據(jù)庫中,數(shù)據(jù)庫無此字段的問題

    這篇文章主要介紹了django 解決model中類寫不到數(shù)據(jù)庫中,數(shù)據(jù)庫無此字段的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨想過來看看吧
    2020-05-05
  • python實現(xiàn)BP神經(jīng)網(wǎng)絡(luò)回歸預(yù)測模型

    python實現(xiàn)BP神經(jīng)網(wǎng)絡(luò)回歸預(yù)測模型

    這篇文章主要介紹了python實現(xiàn)BP神經(jīng)網(wǎng)絡(luò)回歸預(yù)測模型,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Django中多種重定向方法使用詳解

    Django中多種重定向方法使用詳解

    這篇文章主要介紹了Django中多種重定向方法使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • python獲取淘寶服務(wù)器時間的代碼示例

    python獲取淘寶服務(wù)器時間的代碼示例

    這篇文章主要介紹了python獲取淘寶服務(wù)器時間的代碼示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 基于python使用OpenCV進行物體輪廓排序

    基于python使用OpenCV進行物體輪廓排序

    這篇文章主要介紹了基于python使用OpenCV進行物體輪廓排序,在進行圖像處理過程中,我們經(jīng)常會遇到一些和物體輪廓相關(guān)的操作,我們直接使用Opencv的findContours函數(shù)可以很容易的得到每個目標的輪廓,但是可視化后,?這個次序是無序的,更多相關(guān)資料請參考下面文章內(nèi)容
    2022-01-01
  • django-rest-framework解析請求參數(shù)過程詳解

    django-rest-framework解析請求參數(shù)過程詳解

    這篇文章主要介紹了django-rest-framework解析請求參數(shù)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07

最新評論