Python給女朋友翻譯化妝品標(biāo)簽,瞬間解決生存問(wèn)題
最近小編遇到一個(gè)生存問(wèn)題,女朋友讓我給她翻譯英文化妝品標(biāo)簽。美其名曰:"程序猿每天英語(yǔ)開發(fā),英文一定很好吧,來(lái)幫我翻譯翻譯化妝品成分",”來(lái),幫我看看這個(gè)面膜建議敷幾分鐘“。。。??磥?lái)斥巨資買化妝品不算完,還需要會(huì)各種英文介紹。
默默收起大學(xué)考的一摞429分的四級(jí)證書,我打開了IDE。。。我打算開發(fā)一個(gè)能批量翻譯的圖片的demo,把家里的各種化妝品都翻譯好。機(jī)智如我,是不會(huì)自己從訓(xùn)練模型做起的,打開有道智云的友好的AI接口頁(yè)面 ,果然有圖片翻譯服務(wù),體驗(yàn)了一下可是真不錯(cuò),于是果斷使用。
效果展示
Demo在這里,一起來(lái)看看效果吧:
識(shí)別過(guò)程如下:

逐個(gè)看看效果哈!make up for ever 雖然沒(méi)翻譯成玫珂菲,哈哈哈但是關(guān)鍵詞長(zhǎng)期保濕、固定噴霧都翻譯出來(lái)了~~棒

這個(gè)更是不明覺(jué)厲,韓文、英文混合都能翻譯~~~

櫻花水的表現(xiàn)也不錯(cuò)哦~

再亂入一個(gè)開起來(lái)更像包裝盒的圖片識(shí)別,效果不錯(cuò),沒(méi)受圖片上文字傾斜等影響 :

調(diào)用API的準(zhǔn)備工作——生成調(diào)用所需要的應(yīng)用id和密鑰
根據(jù)有道智云的接口約定,需要先在有道智云的個(gè)人頁(yè)面上生成調(diào)用所需要的應(yīng)用id和密鑰,以便作為你的調(diào)用標(biāo)識(shí)以及收費(fèi)參考。。
具體步驟是:在有道智云的個(gè)人頁(yè)面上創(chuàng)建實(shí)例、創(chuàng)建應(yīng)用、綁定應(yīng)用和實(shí)例,獲取調(diào)用接口用到的應(yīng)用的id和密鑰。具體個(gè)人注冊(cè)的過(guò)程和應(yīng)用創(chuàng)建過(guò)程詳見(jiàn)文章分享一次批量文件翻譯的開發(fā)過(guò)程

開發(fā)過(guò)程介紹
1、api接口介紹
先介紹下該工程的核心部分,有道智云圖片翻譯服務(wù)的調(diào)用接口
API HTTPS地址:https://openapi.youdao.com/ocrtransapi
接口調(diào)用方式:POST
請(qǐng)求格式:表單
相應(yīng)格式:JSON
接口調(diào)用參數(shù)
調(diào)用API需要向接口發(fā)送以下字段來(lái)訪問(wèn)服務(wù)。

簽名生成方法如下:
1、將請(qǐng)求參數(shù)中的?應(yīng)用ID appKey
?,?圖片的Base64編碼 q
?,UUID salt
?和?應(yīng)用密鑰
?按照?應(yīng)用ID+q+salt+應(yīng)用密鑰
的順序拼接得到字符串?str
?。
2、對(duì)字符串?str
?做 md5,得到32位大寫的?sign
?(參考Java生成MD5示例,可點(diǎn)擊右側(cè)的JAVA示例)。
輸出結(jié)果
返回的結(jié)果是json格式,具體說(shuō)明如下:

2、詳細(xì)開發(fā)
這個(gè)demo使用python3開發(fā),包括maindow.py,transclass.py,pictranslate.py三個(gè)文件。maindow.py主要實(shí)現(xiàn)界面部分,使用python自帶的tkinter庫(kù),來(lái)進(jìn)行圖片文件選擇、選擇結(jié)果存放路徑。transclass.py實(shí)現(xiàn)了圖片讀取、處理等邏輯,最后通過(guò)pictranslate.py中的方法來(lái)調(diào)用圖片翻譯API。
1、界面部分
主要元素:

獲取待翻譯圖片文件的方法(此處設(shè)置的僅支持.jpg文件):

獲取結(jié)果存儲(chǔ)路徑:

翻譯按鈕,調(diào)用了translate_files,該文件中的translate_files()方法最終調(diào)用了translate類的translate_files()方法:

2、批量圖片處理
transclass.py實(shí)現(xiàn)了圖片讀取、處理等邏輯,Translate類定義如下:

3、有道api調(diào)用
pictranslate.py中封裝了調(diào)用有道智云API的一些方法,其中最核心的是connect()方法,按照接口要求拼接了所需參數(shù),發(fā)起請(qǐng)求并返回結(jié)果。

總結(jié)
又是一次愉快的開發(fā)體驗(yàn),而且還是為數(shù)不多的求生成功體驗(yàn) : P ,沒(méi)想到借助開放平臺(tái)的力量,圖像識(shí)別,自然語(yǔ)言處理變得如此易如反掌,只要能正確發(fā)起請(qǐng)求,就能得到不錯(cuò)的翻譯結(jié)果,剩下大把的時(shí)間用來(lái)和女朋友炫技,這感覺(jué)——爽!
文章轉(zhuǎn)載:SegmentFault
(版權(quán)歸原作者所有,侵刪)