微信小程序之拍图读字

在这里插入图片描述
利用百度通用文字识别、语音识别能力和微信小程序,将图片中文字转换成文本,并能够保存文本和进行朗读!本文主要介绍小程序功能开发实现过程,分享主要功能实现的子程序模块。

1 系统框架

这里用到的主要技术有:百度通用文字识别、语音合成和微信小程序。小程序通过对上传照片进行文字识别,将文字图片转换成文本,并利用语音合成朗读出来。下面上干货!

2 调用通用文字识别API

2.1在控制台创建应用,调用通用文字识别API,“获取API Key/Secret Key”。

接口文档地址:https://ai.baidu.com/docs#/OCR-API/e1bd77f3

请求URL: https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic

2.2 程序实现

ocrRequest:function  (base64Img, callback) {

  //拼接接口body参数

  var params = {

    image: base64Img

  }

  //发送接口请求

  wx.request({

    url: ocrUrl + '?access_token=' + accessToken,

    data: params,

    header: {

      'content-type': 'application/x-www-form-urlencoded'

    },

    method: 'POST',

    success: function (res) {

      callback.success(res.data)

      console.log("request okr", res);

    },

    fail: function (res) {

      if (callback.fail)

        callback.fail()

    }

  })

}

3 调用语音合成API

3.1 在控制台创建应用,调用语音合成API,“获取API Key/Secret Key”。

(1)接口文档地址:https://ai.baidu.com/docs#/TTS-API/top

(2)请求URL: https://tsn.baidu.com/text2audio

将文本以及其他参数写入到body里面,利用html表单的方式将参数传递到服务端。 所有的参数都在body中。body里面的数据为:

tex=***&lan=zh&cuid=***&ctp=1&aue=3&tok=***

(3)返回参数

需要根据 Content-Type的头部来确定是否服务端合成成功。

如果合成成功,返回的Content-Type以“audio”开头,例如:

aue =3 ,返回为二进制mp3文件,具体header信息 Content-Type: audio/mp3;

3.2 程序实现

// 语音合成

  tts: function (e) {

    console.log("[Console log]tts:" + e);

    //var text = JSON.parse(e);

    var tex = encodeURI(e);//转换编码url_encode UTF8编码

    var tok = "24.1f32b670d54b316c2c89edfcf7e1e8e7.2592000.1565178411.282335-16737828";

    var cuid = app.globalData.NLPCusid;

    var ctp = 1;

    var lan = "zh";    // zh表示中文

    // 字符编码

    var spd = 5;  // 表示朗读的语速,9代表最快,1是最慢

    var url = "https://tsn.baidu.com/text2audio?tex=" + tex + "&lan=" + lan + "&cuid=" + cuid + "&ctp=" + ctp + "&tok=" + tok + "&spd=" + spd

    wx.downloadFile({

      url: url,

      success: function (res) {

        console.log(res)

        // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容

        if (res.statusCode === 200) {

          //小程序自身录音,用playVoice播放不了,要用innerAudioContext

          /*  wx.playVoice({

              filePath: res.tempFilePath

            })*/

           audio_filePath = res.tempFilePath;

          console.log(audio_filePath);

        }

      }

    })

  },

4.文本保存

将图片中文字提取出来,并以txt格式保存成文本,方便后续编辑,达到缩短文字录入时间。

//保存文本

  savetxt: function () {

    console.log(text_output);

    fs.writeFileSync(`${wx.env.USER_DATA_PATH}/output.txt`, text_output,'utf8')

          wx.showToast({

            title: '保存成功',

            icon: 'success',

            duration: 1000

          });

  },
发布了10 篇原创文章 · 获赞 4 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_45449540/article/details/103426258
今日推荐