<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python給女朋友翻譯化妝品標(biāo)簽,瞬間解決生存問題

          共 7387字,需瀏覽 15分鐘

           ·

          2021-07-17 17:42

          最近小編遇到一個(gè)生存問題,女朋友讓我給她翻譯英文化妝品標(biāo)簽。美其名曰:"程序猿每天英語開發(fā),英文一定很好吧,來幫我翻譯翻譯化妝品成分",”來,幫我看看這個(gè)面膜建議敷幾分鐘“。。。??磥沓饩拶Y買化妝品不算完,還需要會(huì)各種英文介紹。

          默默收起大學(xué)考的一摞429分的四級證書,我打開了IDE。。。我打算開發(fā)一個(gè)能批量翻譯的圖片的demo,把家里的各種化妝品都翻譯好。機(jī)智如我,是不會(huì)自己從訓(xùn)練模型做起的,打開有道智云的友好的AI接口頁面 ,果然有圖片翻譯服務(wù),體驗(yàn)了一下可是真不錯(cuò),于是果斷使用。

          效果展示

          Demo在這里,一起來看看效果吧:

          識別過程如下:

          演示

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

          result-定妝

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

          result-可萊斯

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

          result-櫻花水

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

          result2

          調(diào)用API的準(zhǔn)備工作——生成調(diào)用所需要的應(yīng)用id和密鑰

          根據(jù)有道智云的接口約定,需要先在有道智云的個(gè)人頁面上生成調(diào)用所需要的應(yīng)用id和密鑰,以便作為你的調(diào)用標(biāo)識以及收費(fèi)參考。。

          具體步驟是:在有道智云的個(gè)人頁面上創(chuàng)建實(shí)例、創(chuàng)建應(yīng)用、綁定應(yīng)用和實(shí)例,獲取調(diào)用接口用到的應(yīng)用的id和密鑰。具體個(gè)人注冊的過程和應(yīng)用創(chuàng)建過程詳見文章分享一次批量文件翻譯的開發(fā)過程

          實(shí)例

          開發(fā)過程介紹

          1、api接口介紹

          先介紹下該工程的核心部分,有道智云圖片翻譯服務(wù)的調(diào)用接口

          API HTTPS地址:https://openapi.youdao.com/ocrtransapi

          接口調(diào)用方式:POST

          請求格式:表單

          相應(yīng)格式:JSON

          接口調(diào)用參數(shù)

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

          字段名類型含義必填備注
          typetext文件上傳類型True目前支持Base64,請置該字段值為1
          fromtext源語言True參考下方的 支持語言 (可設(shè)置為auto)
          totext目標(biāo)語言True參考下方的 支持語言 (可設(shè)置為auto)
          appKeytext應(yīng)用IDTrue可在 應(yīng)用管理 查看
          salttextUUIDTrue1995882C5064805BC30A39829B779D7B
          signtext簽名Truemd5(應(yīng)用Id+q+salt+應(yīng)用密鑰)
          exttext翻譯結(jié)果音頻格式,支持mp3falsemp3
          qtext要識別的圖片truetype為1時(shí)必填,圖片的Base64編碼
          docTypetext服務(wù)器響應(yīng)類型,目前只支持jsonfalsejson
          rendertext是否需要服務(wù)端返回渲染的圖片,0:否;1:是,默認(rèn)是0false0
          nullIsErrortext如果ocr沒有檢測到文字,是否返回錯(cuò)誤,false:否;true:是,默認(rèn)是falsefalse注意是字符串

          簽名生成方法如下:
          1、將請求參數(shù)中的 
          應(yīng)用ID appKey , 圖片的Base64編碼 q ,UUID salt 和 應(yīng)用密鑰 按照 應(yīng)用ID+q+salt+應(yīng)用密鑰的順序拼接得到字符串 str 。
          2、對字符串 
          str 做 md5,得到32位大寫的 sign (參考Java生成MD5示例,可點(diǎn)擊右側(cè)的JAVA示例)。

          輸出結(jié)果

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

          字段名字段說明
          orientation圖片所對應(yīng)的方向
          lanFromocr所識別出來認(rèn)為的圖片中的語言
          textAngle圖片的傾斜角度
          errorCode錯(cuò)誤碼
          lanTo目標(biāo)語言
          resRegions圖片翻譯的具體內(nèi)容
          -boundingBox區(qū)域范圍,四個(gè)值:左上角的x值,左上角的y值,區(qū)域的的寬,區(qū)域的高 例如:134,0,1066,249
          -linesCount行數(shù)(用于前端排版)
          -lineheight行高
          -context該區(qū)域的原文
          -linespace行間距
          -tranContent翻譯結(jié)果

          2、詳細(xì)開發(fā)

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

          1、界面部分

          主要元素:


          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)


          root.mainloop()

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

          def get_files():
              files = filedialog.askopenfilenames(filetypes=[('text files''.jpg')])
              translate.file_paths=files
              if files:
                  for file in files:
                      text1.insert(tk.END, file + '\n')
                      text1.update()
              else:
                  print('你沒有選擇任何文件')


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

          def set_result_path():
              result_path=filedialog.askdirectory()
              translate.result_root_path=result_path
              text2.insert(tk.END,result_path)

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

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

          2、批量圖片處理

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

          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


              def translate_files(self):
                  for file_path in self.file_paths: #對批量圖片逐個(gè)處理
                      file_name=os.path.basename(file_path)
                      print('==========='+file_path+'===========')
                      trans_reult=self.translate_use_netease(file_path) #對單個(gè)圖片調(diào)用接口
                      resul_file=open(self.result_root_path+'/result_'+file_name.split('.')[0]+'.txt','w').write(trans_reult)     #返回結(jié)果寫入


              def translate_use_netease(self,file_content):  #調(diào)用有道接口,并返回結(jié)果
                  result= connect(file_content)
                  return result
          3、有道api調(diào)用

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

          def connect(file_content,fromLan,toLan):
              f = open(file_content, 'rb')  # 二進(jìn)制方式打開圖文件
              q = base64.b64encode(f.read()).decode('utf-8')  # 讀取文件內(nèi)容,轉(zhuǎn)換為base64編碼
              f.close()
              data = {}
              # data['from'] = '源語言'
              # data['to'] = '目標(biāo)語言'
              data['from'] = 'auto'
              data['to'] = 'auto'
              data['type'] = '1'
              data['q'] = q
              salt = str(uuid.uuid1())
              signStr = APP_KEY + q + salt + APP_SECRET
              sign = encrypt(signStr)
              data['appKey'] = APP_KEY
              data['salt'] = salt
              data['sign'] = sign

              response = do_request(data)
              result=json.loads(str(response.content, encoding="utf-8"))
              print(result)

              translateResults=result['resRegions']
              print(translateResults)
              pictransresult=""
              for i in translateResults:
                  pictransresult=pictransresult+i['tranContent']+"\n"
              return pictransresult

          總結(jié)

          又是一次愉快的開發(fā)體驗(yàn),而且還是為數(shù)不多的求生成功體驗(yàn) : P ,沒想到借助開放平臺(tái)的力量,圖像識別,自然語言處理變得如此易如反掌,只要能正確發(fā)起請求,就能得到不錯(cuò)的翻譯結(jié)果,剩下大把的時(shí)間用來和女朋友炫技,這感覺——爽!

          文章轉(zhuǎn)載:SegmentFault
          (版權(quán)歸原作者所有,侵刪)

          點(diǎn)擊下方“閱讀原文”查看更多

          瀏覽 28
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  精品国产乱码一区二区 | www.一区二区三区 | 国产日韩欧美操逼 | 超碰最新在线观看 | 麻豆传媒肏逼视频 |