IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 微信小程序基于百度云实现图文识别(胎教级教程) -> 正文阅读

[移动开发]微信小程序基于百度云实现图文识别(胎教级教程)

前言

最近开发微信小程序用到了图文识别的功能,刚开始还觉得很难,但其实配合一些第三方api接入,实现这个功能还是很简单的,下面我们一起来看看要怎么实现这个小功能吧。

1.首先我们需要注册一个百度云账号 (百度云地址

在这里插入图片描述

2.注册完毕后搜索文字识别

在这里插入图片描述

3.点击创建应用,然后根据需求开通需要的功能

在这里插入图片描述
根据需要选择开通的项目

在这里插入图片描述
创建完后直接点击查看创建应用详情

在这里插入图片描述

4.复制已经创建应用的 AppID、API Key、Secret Key 的值,代码中会用到

在这里插入图片描述
5.上面一系列操作完成后,打开微信小程序社区平台配置服务器域名微信小程序社区平台

在这里插入图片描述
6.项目中使用

实例

index.wxml

<!-- 识别按钮 -->
<view class="btnBox">
    <button bindtap="doUpload">点击图文识字</button>
</view>
<!-- 识别的图片 -->
<view class="imgBox">
    <image src="data:image/png;base64,{{imageUrl}}" mode="aspectFit" />
</view>
<!-- 识别出来的内容 -->
<view class="contantBox">
    识别出来的内容:<text>{{contant}}</text>
</view>

index.js

Page({
  data: {
    contant: "", //识别内容
    imageUrl: "", //识别的图片
  },
  // 获取百度access_token  
  getBaiduToken: function () {
    var apiKey = 'NT0xub7LOs1rY6sM3a0LeZy7' //百度云上的apiKey
    var secKey = 'VpdqP4FjnPV0c7sXK3S128U07GYml5sQ' //百度云上的secKey
    var tokenUrl = `https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=${apiKey}&client_secret=${secKey}`; //调用百度云api接口
    var that = this; //防止this指向问题
    // 发送请求
    wx.request({
      url: tokenUrl,
      method: 'POST',
      dataType: 'json',
      header: {
        'content-type': 'application/json; charset-UTF-8'
      },
      // 返回数据
      success: function (res) {
        that.setData({
          baiduToken: res.data.access_token
        })
      },
      // 错误信息
      fail: function (res) {
        console.log("[BaiduToken获取失败]", res);
      }
    })
  },
  // 百度ORC接口调用  
  scanImageInfo: function (imageData) { // 将图片转换成base64格式
    var that = this; //防止this指向问题
    const detectUrl = `https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=${that.data.baiduToken}` // 调用百度云api接口并传递baiduToken
    return new Promise(function (resolve, reject) {
      // 发送请求
      wx.request({
        url: detectUrl,
        data: {
          image: imageData
        },
        method: 'POST',
        dataType: 'json',
        header: {
          'content-type': 'application/x-www-form-urlencoded'
        },
        // 返回数据
        success: function (res, resolve) {
          var dataList = res.data.words_result[0].words
          console.log(res.data.words_result[0].words, "识别内容");
          // 赋值给data中定义的变量
          that.setData({
            contant: dataList
          })
        },
        // 错误信息
        fail: function (res, reject) {
          console.log('get dataList fail:', res.data);
        },

      })
    })
  },
  // 上传图片  
  doUpload: function () {
    var that = this
    that.getBaiduToken() // 提前获取access_Token
    // 选择图片,拍照或从相册中获取
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: function (res) {
        wx.showLoading({
          title: '上传中',
        })
        const filePath = res.tempFilePaths[0]
        // 上传图片        
        wx.getFileSystemManager().readFile({
          filePath: filePath,
          encoding: 'base64',
          // 返回数据
          success: function (res) {
            console.log("图片数据", res);
            // 识别的图片复赋值
            that.setData({
              imageUrl: res.data
            })
            that.scanImageInfo(res.data); // 调用百度API解析图片获取文字      
          },
          // 错误信息
          fail: function (res) {
            console.log("[读取图片数据fail]", res)
          },
          complete: function (res) {
            wx.hideLoading()
          }
        })
      }
    })
  },
})

index.wxss

.btnBox {
    padding: 10px 20px;
}

.btnBox button {
    border-radius: 4px;
    background: rgb(95, 178, 90);
    color: white;
    font-size: 14px;
}

.imgBox {
    margin: 0px 20px 10px 20px;
    height: 100%;
    display: flex;
    justify-content: center;
}

.contantBox {
    padding: 0px 20px;
}

.contantBox text {
    font-weight: bold;
}

实现效果

在这里插入图片描述

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-17 22:19:09  更:2022-03-17 22:21:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 19:05:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码