当前位置:   article > 正文

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

uni-app 接入ocr识别

第一章 前言

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

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

  • 使用文档在该网址上:

简介 - 文字识别OCR

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

 

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

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

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

第二章 实战

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

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

  1. <template>
  2. <view class="content">
  3. <uni-nav-bar
  4. left-icon="back"
  5. :fixed="true"
  6. @clickLeft="back2Index"
  7. title="身份证测试平台"
  8. backgroundColor="#1677FF"
  9. height="88rpx"
  10. color="#fff"
  11. :border="false"
  12. safeAreaInsetTop></uni-nav-bar>
  13. <button @click="chooseImage">选择图片</button>
  14. </view>
  15. </template>
  16. <script>
  17. export default {
  18. data() {
  19. return {
  20. dataObj: {
  21. client_id: 'API Key',
  22. client_secret: 'Secret Key',
  23. },
  24. accessToken: ''
  25. }
  26. },
  27. onLoad() {
  28. // 方法调用
  29. this.getAccessToken()
  30. },
  31. methods: {
  32. // 百度云获取accessToken
  33. getAccessToken() {
  34. let self = this
  35. // 请求
  36. uni.request({
  37. url: '/baiduApi/oauth/2.0/token',
  38. data: {
  39. grant_type: 'client_credentials',
  40. client_id: self.dataObj.client_id,
  41. client_secret: self.dataObj.client_secret
  42. },
  43. dataType: "JSONP",
  44. method: 'POST',
  45. header: {
  46. 'Content-Type': 'application/x-www-form-urlencoded',
  47. },
  48. success: (res) => {
  49. // 将得到的res先转对象,在.点出我们想要的值
  50. this.accessToken = JSON.parse(res.data).access_token
  51. console.log('accessToken', this.accessToken)
  52. },
  53. fail(err) {
  54. console.log("访问失败", err)
  55. }
  56. })
  57. },
  58. back2Index(){
  59. uni.navigateBack()
  60. },
  61. }
  62. }
  63. </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之后就能选择图片了:
  1. methods: {
  2. // 选择图片
  3. chooseImage() {
  4. let self = this
  5. // 这也是uniapp原生api
  6. uni.chooseImage({
  7. count: 1,
  8. success: (ress) => {
  9. uni.showLoading({
  10. title: '正在识别中...'
  11. })
  12. // 下面将图片本地路径转base64
  13. console.log('ress', ress)
  14. self.toBase64(ress.tempFilePaths[0]).then((res) => {
  15. console.log("res", res)
  16. // 该函数是识别身份证的 也就是这个函数用到OCR百度云的接口
  17. self.uploadImage(res)
  18. })
  19. },
  20. fail(err) {
  21. uni.hideLoading()
  22. console.log(err)
  23. }
  24. })
  25. },
  26. // 转换为base64的函数
  27. toBase64(path){
  28. return new Promise((resolve, reject) => {
  29. uni.request({
  30. url: path,
  31. responseType: 'arraybuffer',
  32. success: (res) => {
  33. resolve(uni.arrayBufferToBase64(res.data))
  34. }
  35. })
  36. })
  37. },
  38. }
  •  发送请求,识别身份证正反面获取的信息:
  1. methods: {
  2. // 身份证识别
  3. uploadImage(path) {
  4. let self = this
  5. uni.request({
  6. url: '/baiduApi/rest/2.0/ocr/v1/idcard',
  7. data: {
  8. image: path, // 图片的base64路径
  9. access_token: self.accessToken, // Access Token
  10. id_card_side: 'front' // front身份证正面 back身份证反面
  11. },
  12. method: 'POST',
  13. header: {
  14. 'Content-Type': 'application/x-www-form-urlencoded'
  15. },
  16. success: (res) => {
  17. uni.hideLoading()
  18. console.log('res', res) // 这就是调用百度云OCR接口成功返回的值
  19. },
  20. fail(err) {
  21. uni.hideLoading()
  22. console.log(err)
  23. }
  24. })
  25. },
  26. }
  • 千万不要忘了还有跨域的问题哦!!!配置如下:
  1. "h5" : {
  2. "devServer" : {
  3. "port" : 8000,
  4. "disableHostCheck" : true,
  5. "proxy" : {
  6. "/baiduApi" : {
  7. "target" : "https://aip.baidubce.com", // 需要跨域的域名
  8. "changeOrigin" : true,
  9. "secure" : false,
  10. "pathRewrite" : {
  11. "^/baiduApi" : ""
  12. }
  13. }
  14. }
  15. },
  16. }

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

  • 我们来看看res的值

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/236803
推荐阅读
相关标签
  

闽ICP备14008679号