最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 我用 python 给女朋友翻译化妆品标签

    正文概述 掘金(TrueDei)   2020-12-23   746

    我用 python 给女朋友翻译化妆品标签

    最近小编遇到一个生存问题,女朋友让我给她翻译英文化妆品标签。美其名曰:“程序猿每天英语开发, 英文一定很好吧,来帮我翻译翻译化妆品成分”,” 来,帮我看看这个面膜建议敷几分钟 “。。。。看来斥巨资买化妆品不算完,还需要会各种英文介绍。

    我用 python 给女朋友翻译化妆品标签

    默默收起大学考的一摞 429 分的四级证书,我打开了 IDE。。。我打算开发一个能批量翻译的图片的 demo,把家里的各种化妆品都翻译好。机智如我,是不会自己从训练模型做起的,打开有道智云的友好的 AI 接口页面 ,果然有图片翻译服务,体验了一下可是真不错,于是果断使用。

    效果展示

    Demo 在这里,一起来看看效果吧:

    识别过程如下:

    我用 python 给女朋友翻译化妆品标签

    逐个看看效果哈!make up for ever 虽然没翻译成玫珂菲,哈哈哈但是关键词长期保湿、固定喷雾都翻译出来了~~ 棒

    我用 python 给女朋友翻译化妆品标签

    这个更是不明觉厉, 韩文、英文混合都能翻译~~~

    我用 python 给女朋友翻译化妆品标签

    樱花水的表现也不错哦~

    我用 python 给女朋友翻译化妆品标签

    再乱入一个开起来更像包装盒的图片识别,效果不错,没受图片上文字倾斜等影响 :

    我用 python 给女朋友翻译化妆品标签

    调用 API 的准备工作——生成调用所需要的应用 id 和密钥

    根据有道智云的接口约定,需要先在有道智云的个人页面上生成调用所需要的应用 id 和密钥,以便作为你的调用标识以及收费参考。。

    具体步骤是:在有道智云的个人页面上创建实例、创建应用、绑定应用和实例,获取调用接口用到的应用的 id 和密钥。具体个人注册的过程和应用创建过程详见文章分享一次批量文件翻译的开发过程

    我用 python 给女朋友翻译化妆品标签

    开发过程介绍

    1、api 接口介绍

    先介绍下该工程的核心部分,有道智云图片翻译服务的调用接口

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

    接口调用方式:POST

    请求格式:表单

    相应格式:JSON

    接口调用参数

    调用 API 需要向接口发送以下字段来访问服务。

    字段名类型含义必填备注
    typetext文件上传类型True目前支持 Base64,请置该字段值为 1fromtext源语言True参考下方的 支持语言 (可设置为 auto)totext目标语言True参考下方的 支持语言 (可设置为 auto)appKeytext应用 IDTrue可在 应用管理 查看salttextUUIDTrue1995882C5064805BC30A39829B779D7Bsigntext签名Truemd5(应用 Id+q+salt + 应用密钥)exttext翻译结果音频格式,支持 mp3falsemp3qtext要识别的图片truetype 为 1 时必填, 图片的 Base64 编码docTypetext服务器响应类型,目前只支持 jsonfalsejsonrendertext是否需要服务端返回渲染的图片,0:否;1:是,默认是 0false0nullIsErrortext如果 ocr 没有检测到文字,是否返回错误,false:否;true:是,默认是 falsefalse注意是字符串

    签名生成方法如下: 1、将请求参数中的 应用ID appKey , 图片的Base64编码 q ,UUID salt应用密钥 按照 应用ID+q+salt+应用密钥的顺序拼接得到字符串 str 。 2、对字符串 str 做 md5,得到 32 位大写的 sign (参考 Java 生成 MD5 示例, 可点击右侧的 JAVA 示例)。

    输出结果

    返回的结果是 json 格式,具体说明如下:

    字段名字段说明
    orientation图片所对应的方向lanFromocr 所识别出来认为的图片中的语言textAngle图片的倾斜角度errorCode错误码lanTo目标语言resRegions图片翻译的具体内容-boundingBox区域范围,四个值: 左上角的 x 值,左上角的 y 值,区域的的宽,区域的高 例如:134,0,1066,249-linesCount行数(用于前端排版)-lineheight行高-context该区域的原文-linespace行间距-tranContent翻译结果

    2、详细开发

    这个 demo 使用 python3 开发,包括 maindow.py,transclass.py,pictranslate.py 三个文件。maindow.py 主要实现界面部分,使用 python 自带的 tkinter 库,来进行图片文件选择、选择结果存放路径。transclass.py 实现了图片读取、处理等逻辑,最后通过 pictranslate.py 中的方法来调用图片翻译 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='选择翻译结果路径',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()
    

    获取待翻译图片文件的方法(此处设置的仅支持. 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('你没有选择任何文件')
    

    获取结果存储路径:

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

    翻译按钮,调用了 translate_files,该文件中的 translate_files() 方法最终调用了 translate 类的 translate_files() 方法:

    def translate_files():
        if translate.file_paths:
            translate.translate_files()
            tk.messagebox.showinfo("提示","搞定")
        else :
            tk.messagebox.showinfo("提示","无文件")
    
    2、批量图片处理

    transclass.py 实现了图片读取、处理等逻辑,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  
            self.trans_type=trans_type
    
    
        def translate_files(self):
            for file_path in self.file_paths:	
                file_name=os.path.basename(file_path)
                print('==========='+file_path+'===========')
                trans_reult=self.translate_use_netease(file_path) 
                resul_file=open(self.result_root_path+'/result_'+file_name.split('.')[0]+'.txt','w').write(trans_reult)     
    
    
        def translate_use_netease(self,file_content):  
            result= connect(file_content)
            return result
    
    3、有道 api 调用

    pictranslate.py 中封装了调用有道智云 API 的一些方法,其中最核心的是 connect() 方法,按照接口要求拼接了所需参数,发起请求并返回结果。

    def connect(file_content,fromLan,toLan):
        f = open(file_content, 'rb')  
        q = base64.b64encode(f.read()).decode('utf-8')  
        f.close()
        data = {}
        
        
        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
    

    总结

    又是一次愉快的开发体验,而且还是为数不多的求生成功体验 : P ,没想到借助开放平台的力量,图像识别,自然语言处理变得如此易如反掌,只要能正确发起请求,就能得到不错的翻译结果,剩下大把的时间用来和女朋友炫技,这感觉——爽!

    项目地址:https://github.com/LemonQH/BatchPicTranslate

    truedei.blog.csdn.net/article/det…)


    起源地下载网 » 我用 python 给女朋友翻译化妆品标签

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元