IOCR自定义模板文字识别(带表格)
更新时间: 2022-05-09 浏览次数: {{ hits }}

疫情期间,为了照顾不会使用电子产品的老年人,社区准备了纸质登记表,为了便捷且无误地将信息录入系统,将登记表设置为文字识别模板,拍照上传即可录入纸质登记表信息。


1、实现效果

填写表单,上传或拍摄来访人员登记表,点击按钮,连接成功后,将返回数据填充至指定表单字段。

2、配置账户

注册百度AI开放平台账户,在百度AI开放平台进入“文字识别”服务,创建应用(接口选择勾选iOCR通用版),获取应用的API Key和Secret Key,前往氚云配置账户。

注:IOCR按量收费,价格约为0.05-0.02元/次,请自行查看计费规则,开通付费后,默认使用按量后付费形式进行阶梯计费。


3、自定义识别模板

前往iOCR通用版模板管理平台,创建自定义模板,上传健康证图片。

  • 框选参照字段:用于对后续传入的图片进行模板匹配和矫正

  • 框选识别区:图片中需要进行识别的字段,通过框选及命名构建 「字段名称 : 识别区内容」 的 Key : Value 对应关系,用于对后续传入的相同版式图片的相同位置内容进行结构化识别

  • 通过右上角“试一试”,上传图片测试,数据无误点击“立即发布”

  • 返回模板列表,获取模板ID



4、配置连接

根据iOCR自定义模板文字识别的API文档,配置连接

请求

  • 账户:配置好的百度AI开放平台账户

  • 请求:

    • 请求URL:https://aip.baidubce.com/rest/2.0/solution/v1/iocr/recognise

    • 请求方式:POST

    • Header:无

    • Body:

      • templateSign:配置上一步创建的模板ID

      • url:识别图片的链接,在此无需配置,之后在表单配置,将图片控件填充至此参数即可

  • 返回:根据识别字段设置返回参数

    • 日期:$.data.ret[?(@.word_name == '日期')].word

    • 负责人:$.data.ret[?(@.word_name == '负责人')].word

    • 来访时间:$.data.ret[2,6,10,14,18,22,26].word

    • 姓名:$.data.ret[3,7,11,15,19,23,27].word

    • 电话:$.data.ret[4,8,12,16,20,24,28].word

    • 体温:$.data.ret[5,9,13,17,21,25,29].word

    • 识别错误:$.error_msg

注:如需使用分类器,将templateSign替换为classifierId即可



如何配置Json Path

iOCR服务无论模板和识别字段如何,返回数据结构一致(可通过api文档的返回示例数据得知),返回参数设置为识别字段,配置JsonPath

  • JsonPath的格式为:$.data.ret[?(@.word_name == '识别字段名称')].word,替换识别字段名称即可。

  • 识别字段为表格列字段时,Json Path的格式为:$.data.ret[2,6,10,14,18,22,26].word,[]中的数字为识别字段值的位置,模板中第一个识别字段值的位置为0,从第一个识别字段值开始计数,所有“来访时间”列字段的值位置为2、6、10、14、18、22、26。因为表格列字段的word_name是变化的,因此才用列字段值的位置来获取值word。



调试

因为请求参数url指的是图片url,没法获取图片url进行调试。可以将API文档中的返回示例复制到Json Path在线解析进行调试,或者在百度模板管理平台中“试一试”获取图片识别返回的Json,根据Json编辑JsonPath。

注:了解更多JsonPath用法


5、表单配置

在表单添加按钮控件,扩展配置选择刚配置的连接,配置表单与连接请求返回的数据关联规则,因为“来访时间”、“姓名”等返回参数拥有多个值,建议填充至子表字段。