文/热心团长
编辑/麦壁瑜
前言
上海疫情期间,想必很多人每天都在做抗原测试。对于社区志愿者而言,如何快速统计抗原完成人数,并识别是否存在冒用、复用抗原信息的情况,是非常大的工作量。
统计抗原完成人数的问题容易解决,只需对比照片中抗原数量和住户上报人数即可。而如何识别抗原信息是否被冒用或重用,就需要志愿者核对每次抗原图片上试剂盒编号是否重复。如果每次都是手工输入编号再核对,工作量极大且容易出错。那么,如果能批量且自动识别抗原编码,就能为志愿者大大减少工作量。
正好,明道云在上海疫情期间上传了名为“防疫社区助手”的应用,其中已经有了较为完整的抗原自测结果登记功能,但其自动文字识别功能使用尚有不便。因此,某位社区热心团长尝试亲自写代码,或者找到更为便宜的二维码识别API来实现该功能。
流程原理
工具准备
在明道云,用户可以通过代码块和Webhook来实现相对复杂的自动化场景。而几家互联网大厂都提供简单好用的二维码识别接口,那我们只需选择调用方便且便宜的二维码识别接口即可。
腾讯云的二维码识别功能每月可领取1000次的免费额度,但API调用流程相对繁琐。对API调用不熟悉的用户而言还挺难配置的。热心团长就是这样的菜鸟,所以只好放弃腾讯云。
百度云二维码识别功能的免费额度就比较抠搜,全年才500次,但其优势在于API配置较方便,而且各参数配置信息很容易就能与明道云的配置整体对应。对新上手的菜鸟来说,百度云用起来比较简单,也比较符合低代码平台的预期设定。最后,热心团长选择了百度云。
搭建过程
首先,构建抗原自测结果提交表单。本功能主要涉及的是“抗原检测结果”中“试剂盒照片”字段和新增的“抗原编码”字段。详见下图。
通过明道云工作流配置,让系统自动识别图片二维码,并更新入抗原编码。整个配置过程主要使用了工作表事件触发、代码块(python)、Webhook、记录更新等动作。详见下图。
第一步:设置触发条件。对本次功能而言,就是当居民在表单中上传或更新抗原图片后,开始执行工作流。
第二步,读取上传图片的地址,并将其转换成后续动作可识别的格式。
将表单中“试剂盒照片”作为输入传入python代码块中,并提取出其中有效的图片地址。此处使用了笨办法,就是将读取到地址的首尾各两个字符去除,中间即为单张图片的地址。如有多张图片,可参阅明道云帮助信息中对多张图片url地址读取的处理方式,此处不再赘述。
另外,在调试过程中input对象处应使用固定值,以达到调试目的。完成调试且得到需要的结果后,再将其替换为数据表中相关字段。
第三步,调用百度云二维码识别的API进行图片识别。
该步骤为整个功能实现的核心,在百度智能云中找到相关文档,可以发现几乎与明道云中webhook的配置一一对应。其中请求url和content-type无脑复制即可,Body中的url就是前一步python代码块的输出,access_token根据百度智能云中的说明一步步操作也可获得。
完成配置后,测试返回的参数如下图所示,其中codes_result_text即为我们想要的抗原编码。到此万里长征已走完大半,后续只需将其更新回表单即可。
第四步,表单更新。
这一步没啥难度,也就是将第三步获得的result_text填入表单中“抗原编码”字段即可。
使用效果
手机端完成抗原图片上传并同步后,后台自动识别抗原试剂盒上二维码代表的抗原编码并填入抗原编码字段中。
结论
综合考虑照片清晰度、拍摄角度等因素,这个功能在现实应用中可能存在图片二维码无法完全识别的可能。尽管如此,这个工具还是能极大地降低志愿者确认抗原编码的工作量。目前该功能仅实现抗原编码的自动录入,尚未实现对编码的格式要求以及自动对比功能,也希望大家能协助一起实现相关功能。