Python批量图片识别并翻译——我用python给女朋友翻译化妆品标签
周末福利:文末赠书活动
最近小编遇到一个生存问题,女朋友让我给她翻译英文化妆品标签。美其名曰:"程序猿每天英语开发,英文一定很好吧,来帮我翻译翻译化妆品成分",”来,帮我看看这个面膜建议敷几分钟“。。。。看来斥巨资买化妆品不算完,还需要会各种英文介绍。
默默收起大学考的一摞429分的四级证书,我打开了IDE。。。我打算开发一个能批量翻译的图片的demo,把家里的各种化妆品都翻译好。机智如我,是不会自己从训练模型做起的,打开有道智云的友好的AI接口页面 ,果然有图片翻译服务,体验了一下可是真不错,于是果断使用。
效果展示
Demo在这里,一起来看看效果吧:
识别过程如下:
逐个看看效果哈!make up for ever 虽然没翻译成玫珂菲,哈哈哈但是关键词长期保湿、固定喷雾都翻译出来了~~棒
这个更是不明觉厉,韩文、英文混合都能翻译~~~
樱花水的表现也不错哦~
再乱入一个开起来更像包装盒的图片识别,效果不错,没受图片上文字倾斜等影响 :
调用API的准备工作——生成调用所需要的应用id和密钥
根据有道智云的接口约定,需要先在有道智云的个人页面上生成调用所需要的应用id和密钥,以便作为你的调用标识以及收费参考。。
具体步骤是:在有道智云的个人页面上创建实例、创建应用、绑定应用和实例,获取调用接口用到的应用的id和密钥。具体个人注册的过程和应用创建过程详见文章分享一次批量文件翻译的开发过程
开发过程介绍
1、api接口介绍
先介绍下该工程的核心部分,有道智云图片翻译服务的调用接口
API HTTPS地址:https://openapi.youdao.com/ocrtransapi
接口调用方式:POST
请求格式:表单
相应格式:JSON
接口调用参数
调用API需要向接口发送以下字段来访问服务。
字段名 | 类型 | 含义 | 必填 | 备注 |
---|---|---|---|---|
type | text | 文件上传类型 | True | 目前支持Base64,请置该字段值为1 |
from | text | 源语言 | True | 参考下方的 支持语言 (可设置为auto) |
to | text | 目标语言 | True | 参考下方的 支持语言 (可设置为auto) |
appKey | text | 应用ID | True | 可在 应用管理 查看 |
salt | text | UUID | True | 1995882C5064805BC30A39829B779D7B |
sign | text | 签名 | True | md5(应用Id+q+salt+应用密钥) |
ext | text | 翻译结果音频格式,支持mp3 | false | mp3 |
q | text | 要识别的图片 | true | type为1时必填,图片的Base64编码 |
docType | text | 服务器响应类型,目前只支持json | false | json |
render | text | 是否需要服务端返回渲染的图片,0:否;1:是,默认是0 | false | 0 |
nullIsError | text | 如果ocr没有检测到文字,是否返回错误,false:否;true:是,默认是false | false | 注意是字符串 |
签名生成方法如下:
1、将请求参数中的应用ID appKey
,图片的Base64编码 q
,UUID salt
和应用密钥
按照应用ID+q+salt+应用密钥
的顺序拼接得到字符串str
。
2、对字符串str
做 md5,得到32位大写的sign
(参考Java生成MD5示例,可点击右侧的JAVA示例)。
输出结果
返回的结果是json格式,具体说明如下:
字段名 | 字段说明 |
---|---|
orientation | 图片所对应的方向 |
lanFrom | ocr所识别出来认为的图片中的语言 |
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=filesif 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_pathtext2.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=nameself.file_paths=file_paths # 待翻译文件路径self.result_root_path=result_root_path # 结果存放路径self.trans_type=trans_typedef 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'] = qsalt = str(uuid.uuid1())signStr = APP_KEY + q + salt + APP_SECRETsign = encrypt(signStr)data['appKey'] = APP_KEYdata['salt'] = saltdata['sign'] = signresponse = 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
原文:https://www.cnblogs.com/alchemystar/p/13898506.html?utm_source=tuicool&utm_medium=referral
文末福利(2本)
免费送书帮助更多想学Python的小伙伴学习一直是我们公众号的传统(发的还是顺丰快递哦),到目前为止,已经有无数小伙伴领到书籍并且在Python的知识海洋里傲游了,如果你对Python感兴趣,却不知从何学起,《Python大数据分析——从入门到精通》可以帮你打开Python世界的大门;如果你觉得你学习Python稍稍吃力,想要更好的提高学习效率,这本书可帮助你轻松学习Python 。
那么问题来了,要怎样才能免费获取这本书呢?
很简单,只需在评论区下方留言,在11月7日前获赞最多的前两名小伙伴即可免费获取书籍。
好了,别犹豫别等待了,赶快行动起来吧。超级有趣实用的Python知识在等你哟!(附赠本书购买链接)到截至时间后获赞最多的两位幸运小伙伴记得添加下方二维码联系小编:
Python批量图片识别并翻译——我用python给女朋友翻译化妆品标签相关推荐
- python批量循环图片识别_python 实现批量图片识别并翻译
python 实现批量图片识别并翻译 时间:2020-11-02|栏目:Python|点击: 次 获取待翻译图片文件的方法(此处设置的仅支持.jpg文件): def get_files(): file ...
- python图片转文字_【收藏】图片转成文字的方法总结,python批量图片转文字信息参考源码...
在日常办公或者学习中,往往存在这样一个工作场景,比如,"老王,我这里有一张图片,你把里面的文字信息给我整理出来",都2021年了,你真的还在手敲图片文字信息么?那么还不赶紧收藏这篇 ...
- 【收藏】图片转成文字的方法总结,python批量图片转文字信息参考源码
在日常办公或者学习中,往往存在这样一个工作场景,比如,"老王,我这里有一张图片,你把里面的文字信息给我整理出来",都2021年了,你真的还在手敲图片文字信息么?那么还不赶紧收藏这篇 ...
- 【批量图片识别文字命名】如何批量图片识别文字并将识别的文字重命名该图片,怎么弄?下面叫你方法
前段时间接到一个棘手的难题(识别图片文字,将图片文件名改成该文字) 因为不解决就得手动挨个挨个输入然后把文件命名好 今天又一个文件需求是这样的 图上有姓名文字,要识别出来改成每一张图跟这个一样,有的人 ...
- python智能图片识别系统(图片切割、图片识别、区别标识)
目录 技术介绍 运行效果 关键代码 写在最后 技术介绍 你好! python flask图片识别系统使用到的技术有:图片背景切割.图片格式转换(pdf转png).图片模板匹配.图片区别标识. 运行效果 ...
- 如何批量图片识别文字?两个好用的电脑端软件教程
如何批量图片识别文字?无论是我们拍摄课堂上的PPT,还是我们日常的一些文字截图.这些文字都是图片文字,很不利于于我们整理复习.如果我们要是一个一个打字的话将会很耽误时间,实际上我们完全可以借助一些工具 ...
- 批量识别图片大致不相同图片_批量图片识别文字软件
批量图片识别是一款非常好用的批量识别文字工具,软件操作使用起来非常简单,它的原理是调用Windows自带的certutil.exe文件将图片编码保存在TXT文件中,然后从TXT文件里读取再Post给百 ...
- [批量重命名工具] 批量图片识别文字来命名文件名,很多网友想看批量图片识别成文字,用图片上的文字来修改文件名,今天它来了
很多网友想看批量图片识别成文字,用图片上的文字来修改文件名,今天他来了 因为不解决就得手动挨个挨个输入然后把文件命名好 今天又一个文件需求是这样的 图上有姓名文字,要识别出来改成每一张图跟这个一样,有 ...
- python图片识别验证码软件_基于python图片识别工具(图片识别,车牌,PDF,验证码)...
先上图 不多说. 对于一般的用户来说识别率还是能达到百分之90以上. 已经打包成exe文件.windows用户可以直接使用.要软件的加我QQ python代码: # -*- coding: UTF- ...
最新文章
- LeetCode 105 Construct Binary Tree from Preorder and Inorder Traversal-前序中序遍历构造二叉树-Python和Java递归解法
- 热门的“挑战视频”,凭什么火起来的?
- codeforces1440 E. Greedy Shopping
- 搜狐视频怎么修改昵称
- 初次使用Apache、ip地址、防火墙、域名、DNS、hosts文件、端口、URL介绍、Apache配置文件、配置虚拟主机、请求响应、http协议、
- python 魔法函数是什么意思_Python 中的魔法函数
- maven java 结构_Maven标准目录结构介绍
- 中的draw函数_哪一个热图函数更快?
- 局域网服务器传输大文件方案,局域网快速传输大文件【操作方案】
- WPE 过滤器 高级滤镜
- 英语期刊写作-通往国际学术舞台的阶梯第五章答案
- 使用Charles抓取百词斩单词音频、单词翻译、例句音频、例句翻译
- Hulk容器服务的镜像CI解决方案
- WMB ESQL报文函数截取新的XML方法
- 不用邀请照样申请Gmail免费邮箱
- edge浏览器打开html文件路径被拆分,Edge浏览器显示网页排版错位
- 必要的先决条件安装失败_先决条件
- 苏宁大数据怎么运营_苏宁大数据离线任务开发调度平台实践
- 网络诊断,浏览器不能上网,其他软件都能上网
- 定义方法,实现两个整数的加法