电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python調用有道智云API實現文件批量翻譯

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

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

批量文檔翻譯工具的使用

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

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

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

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

python調用有道智云API實現文件批量翻譯

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

python調用有道智云API實現文件批量翻譯

開發過程

下面開始詳細介紹調用有道智云API接口的步驟和軟件開發的過程:

1、個人開發者賬號注冊

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

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

python調用有道智云API實現文件批量翻譯

2、 創建應用和實例

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

python調用有道智云API實現文件批量翻譯

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

創建實例的步驟:

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

python調用有道智云API實現文件批量翻譯

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

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

python調用有道智云API實現文件批量翻譯

應用創建成功后,可獲取應用ID(appKey)和應用密鑰等信息,這些信息是調用API接口必不可少的參數。

3、接口調用及代碼實現

1)API接口介紹

下面介紹API接口的調用方法

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

調用規則:在調用集成文本翻譯API時,需遵循以下規則。

規則 描述 傳輸方式 HTTPS 請求方式 GET/POST 字符編碼 統一使用UTF-8 編碼 請求格式 表單 響應格式 JSON

調用傳參:調用API需要向接口發送以下字段來訪問服務。

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

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

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

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

當返回的結果errorCode為 0 時說明調用成功,不為0時,則會出現不同含義的錯誤碼。詳細含義可查閱官方開發文檔。

2)批量文檔翻譯開發

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

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

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=’選擇翻譯結果路徑’,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()方法最終調用了translate類的translate_files()方法:

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

類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# 翻譯結果存儲路徑 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返回結果為一個數組 return result

調用有道API主要方法為connect(),根據API的簽名信息等要求組成data并發送請求,解析返回的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的學習成本之低,接口調用部分的開發過程十分順利,僅有一個小插曲,最開始調用API總是返回錯誤碼206(即時間戳錯誤),最后發現是我的系統時間比標準時間慢了十分鐘 - - #

總結

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

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

以上就是python調用有道智云API實現文件批量翻譯的詳細內容,更多關于python 文件批量翻譯的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 蒸汽吸附分析仪-进口水分活度仪|康宝百科 | 医学动画公司-制作3d医学动画视频-医疗医学演示动画制作-医学三维动画制作公司 | 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 铝合金线槽_铝型材加工_空调挡水板厂家-江阴炜福金属制品有限公司 | 上海租车公司_上海包车_奔驰租赁_上海商务租车_上海谐焕租车 | 继电器模组-IO端子台-plc连接线-省配线模组厂家-世麦德 | 混合反应量热仪-高温高压量热仪-微机差热分析仪DTA|凯璞百科 | 首页-恒温恒湿试验箱_恒温恒湿箱_高低温试验箱_高低温交变湿热试验箱_苏州正合 | PCB设计,PCB抄板,电路板打样,PCBA加工-深圳市宏力捷电子有限公司 | WF2户外三防照明配电箱-BXD8050防爆防腐配电箱-浙江沃川防爆电气有限公司 | 超声波清洗机-超声波清洗设备定制生产厂家 - 深圳市冠博科技实业有限公司 | 立式壁挂广告机厂家-红外电容触摸一体机价格-华邦瀛 | 防水试验机_防水测试设备_防水试验装置_淋雨试验箱-广州岳信试验设备有限公司 | 阻垢剂-反渗透缓蚀阻垢剂厂家-山东鲁东环保科技有限公司 | MOOG伺服阀维修,ATOS比例流量阀维修,伺服阀维修-上海纽顿液压设备有限公司 | 缓蚀除垢剂_循环水阻垢剂_反渗透锅炉阻垢剂_有机硫化物-郑州威大水处理材料有限公司 | 浙江宝泉阀门有限公司| 防锈油-助焊剂-光学玻璃清洗剂-贝塔防锈油生产厂家 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 立刷【微电签pos机】-嘉联支付立刷运营中心 | 辽宁资质代办_辽宁建筑资质办理_辽宁建筑资质延期升级_辽宁中杭资质代办 | 有源电力滤波装置-电力有源滤波器-低压穿排电流互感器|安科瑞 | 酒店品牌设计-酒店vi设计-酒店标识设计【国际级】VI策划公司 | 镀锌钢格栅_热镀锌格栅板_钢格栅板_热镀锌钢格板-安平县昊泽丝网制品有限公司 | 镀锌方管,无缝方管,伸缩套管,方矩管_山东重鑫致胜金属制品有限公司 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 超声波清洗机_超声波清洗机设备_超声波清洗机厂家_鼎泰恒胜 | 广西资质代办_建筑资质代办_南宁资质代办理_新办、增项、升级-正明集团 | 东莞市海宝机械有限公司-不锈钢分选机-硅胶橡胶-生活垃圾-涡电流-静电-金属-矿石分选机 | 喷码机,激光喷码打码机,鸡蛋打码机,手持打码机,自动喷码机,一物一码防伪溯源-恒欣瑞达有限公司 | 玻璃钢格栅盖板|玻璃钢盖板|玻璃钢格栅板|树篦子-长沙川皖玻璃钢制品有限公司 | 电池挤压试验机-自行车喷淋-车辆碾压试验装置-深圳德迈盛测控设备有限公司 | 玉米加工设备,玉米深加工机械,玉米糁加工设备.玉米脱皮制糁机 华豫万通粮机 | 冷却塔风机厂家_静音冷却塔风机_冷却塔电机维修更换维修-广东特菱节能空调设备有限公司 | 石栏杆_青石栏杆_汉白玉栏杆_花岗岩栏杆 - 【石雕之乡】点石石雕石材厂 | 福州甲醛检测-福建室内空气检测_环境检测_水质检测-福建中凯检测技术有限公司 | 东莞办公家具厂家直销-美鑫【免费3D效果图】全国办公桌/会议桌定制 | 电缆隧道在线监测-智慧配电站房-升压站在线监测-江苏久创电气科技有限公司 | 中央空调温控器_风机盘管温控器_智能_液晶_三速开关面板-中央空调温控器厂家 | 路面机械厂家| 恒温恒湿试验箱厂家-高低温试验箱维修价格_东莞环仪仪器_东莞环仪仪器 |