水燃OCR自助抄表

产品介绍

居民的生活离不开水燃,这类公共服务均是计量收费,传统的计量方式为抄表员上门抄表计费,而这种计费模式存在一系列问题:效率低、成本高、抄表难。水燃公司寻求一种新的方式替代人工抄表,在此背景下,自助抄表具有广大的市场,而水燃公司对于户主自报数这件事,普遍比较谨慎保守,信任度不高。OCR 技术自动识别表具读数,快速完成自抄表上报过程。基于小程序平台,开放OCR抄表能力,大大降低了 ISV(独立软件开发商)的技术门槛,此外,芝麻授信机制也给水燃公司提供了信用保障。

场景介绍

抄表期开始之后,水燃公司通过支付宝提醒、短信等方式,通知用户进入支付宝小程序进行自助抄表,实时完成出账,即抄即缴,使整个抄表缴费的流程快捷便利。

业务流程

支付宝开放如下基础能力给 ISV:

  • OCR识别照片中水燃表具读数
  • 查询用户在支付宝生活缴费绑定的户号
  • 查询用户芝麻信用分(水燃公司可根据芝麻分判断是否授予用户自助抄表资格)
    ISV 基于上述基础能力,在小程序中集成自助抄表解决方案,用小程序代替过去抄表员人工的工作。水燃公司营销系统与水燃公司小程序服务端之间的交互方式一般有两种:异步和同步,分别介绍如下:

异步交互

水燃公司营销系统与水燃公司小程序服务端之间通过文件的形式交互:

  • 水燃公司按账期把可自抄的户号,通过 SFTP 上传到小程序服务端(手动或者自动);
  • 用户进入小程序,进行拍照自抄,上传到小程序服务端;
  • 水燃公司(手动或者自动)从小程序服务端 SFTP 下载用户已经自抄的结果(原始照片、读数);
  • 水燃公司进行自抄结果的稽核(手动或者自动),完成出账,并生成结果文件;
  • 水燃公司将出账结果文件(手动或者自动),通过 SFTP 上传到小程序服务端;
  • 支付宝通知用户自抄稽核通过并已出账,用户进行缴费。
    具体系统调用时序如下图所示:

异步.jpg

同步交互

水燃公司营销系统与水燃气公司小程序服务端之间通过同步接口的形式交互:

  • 水燃公司按账期把可自抄的户号通过 SFTP 上传到小程序服务端(手动或者自动)
  • 用户进入小程序,进行拍照自抄,上传到小程序服务端
  • 小程序服务端调用水燃公司营销系统接口,实时推送自抄结果(照片和读数)
  • 水燃气公司完成实时稽核并出账,同步返回小程序服务端出账结果
  • 支付宝通知用户自抄稽核通过并已出账,用户进行缴费
    具体系统调用时序如下图所示:

同步.jpg

注意:为了提升用户体验,建议 ISV 使用同步交互的方式实时出账。

应用案例

宁波兴光燃气自助抄表小程序,截图如下所示:

image

准入条件

  • 必须为水燃行业,公司具备一定规模且运营稳定,具有一定的客户群。具体考核将参考公司运营时长、规模、用户数来做出综合判定;
  • 公司具备一定的技术能力,能够独立完成技术对接,支持合作后的服务联动处理,数据反馈和异议处理;
  • 此功能定向开放,需和对接的业务BD申请开通此能力,若无对接的业务BD,可以去小程序社区发帖申请,我们会有对口的小二来协助能力申请;

接入介绍

申请接入

调用如下接口需和对接的业务BD申请开通此能力,若无对接的业务BD,可以去小程序社区发帖申请,我们会有对口的小二来协助能力申请。

接口调用

当能力申请通过后,开发者可调用 OCR 接口进行开发,具体业务流程可参考业务流程部分。

图片识别(FalconAIRec)

功能:识别表具照片的读数

参数名称参数说明
businessID业务识别ID(可选:JF-GAS、JF-WATER,分别表示燃气表、水表识别)
companyID缴费单位ID(接入时由技术支持提供)
lastReadResult上期表具读数
maxRecResult预估本期最大读数(上期表读数 + 本期预估最大使用量)

调用示例:

  1. my.call("FalconAIRec", {
  2. businessID: 'JF-GAS', // 业务识别ID
  3. companyID: 'XXX', // 缴费单位ID(接入时由技术支持提供)
  4. lastReadResult: '5', // 上期表具读数
  5. maxRecResult: '300' // 预估本期最大读数(上期表读数 + 本期预估最大使用量)
  6. }, (results) => {
  7. console.log(result.status);
  8. });

返回结果有4种:

  • 识别成功:
  1. {
  2. "success":yes,
  3. "recogResult":"12344", // 识别燃气表读数
  4. "uniquePicID":"1234566", // 图片唯一id
  5. "publicUrl":"https://oalipay-dl-django.alicdn.com/rest/1.0/image?fileIds=eOnHv_FPROKdFIhfl7VJ7AAAACMAARAD" // 拍摄读数图片,django服务
  6. }
  • 识别失败:
  1. {
  2. "success":no,
  3. "errCode":12//运行过程中各种导致失败的因素:rpc失败、lastReadResult、maxRecResult为空等
  4. }
  • 入参错误:
  1. {
  2. "success":no,
  3. "errCode":11 //入参异常 businessID,companyID 为空
  4. }
  • 用户主动退出:
  1. {
  2. "success":no,
  3. "errCode":13//退出
  4. }

校正反馈(FalconAIModify)

功能:用户确认提交表字时上报用户修改后的结果,便于后续分析优化算法

参数名称参数说明
uniquePicID图片识别接口返回的图片唯一ID
businessID业务识别ID(接入时由技术支持提供)
recogResult图片识别接口返回的识别读数
modifyResult用户手动修正之后的读数

调用示例:

  1. my.call("FalconAIModify", {
  2. uniquePicID: '1234566', // 图片识别接口返回的图片唯一ID
  3. businessID: 'JF-GAS', // 业务识别ID
  4. companyID: 'XXX', // 缴费单位ID(接入时由技术支持提供)
  5. recogResult: '123', // 图片识别接口返回的识别读数
  6. modifyResult: '123' // 用户手动修正之后的读数
  7. });

查询绑定的缴费户号(alipay.ebpp.common.billkey.query)

用户进入OCR自助抄表应用,ISV调用该接口,获取用户在本机构下关联的户号,可以方便用户快速选择户号,进入该户号的自助抄表页面。

接口入参:


参数

具体类型

是否列表类型

是否必填

最大长度

示例值

描述

biz_type

String





10

JF

业务类型缩写:

JF-缴费

sub_biz_type

String





10

GAS

子业务类型缩写:

GAS-燃气

WATER-水

charge_inst

String





50

XXX

出账机构缩写

接口返回:


名称

具体类型

是否列表类型

是否必填

示例值

描述

bill_key_list

EbppBillKey





-

户号列表

└ biz_type

String





JF

业务类型缩写:

JF-缴费

└ sub_biz_type

String





GAS

子业务类型缩写: GAS-燃气 WATER-水

└ charge_inst

String





XXX

出账机构缩写

└ bill_key

String





12345678

户号

└ owner_name

String





*三

脱敏的户名

接口调用流程:

户号查询.jpg

调用示例:

  1. AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");
  2. AlipayEbppCommonBillkeyQueryRequest request = new AlipayEbppCommonBillkeyQueryRequest();
  3. request.setBizContent("{" +
  4. "\"biz_type\":\"JF\"," +
  5. "\"sub_biz_type\":\"ELECTRIC\"," +
  6. "\"charge_inst\":\"CQKAIYUANGAS\"" +
  7. "}");
  8. AlipayEbppCommonBillkeyQueryResponse response = alipayClient.execute(request,accessToken);
  9. if(response.isSuccess()){
  10. System.out.println("调用成功");
  11. } else {
  12. System.out.println("调用失败");
  13. }

备注:此能力为定向开放,需要向技术支持申请定向开发 SDK。

如果没有查询到绑定的户号,需要引导用户到生活缴费该水燃公司的户号新增页面录入户号,完成之后返回到小程序,示例代码:

  1. my.call('startApp', {
  2. appId: '20000193',
  3. param: {
  4. url: myurl
  5. }
  6. });

备注:具体 myurl 的值可联系技术支持获取。

芝麻信用接口调用

芝麻信用接入具体可参考此芝麻信用接入文档

注意事项

用户体验

自助抄表功能需要引导用户如何保持正确的距离拍照。

示例距离:

屏幕快照 2017-12-08 下午12.01.24.png