uniapp: 前端利用百度云OCR实现文字识别(身份证识别功能,别的功能类似)

news/2024/11/24 9:45:27/

第一章 前言

  • 介绍如何使用百度智能云实现我们想要的效果,需要在下面这个网址注册账号:

百度智能云-云智一体深入产业

  • 使用文档在该网址上:

简介 - 文字识别OCR

  • 请求成功的效果,如下图: 

 

  •  搜索产品(例如文字识别)-> 立即使用 -> 免费领取 -> 创建应用 (跟着步骤走就好了)

  • 创建成功后,应用列表,如下图

  • 进入管理,如下图:(注意框的内容是需要用到的字段

第二章 实战

  • 根据文档需求获取Access Token(Access Token的有效期(秒为单位,有效期30天);)
  • 注意:Access Token是有有效期的,所以需要定时或者在打开页面时就获取它(登录页也可),小编是测试功能的,所以在进入有识别的页面获取的

代码如下:(这些都是uniapp原生api,小编就不每句代码都解释一下了,具体可看官网)

<template><view class="content"><uni-nav-barleft-icon="back" :fixed="true"@clickLeft="back2Index" title="身份证测试平台"backgroundColor="#1677FF"height="88rpx"color="#fff":border="false"safeAreaInsetTop></uni-nav-bar><button @click="chooseImage">选择图片</button></view>
</template><script>export default {data() {return {dataObj: {client_id: 'API Key',client_secret: 'Secret Key',},accessToken: ''}},onLoad() {// 方法调用this.getAccessToken()},methods: {// 百度云获取accessTokengetAccessToken() {let self = this// 请求uni.request({url: '/baiduApi/oauth/2.0/token',data: {grant_type: 'client_credentials',client_id: self.dataObj.client_id,client_secret: self.dataObj.client_secret},dataType: "JSONP",method: 'POST',header: {'Content-Type': 'application/x-www-form-urlencoded',},success: (res) => {// 将得到的res先转对象,在.点出我们想要的值this.accessToken = JSON.parse(res.data).access_tokenconsole.log('accessToken', this.accessToken)},fail(err) {console.log("访问失败", err)}})},back2Index(){uni.navigateBack()},}}
</script>

注意:这里请求的携带的三个参数:grant_type、client_id、client_secret,grant_typeclient_credentials表示身份证识别,值固定直接根据官方文档赋值即可,client_id和client_secret对应的是第一章圈的两个字段,分别应用创建成功的API Key和Secret Key

 注:小编统计的常用api

uniapp常用api_❆VE❆的博客-CSDN博客

  • 得到 Access Token之后就能选择图片了:
methods: {// 选择图片chooseImage() {let self = this// 这也是uniapp原生apiuni.chooseImage({count: 1,success: (ress) => {uni.showLoading({title: '正在识别中...'})// 下面将图片本地路径转base64console.log('ress', ress)self.toBase64(ress.tempFilePaths[0]).then((res) => {console.log("res", res)// 该函数是识别身份证的 也就是这个函数用到OCR百度云的接口self.uploadImage(res)})},fail(err) {uni.hideLoading()console.log(err)}})},// 转换为base64的函数toBase64(path){return new Promise((resolve, reject) => {uni.request({url: path,responseType: 'arraybuffer',success: (res) => {resolve(uni.arrayBufferToBase64(res.data))}})})},
}
  •  发送请求,识别身份证正反面获取的信息:
methods: {// 身份证识别uploadImage(path) {let self = thisuni.request({url: '/baiduApi/rest/2.0/ocr/v1/idcard',data: {image: path, // 图片的base64路径access_token: self.accessToken, // Access Tokenid_card_side: 'front' // front身份证正面 back身份证反面},method: 'POST',header: {'Content-Type': 'application/x-www-form-urlencoded'},success: (res) => {uni.hideLoading()console.log('res', res) // 这就是调用百度云OCR接口成功返回的值},fail(err) {uni.hideLoading()console.log(err)}})},
}
  • 千万不要忘了还有跨域的问题哦!!!配置如下:
"h5" : {"devServer" : {"port" : 8000,"disableHostCheck" : true,"proxy" : {"/baiduApi" : {"target" : "https://aip.baidubce.com", // 需要跨域的域名"changeOrigin" : true,"secure" : false,"pathRewrite" : {"^/baiduApi" : ""}}}},
}

 https://aip.baidubce.com/oauth/2.0/token报错blocked by CORS policy-CSDN博客

  • 我们来看看res的值


http://www.ppmy.cn/news/1196934.html

相关文章

vue3+ts封装图标选择组件

概要 讲解在vue3的项目中封装一个简单好用的图标选择组件。 效果 第一步&#xff0c;准备图标数据 数据太多&#xff0c;大家去项目中看。项目地址https://gitee.com/nideweixiaonuannuande/xt-admin-vue3 第二步&#xff0c;页面与样式编写 <template><div>…

uniapp写一个计算器用于记账(微信小程序,APP)

提要&#xff1a;自己用uniapp写了一个记账小程序&#xff08;目前是小程序&#xff09;&#xff0c;写到计算器部分&#xff0c;在网上找了别人写的计算器&#xff0c;大多数逻辑都是最简单的&#xff0c;都不能满足一个记账计算器的基本逻辑。与其在网上找来找去&#xff0c;…

java网络通信

浏览器中输入&#xff1a;“www.woaijava.com”之后都发生了什么&#xff1f; 请详细阐述 由域名→IP地址 寻找IP地址的过程依次经过了浏览器缓存、系统缓存、hosts文件、路由器缓存、 递归搜索根域名服务器。 建立TCP/IP连接&#xff08;三次握手具体过程&#xff09; 由浏览…

线性表的顺序存储

1.创建&#xff1a;实质是对data与length的修改 //定义一个线性表 typedef struct {int data[MaxSize];//存储线性表的元素 int length;//线性表的长度 }SqList; //新建一个表 void create(SqList &l){//传入地址才可以对其值进行改变 printf("请输入线性表的长度&…

sql父子查询

分析sql过程 启发&#xff1a;https://blog.csdn.net/weixin_43703769/article/details/109254934 预热 分析下面的sql的执行流程 SELECT ids AS _ids,( SELECT ids : GROUP_CONCAT( id ) FROM chat WHERE FIND_IN_SET( pid, ids ) ) AS cids,l : l 1 AS LEVEL FROMchat, …

鸿蒙LiteOs读源码教程+向LiteOS中添加一个简单的基于线程运行时的短作业优先调度策略

一、鸿蒙Liteos读源码教程 鸿蒙的源码是放在openharmony文件夹下&#xff0c;openharmony下的kernel文件夹存放操作系统内核的相关代码和实现。 内核是操作系统的核心部分&#xff0c;所以像负责&#xff1a;资源管理、任务调度、内存管理、设备驱动、进程通信的源码都可以在…

竞赛 深度学习猫狗分类 - python opencv cnn

文章目录 0 前言1 课题背景2 使用CNN进行猫狗分类3 数据集处理4 神经网络的编写5 Tensorflow计算图的构建6 模型的训练和测试7 预测效果8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习猫狗分类 ** 该项目较为新颖&a…

数字处理-第10届蓝桥杯省赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第3讲。 数字处理&#xff…