乐趣区

关于人工智能:人工智能助力复工复产模版-OCR-轻松搞定健康码识别

背景介绍

在有序推动停工复产过程中,公司为实现常态化核酸筛查工作,北京和上海两地办公室的员工须要每天提交自己所在地的衰弱宝 / 随申码和行程码。无关部门收到上传图片后,要核查每位员工的核酸状态,并确认是否去过高风险地区,审核工作须要破费大量的工夫和人力,目前急需寻求一种既能高效采集员工衰弱信息,又能保障员工集体衰弱数据隐衷的人工智能解决方案来应答沉重的衰弱数据审核工作。

目前该公司遇到的难点能够归结为如下方面:

  • 图片数量暴增:须要审核的衰弱码 / 行程码等图片每天都在大量减少。
  • 传统文字辨认无奈满足需要:因为图片起源不固定,可能为手机截屏(分辨率不固定),或者手机屏幕翻拍(拍摄角度随机),传统文字辨认技术无奈通过固定地位来精确获取文字内容。

待处理图片示例

  • 机器学习方面研发能力弱:如果针对三码辨认独自研发新性能,开发周期过长,无奈满足当下需要。
  • 集体衰弱数据安全:衰弱信息属于员工个人隐私数据,要最大水平保障这些数据的平安。
  • 服务器运维老本高,估算无限:图片上传会随时随地产生,须要有稳固的计算资源反对,如果采纳传统架构会加大运维老本。

员工衰弱信息文字辨认需要剖析

针对三码(衰弱码 / 随申码 / 行程码)内须要提取的文字信息别离为:

如图所示,三码中要提取的文字信息别离位于图片中绝对固定的区域,所以能够应用通用模版文字辨认性能来通过预约义模版实现文字内容提取。

亚马逊云科技的 AI Solution Kit 解决方案中的文本辨认类性能包含:通用文字辨认 OCR(反对简体 / 繁体),自定义模版文字辨认 OCR 和车牌辨认,其中自定义模版文字辨认性能(Custom OCR)能够基于预约义的模版信息,针对固定版式的票据或表格,自动识别其中的文字内容并返回后果,能够满足衰弱信息提取的需要。

所以,只须要针对三类截图创立好对应的模版,就能够提取截图中的衰弱信息了。在应用上只需在亚马逊云平台上部署该解决方案,就能够马上调用模版文字辨认性能对应的 URL 发送图片申请,从而取得所需的衰弱信息,不须要任何额定的机器学习常识,开发量极少,十分合乎现有的公司需要。

利用模版 OCR 解决方案辨认衰弱信息

具体操作能够分为四个步骤:部署解决方案,创立自定义模版,开发调用逻辑实现文字辨认并结构化输入后果。

首先是部署 AI Solution Kit 解决方案,通过 AI solution kit 解决方案的部署链接与施行手册(https://awslabs.github.io/aws…),能够在 10 分钟内将计划部署实现。因为计划整体设计是基于无服务器架构的,所以只会按调用量付费,不必放心会有额定的收入(老本预估:https://awslabs.github.io/aws…),在 AWS CloudFormation 堆栈(Stack)创立胜利后,就能够在 AWS CloudFormation 的输入(Outputs)页面看到基于 Amazon API Gateway 的调用 URL,对应 URL 名称(Key)为 CustomOCR。

接下来咱们能够测试一下生成的 API 调用 URL,首先须要新建一个行程码辨认模版。这里咱们应用开源图像处理软件 GIMP(https://www.gimp.org/downloads/)来获取坐标点。如下图所示,先在在电脑上用 GIMP 关上行程码手机截图后,再把鼠标挪动到图片上,就能够看到指定地位坐标点 X,Y 值,请依照左上,右上,右下,左下的顺时针程序创立矩形框四个坐标点序列。

先把鼠标挪动到行程卡中日期的四个角上(下图中矩形框地位),别离记录下四角对应坐标(坐标值显示在 GIMP 窗口的左下角区域)并指定该辨认区域名称为“更新工夫”。

用同样的形式,持续标注“手机号码”与“路径地区”的文字辨认区域,标注好后的残缺 JSON 数据如下:

[[[116, 335], [410, 335], [410, 374], [116, 374]], "手机号码"],
[[[176, 387], [452, 384], [452, 429], [176, 429]], "更新工夫"],
[[[53, 710], [465, 710], [465, 837], [54, 837]], "途经地区"]

接下来须要把图片转码成模版 OCR 可能解决的 Base64 格局,咱们能够应用 Base64Guru(https://base64.guru/converter…)在线上传图片,即可将图片转换为 Base64 编码的格局,转换实现后,与方才标注的辨认区域 JSON 合并成残缺的 JSON 数据,如下:

{
        "type" : "add",
        "img": "行程码图片的 Base64 编码",
        "template": [[[[116, 335], [410, 335], [410, 374], [116, 374]], "手机号码"],
        [[[176, 387], [452, 384], [452, 429], [176, 429]], "更新工夫"],
        [[[53, 710], [465, 710], [465, 837], [54, 837]], "途经地区"]
        ]
}

而后咱们通过如下 Python 代码,把创立模版的申请发送到模版 OCR 调用 URL,实现行程码模版的创立。

import json
import requests
import base64

jkb_img = open('jkb-template.png', 'rb')
base64_data = base64.b64encode(jkb_img.read())
payload = json.dumps({
    "type" : "add",
"img": str(base64_data, encoding="utf-8"),
"template": [[[[116, 335], [410, 335], [410, 374], [116, 374]], "手机号码"],
        [[[176, 387], [452, 384], [452, 429], [176, 429]], "更新工夫"],
        [[[53, 710], [465, 710], [465, 837], [54, 837]], "途经地区"]
    ]
})
url = "https://[API-ID].execute-api.[REGION-ID].amazonaws.com.cn/prod/custom-ocr/"
response = requests.request("POST", url, data=payload)
json.loads(response.text)

输入后果:

{'template_id': '3e2183c63b139f6870c7d0ac53ffdc138bd21c95'}

在输入中里咱们看到模版曾经创立好了,对应的模版 ID(template_id)为‘3e2183c63b139f6870c7d0ac53ffdc138bd21c95’,请记下模版 ID 用于前面的文字辨认。

咱们找来另一张翻拍格局的行程码图片,用来测试辨认成果

咱们用了短短 12 行代码,就实现了行程码衰弱信息的提取工作。

import base64
import json
import requests
import pandas as pd

jkb_img = open('scan-xjm-1.jpeg', 'rb')
base64_data = base64.b64encode(jkb_img.read())
payload = json.dumps({
    "template_id": "3e2183c63b139f6870c7d0ac53ffdc138bd21c95",
    "img": str(base64_data, encoding="utf-8")
})
url = "https://gqi4z1k9fl.execute-api.cn-northwest-1.amazonaws.com.cn/prod/custom-ocr/"
response = requests.request("POST", url, data=payload)
df = pd.DataFrame.from_dict(json.loads(response.text))

能够看出,AI Solution Kit 的模版文字辨认性能可能主动将不同手机分辨率截图甚至是翻拍的图像,精确检测辨认区域,并进行精准文字辨认,提取到所需的行程码信息。

接下来,咱们用与创立行程码模版雷同的办法,创立衰弱宝模版,创立衰弱宝模版的 JSON 数据如下:

{
    "type" : "add",
    "img": "衰弱宝图像的 Base64 编码",
    "template": [[[[173, 177], [364, 173], [364, 210], [173, 210]], "日期"],
    [[[211, 206], [319, 210], [319, 233], [208, 231]], "工夫"],
    [[[190, 575], [361, 575], [361, 628], [191, 629]], "状态"],
    [[[217, 668], [317, 671], [309, 709], [205, 710]], "核酸"],
    [[[386, 658], [424, 660], [424, 708], [386, 708]], "核酸工夫"],
    [[[263, 810], [483, 828], [483, 864], [289, 867]], "姓名"],
    [[[220, 876], [482, 870], [479, 909], [222, 908]], "身份证号"],
    [[[277, 917], [478, 909], [482, 954], [272, 950]], "查问工夫"],
    [[[272, 955], [483, 956], [475, 990], [269, 992]], "生效工夫"]
    ]
}

进行测试验证后,输入后果如下:

import base64
import json
import requests
import pandas as pd

jkb_img = open('jkb-1.png', 'rb')
base64_data = base64.b64encode(jkb_img.read())
payload = json.dumps({
    "template_id": "158ad1b39a4cba9ce4a1cade1fae2bb0740ccb10",
    "img": str(base64_data, encoding="utf-8")
})
url = "https://[API-ID].execute-api.[REGION-ID].amazonaws.com.cn/prod/custom-ocr/"
response = requests.request("POST", url, data=payload)
df = pd.DataFrame.from_dict(json.loads(response.text))

输入后果:

可见,模版 OCR 同样能够实现较简单的北京衰弱宝的辨认工作。最初,让咱们来创立随申码的模版,创立随申码模版的 JSON 数据如下:

{
    "type" : "add",
    "img": "随申码参考样图的 Base64 编码"
    "template": [[[[189, 256], [257, 261], [261, 293], [192, 296]], "姓名"],
    [[[140,366], [356,369], [350,406], [138,402]], "查问工夫"],
    [[[208,673], [285,675], [284,713], [211,712]], "状态"],
    [[[108,774], [181,777], [181,838], [114,839]], "天数"]
    ]
}

随申码辨认后果如下:

import base64
import json
import requests
import pandas as pd

jkb_img = open('xsm_1.png', 'rb')
base64_data = base64.b64encode(jkb_img.read())
payload = json.dumps({
    "template_id": "531030f86c071571e54c19c9ac5c63751e97cddf",
    "img": str(base64_data, encoding="utf-8")
})
url = "https://[API-ID].execute-api.[REGION-ID].amazonaws.com.cn/prod/custom-ocr/"
response = requests.request("POST", url, data=payload)
df = pd.DataFrame.from_dict(json.loads(response.text))

输入后果:

示例代码

文中示例代码请参考如下链接:

https://github.com/awslabs/aw…

总结

AI Solution Kit 解决方案中的模版文本辨认性能通过主动部署预训练的文本辨认模型,联合大词库,加强了对中文语言的解决与辨认能力,可能通过预约义模版主动校对并辨认结构化信息,从而进步了输出转化效率。基于亚马逊云科技的 Amazon CloudFormation 主动在 Amazon API Gateway 中创立调用 RESTful API,用户在部署解决方案后只需将 HTTP(s)申请参数提交到 Amazon API Gateway 主动创立的 URL 即可实现文本辨认性能。该解决方案基于 Amazon Lambda 等无服务架构,用户无需运维任何基础设施,只需按理论使用量领取费用。用户数据全程不做长久化存储,计算和存储资源在 API 执行结束后即销毁。AI Solution Kit 开源解决方案中更多更有意思的性能期待您去摸索。https://github.com/awslabs/aw…

本篇作者

严一
亚马逊 AWS 翻新解决方案架构师,负责基于 AWS 的云计算计划的架构设计,在利用开发, Serverless, 大数据方向有丰盛的实践经验。

何孝霆
亚马逊 AWS 翻新解决方案架构师,负责基于 AWS 的云计算计划的架构设计,在利用开发, 人智能,Serverless 方向有丰盛的实践经验。

退出移动版