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