首页 > 编程语言 >微信小程序-数字识别

微信小程序-数字识别

时间:2023-11-01 09:23:50浏览次数:26  
标签:console 数字 微信 token log res 识别 data String

前言:百度API可以在微信小程序中进行数字识别,而微信小程序通用印刷体识别需要请求后台,在后台调用微信接口获取要识别的结果。

一、基于百度AI接口的数字识别

开发前的准备:需要在百度AI开放平台创建相关应用实例,在开发中会用到里面的相关数据,具体创建流程可以参考官方文档的QuickStart

代码如下:

wxml

<camera
                 class="camera"
                 device-position="back"
                 flash="off"
                 binderror="error"></camera>
             <view class="button" catchtap="numberRecognition">识别</view>

js

数据模型

data: {
        src: "",
        token: "",
        base64: "",
        isShow: false,
        numberList: [],
    },

方法:

numberRecognition(){
        wx.showLoading({
          title: '识别中...',
        })
        this.takePhoto();
        this.uploadAndRecognition();
      },
      //拍照
      takePhoto() {
        var that = this;
        //创建拍照上下文对象
        const ctx = wx.createCameraContext()
        ctx.takePhoto({
          quality: 'high',
          //拍照成功
          success: (res) => {
            //console.log(res)
            wx.getFileSystemManager().readFile({
              filePath: res.tempImagePath,
              encoding: 'base64',
              success: res => {
                //console.log(res)
                this.setData({
                  base64: res.data
                })
              },
              //拍照失败
              fail: err => {
                console.log(err)
                this.showToast();
              }
            })
          },
          fail: err => {
            this.showToast();
          }
        })
      },
    
      //上传识别
      uploadAndRecognition() {
        //调用接口,获取token
        wx.request({
          url: 'https://aip.baidubce.com/oauth/2.0/token', //百度智能云相关的接口地址
          data: {
            grant_type: 'client_credentials',
            client_id: 'hsfGF3F....Q1OtR4nLccBC0',//用你创建的应用的API Key
            client_secret: '2tyN2QygjKwQ.....qt6afV9bXjqfvT5'//用你创建的应用的Secret Key
          },
          header: {
            'Content-Type': 'application/json' // 默认值
          },
          //获取成功之后
          success: res => {
            console.log(res)
            wx.request({
              url: 'https://aip.baidubce.com/rest/2.0/ocr/v1/numbers?access_token=' + res.data.access_token,
              method: 'POST',
              data: {
                //所有图片均需要base64编码、去掉编码头后再进行urlencode
                image: decodeURI(this.data.base64),
              },
              header: {
                'Content-Type': 'application/x-www-form-urlencoded'
              },
              success: res => {
                console.log(res.data)
                let length = res.data.words_result_num;
                console.log(length)
                if (length > 0){
                  for (let i = 0; i < length;i++){
                    let tempDataList = {
                      title:"第"+i+"个:",
                      number: res.data.words_result[i].words
                    } 
                    console.log(tempDataList)
                    let temp = "numberList["+ i +"]";
                    console.log(temp)
                    this.setData({
                      [temp]:tempDataList
                    })
                  }
                  this.showCover();
                  console.log(this.data.numberList)
                }else{
                  wx.showModal({
                    content: '未识别到数字',
                  })
                }
              },
              fail: err => {
                console.log(err)
                this.showToast();
              }
            })
          },
          fail:err=>{
            console.log(err)
            this.showToast();
          },
          complete:()=>{
            wx.hideLoading();
          }
        })
      },
      //隐藏遮罩
      hideCover() {
        this.setData({
          isShow: false
        })
      },
      //显示遮罩
      showCover() {
        this.setData({
          isShow: true
        })
      },
      //封装的wx.showToast
      showToast() {
        wx.showToast({
          title: "服务异常,请稍后重试",
          icon: 'none',
          duration: 3000
        })
      },

结果如下:

二、基于微信小程序接口的数字识别

1、获取access_token

public class demo4 {
    public static void main(String[] args) {
        //获取access_token填写client_credential
        String grant_type = "client_credential";
        //    第三方用户唯一凭证
        String appid = "wx13f1....30a8e192";
        //第三方用户唯一凭证密钥,即appsecret
        String secret = "3f3718064f.....a9887.....ddd4fdd";
        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=" + grant_type + "&appid=" + appid + "&secret=" + secret;
        HttpClient httpClient = new HttpClient();
        JSONObject json = httpClient.getJSON(url);
        System.out.println(json);
    }
}

使用postman请求

2、通用印刷体识别接口调用

public class demo5 {
    public static void main(String[] args) {
        String access_token = "72_OLBiphYTBNEmzEgBkDVyLmTXbf7Oab620_eaTgZbVK9rxIfTxeluRefGVYAsyEQgnwANF4_ExI2WwEHypqSkBaJWfhv5l6P7ZcoHLJWCGOBlQ1sO0Blj7AkljtMCKOeAIANVZ";
        String url = "https://api.weixin.qq.com/cv/ocr/comm?access_token="+access_token;
        String filePath = "D:\\project\\工程文档\\......追溯系统\\二维码和验证码图片\\内码\\ocr.png";
        RestTemplate rest = new RestTemplate();
        HttpHeaders httpHeaders = new HttpHeaders();

        FileSystemResource resource = new FileSystemResource(new File(filePath));
        MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
        //MultipartFile的名称
        param.add("img", resource);
        HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(param, httpHeaders);
        ResponseEntity<String> responseEntity = rest.exchange(url, HttpMethod.POST, httpEntity, String.class);
        String result = responseEntity.getBody();
        System.out.println(result);

    }
}

postman请求:access_token在Params中输入,img在请求体的form-data中输入。

 

标签:console,数字,微信,token,log,res,识别,data,String
From: https://www.cnblogs.com/zwh0910/p/17662262.html

相关文章

  • 解题报告 P3704 [SDOI2017] 数字表格
    P3704[SDOI2017]数字表格经典莫反。题目要求:\[\prod_{i=1}^n\prod_{j=1}^mfib(\gcd(i,j))\]不妨令\(n<m\)。套路地,我们设\(\gcd(i,j)=d\),然后枚举\(d\):\[\begin{aligned}&\quad\prod_{d=1}^n\prod_{i=1}^n\prod_{j=1}^mfib(d)^{[\gcd(i,j)==d]}\\&=\pr......
  • 【专题】2022年中国新消费产业数字化研究报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34074近年来,随着中国消费升级的趋势,新兴消费品牌在市场上逐渐崭露头角。这些品牌以挑战者的身份进入市场,通过创新的供应链、产品和营销策略,以用户为核心满足新的消费需求,实现了短期内的强劲增长和销售规模的快速扩张。然而,经济环境、疫情冲击和激烈......
  • 【专题】工业数字化/智能化2030白皮书报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34132原文出处:拓端数据部落公众号自18世纪中期工业革命以来,人类进入工业社会。在历次工业革命中,人类通过发明创造和管理革新,改进生产方式、降低成本、提高效率,随之而来的是生活、物质、文化、教育等各方面的变化,人际关系和社会结构也得以重塑。如......
  • 数字孪生街区如何改善城市可持续性?
    数字孪生街区是现代城市规划和发展的一项重要创新,它结合了数字技术和城市规划,为未来的城市提供了更好的设计、管理和可持续发展的机会。数字孪生街区的兴起将深刻改变我们的城市生活。 数字孪生街区的核心特点数字孪生街区是一种数字模型,精确反映了城市中的特定街区或地区的所......
  • 基于微信小程序的美家买菜系统-计算机毕业设计源码+LW文档
    一、 论文选题的目的和意义如今,随着社会的不断变化与发展,计算机行业的快速兴起使得计算机技术不断提高。腾讯在推出微信小程序之后,在各种行业里面掀起一阵阵的热潮,很多APP应用被简化为小程序的功能迅速推出,同时也根据小程序的特性推出各种独具匠心的应用,相对传统的APP来说,微信小程......
  • TSINGSEE青犀AI视频识别技术+危化安全生产智慧监管方案
    一、背景分析石油与化学工业生产过程复杂多样,涉及的物料易燃易爆、有毒有害,生产条件多高温高压、低温负压,现场危险化学品存储量大、危险源集中,重特大安全事故多发。打造基于工业互联网的安全生产新型能力,提高危化企业生产过程中对安全风险的监测感知和预警管控,最大化降低安全隐患、......
  • 【Python微信机器人】第三篇:使用ctypes调用进程函数和读取内存结构体
    目录修整目前的系列目录(后面会根据实际情况变动):在windows11上编译python将python注入到其他进程并运行注入Python并使用ctypes主动调用进程内的函数和读取内存结构体使用汇编引擎调用进程内的任意函数利用beaengine反汇编引擎的c接口写一个pyd库,用于实现inlinehook利用......
  • 涛思数据与胜软科技达成战略合作,共同赋能石油行业数字化转型
    近日,北京涛思数据科技有限公司(以下简称“涛思数据”)与山东胜软科技股份有限公司(以下简称“胜软科技”)于山东东营签署战略合作协议。双方围绕石油行业数字化转型趋势,合力打造石油行业数字化转型解决方案进行深入探讨与交流。涛思数据商业化总裁&联合创始人李广、生态渠道总监郭浩......
  • 用友助力企事业单位践行电子凭证会计标准应用,实现电子凭证全流程数字化,绿色化,低碳化!
    数字经济时代,电子形式的税务发票、财政票据、铁路客票、航空客票、银行回单和对账单等各类电子凭证应用范围不断扩大,给会计工作,社会大众带来了便利,但由于电子凭证种类众多,数据标准不统一,会计信息系统无法自动识别、解析结构化数据,仍然存在电子凭证接收难、入账难、归账难等现象。为......
  • 人脸识别平台批量导入绑定设备的一种方法
        因为原先平台绑定设备是通过一个界面进行人工选择绑定或一个人一个人绑定设备。如下: 但有时候需要在几千个里选择出几百个,那这种方式就不大现实了,需要另外一种方法。 目前相到可以通过导入批量数据进行绑定的方式。一、前端主要是显示选择文件与设备<template><d......