image
前几天想把一篇不错的文章保存下来,无奈是图片的,于是想利用python把图片中的文字识别出来
实现的方式还是挺多的,这里介绍下百度的AI开放平台,毕竟大公司,感觉识别的精度会高点,同时相信他们的算法也会不断优化,我等小菜鸟只要会用就可以啦。
一些准备
使用百度的AI开放平台,首先你得有个百度的开发者账号,相信你有百度云的话应该都会有,没有的话简单注册一下就可以了。
然后进入控制台选择人工只能
-文字识别
去创建个应用,这样就会生成对应的AppID,API Key和Secret Key,调用百度API的时候需要用到。
image
image
可以看到,作为开发者你每天有一定的免费调用次数,但如果不满足需求,可能就需要付费啦。
image
正式编码
下面简单介绍下编码过程,具体可以参考百度的官方文档
百度不但提供API,还贴心的准备了热门语言的SDK,包括java
,pyhton
,c#
等等,其实本质还是调用API。
这里以python为例,首先安装python的SDK:
pip install baidu-aip
看了下文档的demo,其实还是比较简单的,几行代码就搞定了,文章最后贴自己的源码吧。
在浏览文档的时候发现,百度还提供了一些列的识别,包括身份证,银行卡,营业执照等固定的模板,同时还可以识别表格和自定义模板文字识别,在实际业务场景中还是挺有用处的。
此外还有一些其他AI相关的技术,有兴趣的小伙伴可以自行看下。
最后贴一下自己写的一个小demo,识别图片中的文字后,又通过语音合成转成了mp3的音频:
#!/usr/bin/env python3# -*- coding: utf-8 -*-__author__ = 'Cavin Cao'''' 功能:利用百度官方api,读取图片中的文字,同时将文字转换成语音 官方地址:http://ai.baidu.com/docs#/OCR-Python-SDK/top '''import configfrom aip import AipOcr,AipSpeech""" 你的 APPID AK SK """APP_ID = config.baidu_app_id API_KEY = config.baidu_api_key SECRET_KEY = config.baidu_secret_key clientAipOcr = AipOcr(APP_ID, API_KEY, SECRET_KEY) clientAipSpeech = AipSpeech(APP_ID, API_KEY, SECRET_KEY)#测试图片picture_url="http://image.bug2048.com/mongo20180906.jpg"""" 读取图片 """def get_file_content(filePath): with open(filePath, 'rb') as fp: return fp.read()""" 1.调用文字识别API识别图片上的文字 2.拼接文字后调用语音合成API转换成语音 """def convert_picture_words(): words='' wordsResult=clientAipOcr.basicGeneralUrl(picture_url) for item in wordsResult['words_result']: words+=item['words']+',' if words=='': return words=words[:-1] print(words) speechResult=clientAipSpeech.synthesis(words, 'zh', 1, { 'vol': 5, 'per': 3 }) # 识别正确返回语音二进制 错误则返回dict 参照下面错误码 if not isinstance(speechResult, dict): with open('result.mp3', 'wb') as f: f.write(speechResult)if __name__ == '__main__': convert_picture_words()
作者:Bug生活2048
链接:https://www.jianshu.com/p/755962350c38