0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

女友让翻译化妆品标签 看大佬如何用Python轻松解决

阿铭linux 来源:博客园 作者:无毁的湖光-Al 2021-08-25 17:27 次阅读

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

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

效果展示

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

识别过程如下:

演示

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

result-定妆

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

result-可莱斯

樱花水的表现也不错哦~

result-樱花水

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

result2

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

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

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

实例

开发过程介绍

1、api接口介绍

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

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

接口调用方式:POST

请求格式:表单

相应格式:JSON

接口调用参数

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

字段名类型含义必填备注

typetext文件上传类型True目前支持Base64,请置该字段值为1

fromtext源语言True参考下方的 支持语言 (可设置为auto)

totext目标语言True参考下方的 支持语言 (可设置为auto)

appKeytext应用IDTrue可在 应用管理 查看

salttextUUIDTrue1995882C5064805BC30A39829B779D7B

signtext签名Truemd5(应用Id+q+salt+应用密钥)

exttext翻译结果音频格式,支持mp3falsemp3

qtext要识别的图片truetype为1时必填,图片的Base64编码

docTypetext服务器响应类型,目前只支持jsonfalsejson

rendertext是否需要服务端返回渲染的图片,0:否;1:是,默认是0false0

nullIsErrortext如果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 + ‘

’)

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’) # 读取文件内容,转换为base64编码

f.close()

data = {}

# data[‘from’] = ‘源语言’

# data[‘to’] = ‘目标语言’

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’]+“

return pictransresult

总结

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

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器翻译
    +关注

    关注

    0

    文章

    139

    浏览量

    14864
  • python
    +关注

    关注

    55

    文章

    4777

    浏览量

    84404

原文标题:Python给女朋友翻译化妆品标签,瞬间解决生存问题

文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    何用python控制usb2any?

    我想用python控制usb2any,在网上搜索后得到的关于usb2any的资料很少,是否有官方的usb2any函数库?
    发表于 11-08 14:36

    Python常用函数大全

    Python 世界里,有一些宝藏函数和模块,它们可以你编程更轻松、代码更高效。这篇文章将带你一一认识这些神器,你的开发生活瞬间轻松
    的头像 发表于 10-27 17:20 152次阅读

    何用python控制usb2any?

    我想用python控制usb2any,在网上搜索后得到的关于usb2any的资料很少,是否有官方的usb2any函数库?
    发表于 09-27 06:44

    气密性检测仪如何检测化妆品的密封性-岳信仪器

    化妆品行业,产品的密封性能非常重要,直接关系到化妆品的质量、安全性和保质期。气密性检测仪作为一种有效的检测工具,在保证化妆品的密封性能方面发挥着重要作用。根据压力变化或气体流量的测量,气密性检测仪
    的头像 发表于 09-12 11:33 299次阅读
    气密性检测仪如何检测<b class='flag-5'>化妆品</b>的密封性-岳信仪器

    利用化妆品密封测试仪:提升产品竞争力的关键一步

    化妆品行业,产品质量的稳定性和安全性是赢得消费者信任、提高品牌竞争力的核心因素。化妆品的密封性能直接关系到产品的保质期、使用效果和用户体验。因此,严格检测和评估产品的密封性能,使用化妆品密封
    的头像 发表于 08-29 10:58 186次阅读
    利用<b class='flag-5'>化妆品</b>密封测试仪:提升产品竞争力的关键一步

    腾云驭智出海时 IBM如何用1%的数据你与众不同

    布等几个方面,分享了IBM混合云与AI为中国企业出海提供有力支持的最新进展和独特价值。以下是中关村在线记者徐鹏的深度报道(已获授权转载)。   腾云驭智出海时 IBM如何用1%的数据你与众不同 腾云驭智出海时 
    的头像 发表于 06-24 17:34 407次阅读
    腾云驭智出海时 <b class='flag-5'>看</b>IBM如<b class='flag-5'>何用</b>1%的数据<b class='flag-5'>让</b>你与众不同

    Win10 vscode中无法编译,提示python.exe: command not found怎么解决?

    电脑中已经删除之前安装的python,环境变量也添加了报错内容中要求的python路径,我用git bash、cmd也是可以打开python的,证明环境变量是已经正确设置了 应该是python
    发表于 06-07 06:42

    观辰生物宣布完成数千万元天使轮融资,顺为资本领投

    近日,化妆品原料商「观辰生物」宣布完成数千万元天使轮融资,顺为资本领投,上一轮投资人传新种子基金跟投。据悉,本轮资金将主要用于研发及新产线建设。
    的头像 发表于 03-14 14:29 636次阅读

    宋仕强论道之华强北专业市场转型失败(四十七)

    现在的华强北的“明通化妆品市场”,以前是明通手机配套市场。我国庆节去看了一下惨不忍睹,店面装修破旧不堪,环境卫生差劣,周边的配套设施也非常落后。我觉得华强北靠西边的区域目前还行,但是这里靠着东边这一
    发表于 01-22 11:58

    整合传感器和深度学习的“电子舌”系统

    该味觉系统有效整合了传感器和深度学习技术,能够同时准确地检测咸度、酸味、苦味和甜味,有望应用于食品、酒业、化妆品和制药等多个行业。
    的头像 发表于 01-03 17:19 813次阅读
    整合传感器和深度学习的“电子舌”系统

    python怎么前面的不运行

    注释。下面是关于如何前面的代码不运行的几种方法: 使用单行注释:使用#符号将要禁止运行的代码行注释掉,以此告诉Python解释器不要执行该行代码。例如: # 这是一个示例代码行 # print("Hello, World!") # 此行代码被注释掉,不会被执行 p
    的头像 发表于 11-29 15:06 2014次阅读

    python软件怎么运行代码

    Python是一种高级编程语言,它被广泛用于开发各种类型的应用程序,从简单的脚本到复杂的网络应用和机器学习模型。要运行Python代码,您需要一个Python解释器,它可以将您的代码翻译
    的头像 发表于 11-28 16:02 848次阅读

    python中如何用空格分隔

    Python中,可以使用空格来分隔不同的元素,如变量、操作符、函数参数等。以下是一些常见的用法: 变量赋值:使用空格将变量名和赋值操作符等分开。 x = 10 name = "John Doe
    的头像 发表于 11-24 09:51 3436次阅读

    python控制已经打开的浏览器

    Python控制已经打开的浏览器的常见需求和用途 1.切换浏览器标签页:有时候我们需要控制已经打开的浏览器标签页,例如打开多个网页后,需要在不同的标签页之间切换。 2.关闭浏览器:有
    的头像 发表于 11-22 14:29 3189次阅读

    python怎样列表里的数相加

    Python是一种功能强大的编程语言,可以用于处理各种各样的数学运算和数据操作。在Python中,我们可以使用简单的代码将列表中的数字相加。 首先,我们需要创建一个包含数字的列表。在Python
    的头像 发表于 11-22 09:53 1796次阅读