前言

无服务器应用程序可保证您无需配置或管理服务器,即可轻松运行代码内容。本文介绍了一种基于无服务器架构的文本识别 (Optical Character Recognition, OCR) 解决方案可以对自然场景图像中的文字进行精准识别,其底层基于Amazon Lambda 和 Amazon API Gateway实现,Amazon Lambda的按请求付费、自动扩展和易用性使其成为数据科学团队的热门部署选择。采用预训练模型的文本识别是指通过Amazon Lambda调用预先训练好的 OCR 机器学习模型,对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程,亦即将图像中的文字进行识别,并以文本的形式返回。该解决方案具有非常广泛的应用场景,可用于印刷体文字识别,手写材料识别,图像内容审核,出版物图像文本电子化等诸多领域。

OCR识别效果

架构介绍

无服务器架构使用事件驱动型模型。Amazon Lambda 服务运行 Lambda 函数以响应事件。Amazon Lambda 函数可以直接从众多集成的 Amazon 服务(包括 API Gateway)中调用。本方案基于Amazon CloudFormartion设计实现,部署后,用户或程序发送 API 请求至 Amazon API Gateway,请求 payload 中需要包含被处理的图片URL或Base64编码信息,Amazon API Gateway 接收到 HTTP 到请求后,将请求数据发送给对应的 Lambda 函数,Amazon Lambda 函数通过调用存储在 Amazon EFS 里面的预训练模型完成推理,并将文字识别结果(JSON格式数据)返回给调用发起端。由于基于为无服务器架构设计,所以用户只需按实际调用量付费。

架构图

Amazon API Gateway:一种完全托管的服务,可以帮助开发人员轻松创建、发布、维护、监控和保护任意规模的 API;

  • https://www.amazonaws.cn/api-...

Amazon Lambda:一种无服务器的计算服务,让您无需预置或管理服务器、创建可感知工作负载的集群扩展逻辑、维护事件集成或管理运行时,即可运行代码;

  • https://www.amazonaws.cn/lambda/

Amazon EFS:Amazon Elastic File System (Amazon EFS),提供可扩展性、弹性、可用性和耐用性,可作为企业应用程序和作为服务交付的应用程序的文件存储。为您的开发环境提供一个通用存储库,使您能够以安全有序的方式共享代码和其他文件。

  • https://www.amazonaws.cn/efs/

部署方式

首先,请通过浏览器登录您的Amazon Web Service账户。登录后在浏览器中打开亚马逊云科技解决方案库首页,然后在方案库里找到 AI Solution Kit 解决方案,点击打开链接后切换到”文本识别(OCR)”选项卡(在页面右上角可以切换显示语言),在页面右侧点击需要部署到的区域(region)按钮在控制台中启动相应的部署模版。

  • https://www.amazonaws.cn/solu...

下面,以部署到中国(北京)区域为例,对通用文本识别(OCR)方案进行部署。

请点击“从亚马逊云科技中国(北京)区域控制台中启动方案”按钮启动对应的Amazon CloudFormation。在创建堆栈页面检查一下 Amazon S3 URL 的链接,然后点击“下一步”按钮继续。

在指定堆栈信息页面您可以修改堆栈名称和认证方式等参数,在参数选项里,由于本解决方案使用 Amazon API Gateway来接收API 调用请求,您可以使用aikitscustomAuthType-xxx 参数指定API的调用方式,如果您希望在北京或宁夏区域提供无需身份验证(NONE)即可访问的 API 请求,则需要申请并确保您的Amazon Web Services账号已通过Internet Content Provider (ICP) 备案,80/443端口可以正常开启。您还可以在“modelType”下选择轻量模型(Lite)。点击“下一步”继续。

  • 模型说明

在审核页面上,查看并确认设置。选中确认模板将创建Amazon Identity and Access Management(IAM)资源的复选框。最后单击“创建堆栈”按钮开始部署。

您可以在 Amazon CloudFormation 控制台的状态列中查看堆栈的状态。大约15分钟后看到状态成为CREATE_COMPLETE说明创建成功。在堆栈创建成功后,可在Amazon CloudFormation的输出/Outputs标签页中看到以 aikitsInvokeURL 为前缀的记录,请记住对应的调用URL。

完成这些步骤后,可以打开Lambda Functions 控制台中的Lambda函数检查推理模型调用逻辑,目录结构如下所示,其中,infer_ocr_app.py为Lambda Function调用预训练模型的逻辑代码:

测试 OCR 功能

REST API接口

  • HTTP 方法: POST
  • Body 请求参数

  • 请求 Body 示例
{"url": "https://images-cn.ssl-images-amazon.cn/images/G/28/AGS/LIANG/Deals/2020/Dealpage_KV/1500300.jpg"
}
  • 示例样图

测试步骤

在配置结束后可以进行API调用测试,首先需要下载Postman测试工具。

下载地址: https://www.postman.com/downl...

在Postman中新建标签页,并把上一步中的API调用URL (aikitsInvokeURL) 粘贴到地址栏。选择POST作为HTTP调用方法。打开 Body 配置项,选中raw和JSON数据类型。在Body中输入如下测试数据,单击Send按钮即可看到相应结果。

  • 返回参数说明

如果在部署OCR解决方案时选择的AWS_IAM验证方式,需要在请求前打开Postman的Authorization配置,在下拉列表里选择 Amazon Web Service Signature ,并填写对应账户的AccessKey、SecretKey和 Amazon Web Service Region(如 cn-north-1 或 cn-northwest-1 )。

另外,也可以通过Python程序来进行测试,在命令行窗口执行如下命令,通过pip3安装好相关认证依赖项 aws_requests_auth。

pip3 install aws_requests_auth

把如下python源代码保持到本地,并以.py 为文件的后缀名。

import requests
import json
from aws_requests_auth.boto_utils import BotoAWSRequestsAuthauth = BotoAWSRequestsAuth(aws_host='[YOUR-API-ID].execute-api.us-east-1.amazonaws.com',aws_region='us-east-1',aws_service='execute-api')url = 'https://[YOUR-API-ID].execute-api.us-east-1.amazonaws.com/standard/ocr'
payload = {'url': 'https://images-cn.ssl-images-amazon.cn/images/G/28/AGS/LIANG/Deals/2020/Dealpage_KV/1500300.jpg'
}
response = requests.request("POST", url, data=json.dumps(payload), auth=auth)
print(json.loads(response.text))

在Amazon CloudFormation控制台页面,切换到“输出/Outputs”,找到aikitsInvokeURL字段,复制value里面的URL,用于替换python源代码里面url的地址,并且使用URL里面的API ID替换Python文件里面的[YOUR-API-ID],保存后执行python3 ocr-iam-auth.py,即可看到如下的测试文本输出结果:

% python3 ocr-iam-auth.py
[{'words': 'SALE', 'location': {'top': 38, 'left': 939, 'width': 73, 'height': 26}, 'score': 0.9969024062156677}, {'words': '镇店之宝', 'location': {'top': 89, 'left': 348, 'width': 194, 'height': 47}, 'score': 0.9993890523910522}, {'words': '同步全球天天低价', 'location': {'top': 156, 'left': 367, 'width': 192, 'height': 27}, 'score': 0.9992773532867432}, {'words': '海外购', 'location': {'top': 208, 'left': 348, 'width': 68, 'height': 28}, 'score': 0.9987406730651855}, {'words': '折', 'location': {'top': 241, 'left': 664, 'width': 30, 'height': 25}, 'score': 0.9383366107940674}]

最后

AI 解决方案合集中的通用文本识别方案通过自动部署预训练的文本识别模型,结合精准的语言模型和大词库,增强了对中文语言的处理与识别能力,提高输入转化效率。基于亚马逊云科技的Amazon CloudFormation 自动在Amazon API Gateway中创建调用RESTful API ,用户在部署解决方案后只需将 HTTP(s) 请求参数提交到 Amazon API Gateway 自动创建的 URL 即可实现文本识别功能,就可以得到准确的返回结果。并且,该方案基于Amazon Lambda 、 Amazon API Gateway 等无服务架构,用户无需担心在云中或本地管理和运行服务器或运行时。只需按实际使用量支付费用。整个无服务器架构中不会存储用户数据,从而保护了用户的隐私。敬请关注了解AI 解决方案合集以体验更多的开箱即用的云上AI功能。

本篇作者

严一

亚马逊云科技创新解决方案架构师,负责基于亚马逊云科技 的云计算方案的架构设计,在应用开发, Serverless, 大数据方向有丰富的实践经验。

何孝霆

亚马逊云科技创新解决方案架构师,负责基于亚马逊云科技的云计算方案的架构设计,在应用开发, 人工智能,Serverless 方向有丰富的实践经验。

手把手教程|构建无服务器通用文本识别功能相关推荐

  1. aws lambda使用_如何使用AWS Lambda和S3构建无服务器URL缩短器

    aws lambda使用 by Daniel Ireson 丹尼尔·埃里森(Daniel Ireson) 如何使用AWS Lambda和S3构建无服务器URL缩短器 (How to build a S ...

  2. 5分钟Serverless实践 | 构建无服务器的敏感词过滤后端系统

    前言 在上一篇"5分钟Serverless实践"系列文章中,我们介绍了什么是Serverless,以及如何构建一个无服务器的图片鉴黄Web应用,本文将延续这个话题,以敏感词过滤为例 ...

  3. 网络爬虫数据挖掘_我如何构建无服务器网络爬虫以大规模挖掘温哥华房地产数据...

    网络爬虫数据挖掘 by Marcello Lins 通过Marcello Lins 我如何构建无服务器网络爬虫以大规模挖掘温哥华房地产数据 (How I built a serverless web ...

  4. 超微服务器主板启动无反应_我如何构建无服务器启动

    超微服务器主板启动无反应 by Vikram Rangnekar 由Vikram Rangnekar 我如何构建无服务器启动 (How I Built a Serverless Startup) Le ...

  5. 使用 Amazon Aurora Serverless构建无服务器应用程序仅仅只需要10分钟

    官方操作手册地址:使用 Amazon Aurora Serverless构建无服务器应用程序 亚马逊云科技提供了100余种产品免费套餐.其中,计算资源Amazon EC2首年12个月免费,750小时/ ...

  6. 【人工智能】基于百度AI和Python编程的简单实现:通过QQ/Tim截图进行文本识别功能的分析实战详解——以获取百度文库付费内容为例

    前两天,博主在摸鱼时偶然接触到了百度AI,一时间来了兴趣.在实战测试了其中的"通用文字识别"后,发现效果还是蛮不错的.所以通过本次文章记录一下,以作备忘. 前期准备 百度AI前期准 ...

  7. 构建静态服务器_为静态网站构建无服务器联系表

    构建静态服务器 介绍 (Introduction) A few years ago AWS launched static hosting service S3, which was a paradi ...

  8. aws消息服务器,经验分享:我们如何使用AWS构建无服务器架构 - hypertrack

    我们的客户使用HyperTrack无需服务器即可访问实时位置.他们将我们用作实时位置的托管服务.他们不需要构建和管理服务器来摄取,处理,存储,提供和管理与其应用用户的实时位置相关的任何内容. 而我们自 ...

  9. 精准识别文字信息:通用文本识别算法整理

    通用文字识别(OCR)目前有很多火热的应用,比如身份证识别可以自动地从图片中定位和识别出身份信息.通用高精版识别,可以单字识别并返回单字坐标,表格识别可以识别文档上所有表格里面的信息内容.增值税发票识 ...

最新文章

  1. leetcode 72. 编辑距离
  2. Tomcat备份脚本
  3. 虚拟机+CentOS内核hack7、8、9、17失败记
  4. boost::detail::allocator模块的测试程序
  5. python requests post提交数据报错
  6. SpringBoot_入门-HelloWorld细节-自动配置
  7. React学习:组件之间的关系、参数传递-学习笔记
  8. 剑指offer之二叉树的镜像
  9. linux一些好用的命令和快捷键
  10. oracle数据导入与导出
  11. vim golang 插件
  12. matlab字符串操作总结
  13. BZOJ2337:[HNOI2011]XOR和路径——题解
  14. ENVI学习总结(十三)——波谱库的浏览与创建
  15. 脚本造成web浏览器运行速度减慢_脚本导致ie运行缓慢|ie8 提示脚本运行缓慢|脚本导致运行速度减慢...
  16. Oracle 19c 新特性:ANY_VALUE 函数和 LISTAGG 的增强
  17. 如何使用PPT制作风靡朋友圈的九宫格照片,两种方法供你选择
  18. 固定资产管理系统 概要说明书说明书
  19. SSL构建单双向https认证
  20. 企业文档管理难题,云盒子来解决!

热门文章

  1. 计算机网络实验二 CDMA编码 求所有正交码片
  2. 【BUCTOJ】链表的基本操作
  3. linux下IIC驱动开发分析
  4. ffmpeg hls切片工具
  5. C++学习系列(三)—— 泛型编程(STL)
  6. 通信原理Matlab仿真:模拟信号的幅度调制
  7. clickhouse 物化视图使用详解
  8. OpenGL 开始学习指南
  9. 面向WiFi密码破解的渗透测试研究
  10. 解决微信环境下无法通过链接唤起App Store、微信访问App Store 链接白屏问题