ESAP4.0功能前瞻
客户需求
我要在现场能快速记录单据,包括发票,银行回单等,直接拍照上传,最好能自动识别发票号
等关键信息。
祭出4.0组件
因为AI识别发票需要大量使用AccessToken,所以我们要从esap官网下载tokenserver组件服务,
下载解压后,使用notepad++等工具修改tc.yml,配置oauth2.0的id和key,Demo使用村长的百度AI,端口port用默认的19999
接下来进入admin配置令牌服务器,示例安装在本机,所以填入http://127.0.0.1:19999
实现场景
首先,制作一个【发票Demo】
模板,里面包含5个关键信息字段:买卖双方,发票号,日期,发票图
。
接下来,在企业微信的应用中增加一个【采发票】菜单,ID=cfp
,类型为:拍照或相册菜单
在esap查询中建立一组查询,有2个查询,其中第一个查询由菜单(ID=cfp)发起,模式=2,表示新建表单模式,设置下一步
,由于前面使用的是拍照或相册菜单,这里模板返回空。
实际填报效果如下,在点击【采发票】菜单后,直接传图即可。
工作台也生成了相应表单,客户需求搞定了。
代码解析
gettoken函数
4.x版简化为
token
配置tokenserver后生效,获取tokenserver中对应app的access_token,
Demo中的片断{ { ... gettoken "bdai" ... } }
最终会解析成 { { ... 百度AI的access_token ... } }
其他示例:{ { ... gettoken "app1" ... } }
makemap函数
4.x版简化为
map
makemap用来构建post请求的body,参数必须为偶数个数,例如{ {makemap "name" "村长" "num" 18988889999} }
会被解析为
一个body对象:{name: "村长", num: 18988889999}
base64,getbody函数
getbody
在4.x版简化为body
base64函数故名思意,将一组字节编码为base64,通常用getbody(url)来获取微信图片的字节。
使用base64编码图片字节是百度AI的要求。
apiget函数
4.x版简化为
get
,get(url)
原型:ApiGet(method, url, body)
该函数是一个http请求函数,method可以为get或post,函数返回json对象。
示例中,我们把用户发来的图片url(.praw)转化为字节并进行了base64编码,
然后post到了百度AI接口:https://aip.baidubce.com/rest/2.0/ocr/v1/vat_invoice,
最终得到的数据赋值给了$data变量,在后续的sql中就可以直接使用变量中的值了。
更多变量值参考百度AI文档:https://ai.baidu.com/docs#/OCR-API/5099e085
小结
主要应用Tokenserver配合ESAP获取AI所需的AccessToken,使用apiget等高级自定义工具函数联合查询。
本文示例应用ESAP3.0.32+支持,本文涉及的JU/NX数据库备份可在聚慧禅院中下载。
2019-03-20