前几天想把一篇不错的文章保存下来,无奈是图片的,于是想利用python把图片中的文字识别出来
实现的方式还是挺多的,这里介绍下百度的AI开放平台,毕竟大公司,感觉识别的精度会高点,同时相信他们的算法也会不断优化,我等小菜鸟只要会用就可以啦。
一些准备
使用百度的AI开放平台,首先你得有个百度的开发者账号,相信你有百度云的话应该都会有,没有的话简单注册一下就可以了。
然后进入控制台选择人工只能
-文字识别
去创建个应用,这样就会生成对应的AppID,API Key和Secret Key,调用百度API的时候需要用到。
可以看到,作为开发者你每天有一定的免费调用次数,但如果不满足需求,可能就需要付费啦。
正式编码
下面简单介绍下编码过程,具体可以参考百度的官方文档
百度不但提供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 config
from 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()
总结
几行代码搞定的快感依旧屡试不爽。
Ps. 项目地址:https://github.com/CavinCao/python_libraries_demo