使用 Serverless 工作流快速构建 AI Serving 应用

人工智能在最近两年一直是很火的话题,我们也越来越多的在实际生活场景中能感受到 AI 所带来的便利,比如:自动售货机购物已经可以使用支付宝人脸支付;进行一些与财务相关的 APP 注册的时候 APP 已经可以自动进行活体人脸检测;小区的物业、门禁系统支持身份证/驾驶证/车牌号的自动身份识别等等。这些应用所用到的核心 AI 基础能力是一样的,如人脸人体检测、卡证识别等。目前阿里云视觉智能开放平台以 API 的方式向开发者提供了 100 多项 AI 能力,作为产品以及应用的开发者,我们可以越来越简单的使用这些 AI 能力,更加聚焦于业务。

在实际的产品或应用中,这些图片识别的 API 往往是作为一个处理流程的某个步骤。比如:

在用户 APP 注册的过程中,上传身份证照片->身份证照片识别,提取关键信息->记录关键信息,进行业务处理->返回注册结果 就是一个典型的图片处理流程。这类场景使用 Serverless 工作流来进行处理是十分合适的。

为适应用户的需求,Serverless 工作流对阿里云视觉智能开放平台提供的 AI 能力进行了集成(已支持的 API 能力详见 列表),丰富了用户的体验,降低了用户在工作流中使用 AI 能力的成本。在集成视觉智能平台之前,用户需要手动编写 API 调用的处理逻辑,并处理 API 调用的各种异常,现在可以直接将视觉智能 API 调用作为流程中的一个步骤进行处理,并将结果数据传递到后续的流程中。这种使用方式将极大简化用户的处理逻辑,降低开发成本。

下面我们将以上述 APP 注册场景作为示例,详细解释如何在 Serverless 工作流中编排视觉智能 API。

在流程中集成身份证识别能力

在上述 APP 注册场景中,身份识别(如用户身份认证、卡证信息录入、身份信息采集等)可以抽象为一个独立的流程,为不同的 APP 复用。在这个流程中,我们使用视觉智能开放平台所提供的身份证识别 RecognizeIdentityCard 能力进行图片识别。整个流程定义如下:

version: v1beta1
type: flow
steps:
  - type: task
    name: APIRecognizeIdentityCard
    action: ocr:RecognizeIdentityCard
    inputMappings:
      - target: image
        source: $input.imageUrl
      - target: cardSide
        source: face
    outputMappings:
      - target: name
        source: $local.Data.FrontResult.Name
      - target: gender
        source: $local.Data.FrontResult.Gender
      - target: idNumber
        source: $local.Data.FrontResult.IDNumber
    serviceParams:
      ImageURL: $.image
      Side: $.cardSide
    retry: # 针对系统内部错误进行重试
      - errors:
          - ocr.ServiceUnavailable
          - ocr.InternalError
          - ocr.Timeout
          - ocr.InvalidResult
          - ocr.InvalidImage.Download
        intervalSeconds: 10
        maxAttempts: 2
        multiplier: 2

完成该流程的定义后,即可在您的业务流程中使用 Serverless 工作流所提供的 SDK,传入不同的 imageUrl 对流程进行调用。

流程详解

步骤定义

为使用 API 编排功能,我们需要定义 任务步骤。根据 使用示例,在 action 下指定 serviceNameapiName 分别为 action: ocr:RecognizeIdentityCard;

输入及输出

输入输出参数可参考 RecognizeIdentityCard文档 。在 ServiceParams 中我们将 API 所需的 imageUrl 定义为输入,这样可以做到在执行时指定不同的图片作为流程的输入从而达到识别不同身份证的目的。

输出 outputMappings 与普通的任务步骤一致,对于 API 的返回,我们只关心姓名、性别及身份证号,因此在这里我们只将这些结果作为输出。

错误处理

在错误处理方面,本流程主要需要考虑对服务内部错误进行重试。API 的所有错误码见 文档,需要额外注意的是在工作流中使用这些错误码需要添加服务名称作为前缀,即 ocr.xxx

注:该应用已上线应用中心,您可以一键 尝鲜

更多信息

阿里云视觉智能开放平台目前已开放 100 + AI API 。Serverless 工作流已集成其中的大部分能力,具体详见 阿里云视觉智能开放平台 API
欢迎大家加入官网客户群,提出您的使用建议或疑问。

使用 Serverless 工作流快速构建 AI Serving 应用
使用 Serverless 工作流快速构建 AI Serving 应用

上一篇:Selenium+Pytest自动化测试框架实战


下一篇:方圆之内-继承相关限制 | 带你学《Java面向对象编程》之三十八