開發與維運

使用 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
歡迎大家加入官網客戶群,提出您的使用建議或疑問。

_
視覺智能.jpg

Leave a Reply

Your email address will not be published. Required fields are marked *