几行代码搞定识别图片中的文字信息,同时转换成语音

前几天想把一篇不错的文章保存下来,无奈是图片的,于是想利用python把图片中的文字识别出来

实现的方式还是挺多的,这里介绍下百度的AI开放平台,毕竟大公司,感觉识别的精度会高点,同时相信他们的算法也会不断优化,我等小菜鸟只要会用就可以啦。

一些准备

使用百度的AI开放平台,首先你得有个百度的开发者账号,相信你有百度云的话应该都会有,没有的话简单注册一下就可以了。

然后进入控制台选择人工只能-文字识别去创建个应用,这样就会生成对应的AppID,API Key和Secret Key,调用百度API的时候需要用到。

截图1

截图2

可以看到,作为开发者你每天有一定的免费调用次数,但如果不满足需求,可能就需要付费啦。

截图3

正式编码

下面简单介绍下编码过程,具体可以参考百度的官方文档

百度不但提供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. 源码可点击阅读原文查看

原文发布于微信公众号 - Bug生活2048(BugLife2048)

原文发表时间:2018-09-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏何俊林

仿摩拜单车APP(包括附近车辆、规划路径、行驶距离、行驶轨迹记录,导航等)

本文是由奇虎360公司高磊关于使用百度地图仿摩拜单车APP,原文地址:http://blog.csdn.net/gaolei1201/article/detai...

3219
来自专栏我和未来有约会

Radiant: 基于Ruby on Rails的内容管理系统

Radiant是一个开源的CMS[内容管理系统],建立于Ruby on Rails。Radiant是为一些小的开发团队而创建的[Publishing for S...

20810
来自专栏程序员宝库

爬虫抓取的门道——来看这篇

本文首发于我的个人博客,同步发布于SegmentFault专栏,非商业转载请注明出处,商业转载请阅读原文链接里的法律声明。 web是一个开放的平台,这也奠定了w...

4609
来自专栏快乐八哥

Progressive Web Apps入门

PC和Mobile开发技术演进 PC方向,从客户端到富客户端,到现在广泛使用的Web。 移动方向,目前主要还是原生应用和Mobile Web,PWA相关技术是未...

25110
来自专栏Web 开发

纸上谈兵之高性能Web开发

今天一连两次被问到简历中提到的高性能Web开发方面的事,看来这种大标题很有诱惑力。

1130
来自专栏web前端教室

[一对一课程] 之 设计并实现第一个JS模块?

这篇文章不太好写,谈目前网上的多数教程,谈到JS模块必贴代码,而我一向不喜欢在公众号文章里写代码,因为难以阅读。所以我尝试从“构思”的角度,来写一下本文。 在昨...

2348
来自专栏拂晓风起

关于前后端同构,我的一点思路和心得(vue、nodejs、react、模版)

3714
来自专栏西枫里博客

如何让网站打开变快?暨网站速度优化指南。

网站打开速度一向是网站运营者和SEO工作者关注的重要指标。百度在网站优化白皮书中也提到需要注重网站访问速度。2017年更是退出了针对移动端访问推出闪电算法(博文...

1612
来自专栏web前端教室

【周总结】0827前端零基础班本周总结(08.27-08.31)

每一期的学生情况都是不同的,因为是从完全的零基础开始讲起,面向的是完全的前端零基础学生。所以第一周基本上进度都比较慢,主要是通过课后作业和课程直播时的即时反馈来...

983
来自专栏CSDN技术头条

流动的数据——使用 RxJS 构造复杂单页应用的数据逻辑

我们经常见到这么一些场景: 微博的列表页面; 各类协同工具的任务看板,比如 Teambition。 ? 这类场景的一个共同特点是: 由若干个小方块构成; 每个小...

3016

扫码关注云+社区

领取腾讯云代金券