最佳实践 | 用腾讯云AI文字识别从0到1实现通信行程卡识别

1,102 阅读5分钟

疫情防控常态化下,学校为了保证孩子身体健康和安全,要求所有入校人员提供通信行程码并审核。但是通过人工审核的方式,不仅工作量极大且容易出错。作为一名软件开发工程师,我开始思考并着手调研,希望可以通过更智能的方式来解决。

在调研过程中,发现腾讯云AI文字识别产品推出了健康码OCR、行程卡OCR等多种自动化识别能力,刚好契合智能识别这个现实问题。但是识别出来的结果是否准确呢?

查阅了官方介绍资料,发现腾讯云AI联合腾讯优图实验室针对文本检测和文字识别关键技术进行了优化和创新。在文本检测技术方面进行了深度优化,提出了Compact Inception,通过设计合理的网络结构来提升各尺度的文字检测/提取能力。同时引入RNN多层自适应网络和Refinement结构来提升检测完整性和准确性。

在文本识别方面,经过大量实验和实践,对主流CNN+RNN+CTC方法进行了改进和创新:对CNN加入了横向非对称卷积和综合多种尺度感受野的特征,增强了网络对多尺度字体的支持。对RNN加入了Attention机制,Attention机制的加入,可以在所有特征块的基础上,得到每一个特征块在全局中的权重信息,有效提升整行识别的准确率。这无疑给我们吃了定心丸,放心的采用腾讯云AI文字识别的自动化识别能力了。

根据产品能力介绍,通信行程卡识别能力,可以自动识别出行程卡颜色、途经地、存在中高风险地区的城市、电话号码等信息,实现了全自动的模式,极大的减轻了人工审核的工作量。

接下来,我将详细讲述我是如何使用通信行程卡识别能力。

01.准备工作

为了使用通信行程卡识别能力,我们需要进行一些准备工作。

1. 腾讯云AI文字识别提供了体验服务(功能演示页面),我们先对通信行程卡能力进行了体验,Demo识别的效果很不错。

图片

2. 在使用腾讯云AI文字识别之前需要开通文字识别服务。在腾讯云OCR控制台页面,我们成功开通了文字识别服务。

图片

3.服务开通成功后,腾讯云AI文字识别赠送了免费的资源包,50~1000次的免费额度。当免费资源包用尽后,我们先是购买了预付费资源包,后来又开通了后付费。

在购买页购买了通信行程卡识别1千次的资源包。在资源包管理页面中看到了资源包的具体使用情况。

图片

在设置页面开通了后付费服务,每个月来结算。后付费设置每月只能变更一次,而且变更后次日0点生效。

图片

02.操作流程

通过下面几个步骤我们正式开始使用通信行程卡能力。

  • 获取个人密钥

  • 通信行程卡API文档

  • 体验在线调用

  • 使用集成腾讯云OCR的SDK

  • 查询调用量

2.1获取个人密钥

第一步,我们需要个人密钥。在腾讯云访问管理的API密钥管理页面,我们新建了个人密钥。

图片

2.2通信行程卡识别API文档

第二步,就是查看具体的使用说明了,在文字识别的API文档中查看了通信行程卡识别的输入入参、输出出参、错误码等信息。

图片

2.3体验在线调试

第三步,腾讯云AI文字识别还提供了在线调用API Explorer工具,我们通过这个工具体验了下在线调用,更加直观的看到了请求参数和返回值。

图片

2.4使用集成腾讯云OCR的SDK

第四步,就是真正的使用。

云 API 3.0 提供了配套的开发工具集(SDK),支持多种编程语言。在API文档文档的最下方,我们查看了SDK具体使用方法,十分简单方便。

我们使用的开发语言是 Node.js 。

  • 通过 npm 安装

    npm install tencentcloud-sdk-nodejs --save

  • 使用SDK调用通信行程卡识别接口

    const tencentcloud = require("../tencentcloud-sdk-nodejs");

    const OcrClient = tencentcloud.ocr.v20181119.Client; const models = tencentcloud.ocr.v20181119.Models;

    const Credential = tencentcloud.common.Credential; const ClientProfile = tencentcloud.common.ClientProfile; const HttpProfile = tencentcloud.common.HttpProfile;

    let cred = new Credential(" SecretId ", " SecretKey "); let httpProfile = new HttpProfile(); let clientProfile = new ClientProfile(); /* 推荐使用 V3 鉴权。当内容超过 1M 时,必须使用 V3 签名鉴权。除 Node SDK 外,其他语言 SDK 都支持 V3。 clientProfile.signMethod = "TC3-HMAC-SHA256"; */ clientProfile.httpProfile = httpProfile; let client = new OcrClient(cred, "ap-guangzhou", clientProfile);

    let req = new models.RecognizeTravelCardOCRRequest();

    req.ImageUrl = "test.jpg";

    client.RecognizeTravelCardOCR(req, function(errMsg, response) {

    if (errMsg) { console.log(errMsg); return; }

    console.log(response.to_json_string());

    });

2.5查询调用量

第五步,调用成功后,我们在腾讯云OCR控制台查看了接口的调用明细,包括了调用量、成功量、失败量等信息。

图片

主账号登录后查看了所有账号的调用量明细,子账号只能查询自己的调用量明细。在用量查询权限管理页面给子账号赋权后,子账号也查询到了所有子账号的调用量明细权限了。

图片