本文主要介绍iOCR财会票据识别的小程序功能实现。

想了解微信小程序的开发过程,请参看我之前的帖子:《UNIT接入小程序》https://ai.baidu.com/forum/topic/show/953022

想了解iOCR财会票据识别的调用过程,请参看我之前的帖子:《报账票据快速录入》https://ai.baidu.com/forum/topic/show/955800

1 系统框架

用到的技术主要有:百度iOCR财会票据识别和微信小程序。小程序将用户上传的图片提交给百度iOCR财会票据识别服务,进行自动分类及结构化识别。全部功能都在小程序客户端完成,不需要服务器,适合个人开发者学习调试使用,同时也为商业应用提供相应解决方案。

2 创建小程序项目

在根目录的全局配置文件app.json中增加:"pages/ iOCR / iOCR " ,会自动创建相关页面文件,结构如下:

iOCR.js:功能逻辑模块

iOCR.wxss:页面样式文件

iOCR.wxml:页面布局文件

iOCR.json:页面配置文件

3 调用iOCR财会票据识别API

3.1 首先要在控制台创建应用,调用iOCR财会票据识别API,“获取API Key/Secret Key”。

接口文档地址:https://ai.baidu.com/docs#/ImageProcessing-API/824a761a

请求URL: https://aip.baidubce.com/rest/2.0/image-process/v1/style_trans

Body中放置请求参数,参数详情如下:

返回参数:

3.2 iOCR财会票据识别功能实现

(1)发送URL请求核心代码

//在baiduai.js中发送URL请求,并进行封装。

let iocrUrl = 'https://aip.baidubce.com/rest/2.0/solution/v1/iocr/recognise/finance';

//iOCR识别接口

let iOCRRequest = (base64Img, callback) => {

  var accessToken = app.globalData.access_token;

  //拼接接口body参数

  let params = {

    image: base64Img, //图片base64

    detectorId: 0

  }

  //发送接口请求

  wx.request({

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

    data: params,

    header: {

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

    },

    method: 'POST',

    success: function (res) {

      callback.success(res.data)

    },

    fail: function (res) {

      if (callback.fail)

        callback.fail()

    }

  })

}

//暴露出去的接口

module.exports = {

  iOCRRequest: iOCRRequest,

  getIocrToken: getIocrToken

}

(2)定义按钮点击事件

//在iOCR.js中定义定义按钮点击事件

  uploads: function () {

    api.getIocrToken();

    var that = this

    wx.chooseImage({

      count: 1, // 默认9

      sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有

      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有

      success: function (res) {

        // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片

        if (res.tempFiles[0].size > 4096 * 1024) {

          wx.showToast({

            title: '图片文件过大',

            icon: 'none',

            mask: true,

            duration: 1500

          })

        } else {

          that.setData({

            img: res.tempFilePaths[0]

          })

        }

        wx.showLoading({

          title: "分析中...",

          mask: true

        })

        //根据上传的图片读取图片的base64

        var fs = wx.getFileSystemManager();

        fs.readFile({

          filePath: res.tempFilePaths[0].toString(),

          encoding: 'base64',

          success(res) {

            //获取到图片的base64 进行请求接口

            api.iOCRRequest(res.data, {

              success(res) {

                  if (res.data != '') {

                    wx.hideLoading();

                    var text = '';

                    text += "\n";

                    var list1 = res.data.ret;

                    var len1 = list1.length;

                    for (var i = 0; i < len1; i++) {

                      var list2 = list1[i].ret;

                      var len2 = list2.length;

                      text += "发票类型:" + list1[i].templateSign + "\n";

                      text += "置信度:" + list1[i].scores + "\n";

                      for (var j = 0; j < len2; j++) {

                        text += list2[j].word_name + ":" + list2[j].word  + "\n"; 

                            console.info(list2[j].word_name + ":" + list2[j].word );

                      }

                      text += "\n";

                      console.info("\n");

                    }

                    let data = text;

                    that.setData({

                      output: data

                    })

                  } else {

                    wx.hideLoading();

                    wx.showModal({

                      showCancel: false,

                      title: '温馨提示',

                      content: '没有识别出结果'

                    })

                  }

              }

            })

          }

        })

      },

    })

  },

(3)修改页面样式文件 iOCR.wxss

.container {

margin-top: -110px;

background-repeat: no-repeat;

background-size: auto;

background-position: bottom;

background-position-x: right;

}

.up {

color: rgb(255, 255, 255);

font-size: 20px;

font-family: 微软雅黑;

width: 100%;

height: 50px;

vertical-align: middle;

text-align: center;

line-height: 45px;

border-radius: 5px;

}

.img_wrap {

margin-bottom: 10px;

width: 750rpx;

height: 500rpx;

background: #ececec;

}

.result{

font-size: 32rpx;

color: #fa4627;

border-top: 1rpx solid #eeeeee;

margin:30rpx 20rpx 0rpx 20rpx;

padding: 10rpx;

}

4 实现效果

作者: wangwei8638

百度大脑IOCR财会票据识别技术接入小程序,快速实现财会票据识别的更多相关文章

  1. 利用百度AI快速开发出一款“问答机器人”并接入小程序

    先看实现效果: 利用百度UNIT预置的智能问答技能和微信小程序,实现语音问答机器人.这里主要介绍小程序功能开发实现过程,分享主要功能实现的子程序模块,都是干货! 想了解UNIT预置技能调用,请参看我之 ...

  2. vue+uni-app商城实战 | 第一篇:【有来小店】微信小程序快速开发接入Spring Cloud OAuth2认证中心完成授权登录

    一. 前言 本篇通过实战来讲述如何使用uni-app快速进行商城微信小程序的开发以及小程序如何接入后台Spring Cloud微服务. 有来商城 youlai-mall 项目是一套全栈商城系统,技术栈 ...

  3. 如何让微信小程序快速接入七牛云

    如果你确定用七牛运行小程序的话,给大家分享一个九折优惠码:61d1fd4d1 月 9 日 微信小程序正式发布,小程序终于揭开了它神秘的面纱,开发者对小程序的追捧更是热度不减.从小程序的热门应用场景来看 ...

  4. 使用百度大脑iOCR,快速自定义机票行程单模板识别

    1. 功能介绍百度已经推出了iOCR财会票据识别,针对财会报销场景提出的专项解决方案,可对各类财务票据.报销单.银行回单.对账单进行自动分类及结构化识别,并支持用户为固定版式的新票据/单据自定义结构化 ...

  5. 百度大脑UNIT3.0智能对话技术全面解析

    智能客服.智能家居.智能助手.智能车机.智能政务……赋予产品智能对话能力是提升产品智能化体验.高效服务的重要手段,已经开始被越来越多的企业关注并布局.然而,智能对话系统搭建涉及NLP.知识图谱.语音等 ...

  6. 微信小程序(一)基本知识初识别

    最近微信圈里小程序很火的样子,以前小程序刚开始的时候研究了一下,多日没关注发现一些东西都淡忘了,最后决定还是记录下来的好.    毕竟好记星比不上烂笔头嘛~

  7. 微信小程序快速转成百度小程序的方法

    1.安装Node.js(>8.5.0)https://nodejs.org/ npm升级到最新版本的方法:npm install -g npm自动更新到最新版本 2.配置cnpm:在命令行中输入 ...

  8. 汽车Vin码识别——可以嵌入到手机里的新OCR识别技术

              汽车Vin码识别(车架号识别),顾名思义,就是识别汽车的Vin码(车架号),汽车Vin码识别(车架号识别)利用的是OCR识别技术,支持视频流获取图像,自动触发识别,另外汽车Vin码 ...

  9. 3D动态人脸识别技术分析——世纪晟人脸识别实现三维人脸建模

    - 目录 - 国内3D动态人脸识别现状概况 - 新形势下人脸识别技术发展潜力 - 基于深度学习的3D动态人脸识别技术分析 1. 非线性数据建模方法 2. 基于3D变形模型的人脸建模 - 案例结合——世 ...

随机推荐

  1. 高效PHP Redis缓存技术,可参考下步骤

    是否想过PHP使用redis作为缓存时,如何能: 前后台模块共用Model层: 但是,不能每个Model类都进行缓存,这样太浪费Redis资源: 前后台模块可以自由决定从数据库还是从缓存读数据: 没有 ...

  2. phpstorm2019激活码

    6ZUMD7WWWU-eyJsaWNlbnNlSWQiOiI2WlVNRDdXV1dVIiwibGljZW5zZWVOYW1lIjoiSmV0cyBHcm91cCIsImFzc2lnbmVlTmFtZ ...

  3. [书籍]值得纪念的第100篇博客,推荐一些看过的UI书籍

    1. 前言 来到博客园11年,这两年闲下来了才有时间写写博客,不知不觉终于写到第100篇博客了.回顾过去发表的博客,居然大部分都与UI相关.明明我本来从事的是Oracle的相关开发,明明我当初的目标是 ...

  4. Go语言冒泡、选择、插入、快速排序实战浅析

    Hello,各位小伙伴大家好,我是小栈君,今天为大家带来的分享是关于go语言中的排序实战浅析. 我们就实际操作关于go的冒泡排序.选择排序.插入排序和快速排序四种方式的理论和实战进行分享,希望能够为大 ...

  5. java学习引言

    Java学习之路:不走弯路,就是捷径 0.引言 软件开发之路是充满荆棘与挑战之路,也是充满希望之路.Java学习也是如此,没有捷径可走.梦想像<天龙八部>中虚竹一样被无崖子醍醐灌顶而轻松获 ...

  6. JSON.parse() 报错和一些解决方法

    js 报错 Unexpected end of JSON input,Unexpected token u in JSON at position 0 JSON 通常用于与服务端交换数据. 在接收服务 ...

  7. 高德APP全链路源码依赖分析工程

    一.背景 高德 App 经过多年的发展,其代码量已达到数百万行级别,支撑了高德地图复杂的业务功能.但与此同时,随着团队的扩张和业务的复杂化,越来越碎片化的代码以及代码之间复杂的依赖关系带来诸多维护性问 ...

  8. 通过Javascript 创建POST提交, 无页面刷新下载

    前端准备: //Download the template through "POST" request function getTargertContainer() { var ...

  9. 【重磅资料】ArchSummit全球架构师峰会·2019华为云技术专场资料下载

    ArchSummit全球架构师峰会是InfoQ中国团队推出的重点面向高端技术管理者.架构师的技术会议,54%参会者拥有8年以上工作经验.ArchSummit聚焦业界强大的技术成果,秉承"实践 ...

  10. springcloud集成kafka

    项目名称:布控预警 水平拆分出来的项目,作为一个单独的可以对外提供服务的项目 项目设计:springcloud,可以集成各个不同平台的一个作为对外提供的微服务项目 项目功能:实现各个平台和本平台之间的 ...