在日常生活中,我们经常需要用到图片,我们都知道,图片的种类挺多的,在这里不一一列举。
我们今天要完成就是一个图片转换器外加图片识别程序,废话不多说,直接就是淦!
1.文字识别技术
2.图片转换器
一、文字识别技术
首先介绍文字识别技术,就是读取图片之后然后把图片中的文字提取出来。
1.打开百度开放平台
进去之后咱们选择文字识别,可以看出,语音合成和图片识别的参数不一样,所以不要搞混了,不过他们用的Python模块是一样的,这个可以放心使用。
谈到文字识别,大致可分为本地文件文字识别和网络文件文字识别,识别率还算挺高的,他的用法与语音合成有很多相似之处,当然也有很多不同,例如:
fromaipimportAipOcr"""你的APPIDAKSK"""APP_ID='你的AppID'API_KEY='你的ApiKey'SECRET_KEY='你的SecretKey'client=AipOcr(APP_ID,API_KEY,SECRET_KEY)
首先是使用的模块不同,其次参数也不同,可以看出来第一步配置就是这么简单。
然后我们需要对本地文件进行一个识别,例如:
可以看出来,这些就是识别后图片上的内容,识别效果很好,非常完美。
文字识别——请求参数详情
参数名称 | 是否必选 | 类型 | 可选值范围 | 默认值 | 说明 |
image | 是 | string | | | 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式 |
url | 是 | string | | | 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式,当image字段存在时url字段失效 |
language_type | 否 | string | CHN_ENGENGPORFREGERITASPARUSJAPKOR | CHN_ENG | 识别语言类型,默认为CHN_ENG。可选值包括:-CHN_ENG:中英文混合;-ENG:英文;-POR:葡萄牙语;-FRE:法语;-GER:德语;-ITA:意大利语;-SPA:西班牙语;-RUS:俄语;-JAP:日语;-KOR:韩语; |
detect_direction | 否 | string | truefalse | false | 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括:-true:检测朝向;-false:不检测朝向。 |
detect_language | 否 | string | truefalse | false | 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语) |
probability | 否 | string | truefalse | | 是否返回识别结果中每一行的置信度 |
文字识别——返回数据参数详情
字段 | 必选 | 类型 | 说明 |
direction | 否 | number | 图像方向,当detect_direction=true时存在。--1:未定义,-0:正向,-1:逆时针90度,-2:逆时针180度,-3:逆时针270度 |
log_id | 是 | number | 唯一的logid,用于问题定位 |
words_result_num | 是 | number | 识别结果数,表示words_result的元素个数 |
words_result | 是 | array | 定位和识别结果数组 |
+words | 否 | string | 识别结果字符串 |
probability | 否 | object | 行置信度信息;如果输入参数probability=true则输出 |
+average | 否 | number | 行置信度平均值 |
+variance | 否 | number | 行置信度方差 |
+min | 否 | number | 行置信度最小值 |
可以看出这个API还是相当不错了,下面我们聊一下图片格式转换器,
二、图片格式转换器
图片格式转换器,顾名思义就是将图片格式互相转换,很多人为了方便都是直接改后缀名,殊不知那样图盘的原始样式会受到影响,也许图片会打开后从产生错误的画面。下面我们就来做一个类似的案例。
1.先安装图片处理模块pillow,安装方法:
pipinstallpillow
2.导入pillow
fromPILimportImage
3.判断文件是否可以打开
fromPILimportImagedefisbad(path):bad=Truetry:Image.open(path).verify()#判断图片是否损坏except:bad=Falsereturnbad
4.转换文件格式
deftranslate(path):ifisbad(path):try:str=path.rsplit(".",1)output_path=str[0]+".png"#输出文件名称im=Image.open(path)im.save(output_path)#保存目标文件returnTrueexcept:returnFalseelse:returnFalse
这样我们就得到了一张完整的可用的png图片了,代码如图:
本项目用于平时上传文件识别图片所用,效果还是蛮不错的,希望大家喜欢。