色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

瀏覽:3日期:2022-07-08 16:04:57

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

批量文檔翻譯工具的使用

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

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

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

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

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

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

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

開發(fā)過程

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

1、個(gè)人開發(fā)者賬號(hào)注冊(cè)

首先,需要注冊(cè)個(gè)人的開發(fā)者賬號(hào)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1)API接口介紹

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

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

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

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

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

字段名 類型 含義 必填 備注 q text 待翻譯文本 True 必須是UTF-8編碼 from text 源語(yǔ)言 True 參考下方 支持語(yǔ)言 (可設(shè)置為auto) to text 目標(biāo)語(yǔ)言 True 參考下方 支持語(yǔ)言 (可設(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 當(dāng)前UTC時(shí)間戳(秒) true TimeStamp ext text 翻譯結(jié)果音頻格式,支持mp3 false mp3 voice text 翻譯結(jié)果發(fā)音選擇 false 0為女聲,1為男聲。默認(rèn)為女聲 strict text 是否嚴(yán)格按照指定from和to進(jìn)行翻譯:true/false false 如果為false,則會(huì)自動(dòng)中譯英,英譯中。默認(rèn)為false

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

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

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

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

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

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

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

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('提示','無(wú)文件')

類translate定義如下:

import osfrom translatetool import connectclass 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é)果存儲(chǔ)路徑 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é)果為一個(gè)數(shù)組 return result

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

# input輸入待翻譯字段,fromlanguage待翻譯的語(yǔ)言,tolanguage翻譯成的目標(biāo)語(yǔ)言# 返回翻譯的字段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ā)過程十分順利,僅有一個(gè)小插曲,最開始調(diào)用API總是返回錯(cuò)誤碼206(即時(shí)間戳錯(cuò)誤),最后發(fā)現(xiàn)是我的系統(tǒng)時(shí)間比標(biāo)準(zhǔn)時(shí)間慢了十分鐘 - - #

總結(jié)

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

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

以上就是python調(diào)用有道智云API實(shí)現(xiàn)文件批量翻譯的詳細(xì)內(nèi)容,更多關(guān)于python 文件批量翻譯的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 好叼操这里只有精品 | 久久精品国产免费一区 | 国产成人91高清精品免费 | 亚洲国产精品一区二区首页 | 久久久久久久久综合 | 日本三级香港三级人妇r | 久草手机在线视频 | 五月激激激综合网色播免费 | 国产深夜福利视频在线播放 | 国产成年人| 亚洲精品片 | 免费韩国美女爽快一级毛片 | 国产一区欧美二区 | 亚洲综合一区二区不卡 | 精品一区二区在线观看 | 精品国产日韩久久亚洲 | 欧美成人一级毛片 | 九九九九九九精品免费 | 男人天堂男人天堂 | 免费日韩在线视频 | 日韩美女爱爱 | 69成人做爰视频在线观看 | 分享一个无毒不卡免费国产 | 免费a级片网站 | 欧美一级毛片免费高清aa | 性福利视频 | 15—17女人毛片 | 国产呦系列呦交 | 欧美在线成人午夜影视 | 成人黄色一级毛片 | 久久亚洲欧洲日产国码 | 国产丝袜不卡一区二区 | 欧美一区二区三区高清视频 | 寡妇一级毛片 | 久久精品99精品免费观看 | 一级特黄特黄的大片免费 | 成人免费观看网欧美片 | 国产黄毛片 | 国产中的精品一区的 | 洋老外米糕国产一区二区 | 成人在线网 |