专栏首页Bug生活2048几行代码搞定识别图片中的文字信息,同时转换成语音

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

前几天想把一篇不错的文章保存下来,无奈是图片的,于是想利用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),作者:Bug2048

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python自学之路-list、tuple、dict和set

    上一篇「Python自学之路-数据类型和变量」主要简单说明了下数据类型和变量,这一篇主要和大家介绍下list、tuple、dict和set。相信后期在实战中会经...

    Bug生活2048
  • 程序猿的无所不能

    我是一名程序员,长相一般,水平一般,什么都一般的普通程序员。可在朋友眼中,我是无所不能的,只因为我是程序猿……

    Bug生活2048
  • 微信小程序版博客——小程序授权登陆的一点优化

    通常授权登陆在第一次登陆小程序时提示,但很多用户会拒绝,接下来的流程就比较尴尬了。

    Bug生活2048
  • NLP之tfidf与textrank算法细节对比基于结巴分词

    -NLP之tfidf与textrank算法细节对比 注:结巴默认在site-packages目录 关于结巴分词的添加停用词以及增加词相关操作可参考之前的...

    学到老
  • NLP之tfidf与textrank算法细节对比基于结巴分词

    -NLP之tfidf与textrank算法细节对比 注:结巴默认在site-packages目录 关于结巴分词的添加停用词以及增加词相关操作可参考之前的...

    学到老
  • Python-并发下载-gevent库

    协程,就是同时开启多个任务,但一次只顺序执行一个。等到所执行的任务遭到阻塞,就切换到下一个任务继续执行,从而节省阻塞所占用的时间。

    小团子
  • 基于汇编的 C/C++ 协程 - 切换上下文

    既然本系列讲的是基于汇编的 C/C++ 协程,那么这篇文章我们就来讲讲使用汇编来进行上下文切换的原理。

    amc
  • rpc 报错 ClassNotFoundException

    rpc发送Request对象报错 java.lang.ClassNotFoundException

    Antler
  • leetcode-443-String Compression

    chenjx85
  • 朱小黄:网络金融风险要害在平台

    大数据文摘

扫码关注云+社区

领取腾讯云代金券