天天看點

開發函數計算的正确姿勢——OCR 服務

本文介紹将一個預制的 tesserocr 示例快速部署到函數計算平台。該示例借助于 Funcraft 安裝了最新的 4.1.1 版本的 tesseract,相比于包管理器的 3.0.2 版本識别率大幅度提升。該示例提供了一個 vue.js 實作的互動界面,有三種提供輸入圖檔的方式:使用示例圖檔、上傳圖檔或者提供圖檔 URL。然後使用者點選識别按鈕就能迅速體驗識别效果。将 tesserocr 部署于函數計算,借助于函數計算的自動伸縮和按量計費的特性,提供了免運維和成本優勢。

開發函數計算的正确姿勢——OCR 服務

簡介

首先介紹下在本文出現的幾個比較重要的概念:

OCR(光學字元識别): 光學字元識别(Optical Character Recognition, OCR)是指對文本資料的圖像檔案進行分析識别處理,擷取文字及版面資訊的過程。亦即将圖像中的文字進行識别,并以文本的形式傳回。
Tesserocr: Tesserocr 是 python 的一個 OCR 識别庫,但其實是對 tesseract 做的一層 python API 封裝,是以它的核心是 tesseract。
函數計算(Function Compute): 函數計算是一個事件驅動的服務,通過函數計算,使用者無需管理伺服器等運作情況,隻需編寫代碼并上傳。函數計算準備計算資源,并以彈性伸縮的方式運作使用者代碼,而使用者隻需根據實際代碼運作所消耗的資源進行付費。函數計算更多資訊參考。
Funcrfat: Funcraft 是一個用于支援 Serverless 應用部署的工具,能幫助您便捷地管理函數計算、API 網關、日志服務等資源。它通過一個資源配置檔案(template.yml),協助您進行開發、建構、部署操作。Fun 的更多文檔參考。

備注: 本文介紹的技巧需要 Funcraft 版本大于等于 3.6.8 。

本文介紹将一個預制的 tesserocr 示例快速部署到函數計算平台。該示例借助于 Funcraft 安裝了最新的 4.1.1 版本的 tesseract,相比于包管理器的 3.0.2 版本識别率大幅度提升。

該示例提供了一個 vue.js 實作的互動界面,有三種提供輸入圖檔的方式:使用示例圖檔、上傳圖檔或者提供圖檔 URL。然後使用者點選識别按鈕就能迅速體驗識别效果。

将 tesserocr 部署于函數計算,借助于函數計算的自動伸縮和按量計費的特性,提供了免運維和成本優勢。

下面是部署以後的使用效果動圖:

開發函數計算的正确姿勢——OCR 服務
開發函數計算的正确姿勢——OCR 服務

初始化

git clone https://github.com/vangie/fc-ocr-example.git
           

安裝依賴

$ fun install
           

本地測試

$ fun local start domain_for_ocr
using template: template.yml
CustomDomain domain_for_ocr of tesserocr/tesserocr was registered
        url: http://localhost:8000/
        methods: [ 'GET', 'POST' ]
        authType: ANONYMOUS

function compute app listening on port 8000!
           

使用浏覽器打開 http://localhost:8000/

同步檔案到 NAS

同步模型目錄

tessdata_fast

和 依賴目錄

.fun/root

.fun/python

到 NAS 盤。

$ fun nas sync
           

部署

$ fun deploy
using template: template.yml
using region: cn-shanghai
using accountId: ***********3743
using accessKeyId: ***********Ptgk
using timeout: 60

...

Detect 'DomainName:Auto' of custom domain 'domain_for_ocr'
Fun will reuse the temporary domain 1712300-1986114430573743.test.functioncompute.com, expired at 2020-04-27 19:35:00, limited by 1000 per day.

Waiting for custom domain domain_for_ocr to be deployed...
custom domain domain_for_ocr deploy success

...
           

注意上面傳回的臨時域名位址:1712300-1986114430573743.test.functioncompute.com

使用浏覽器打開 http://1712300-1986114430573743.test.functioncompute.com

小結

  1. Tesserocr 庫提供了開箱即用的圖檔識别效果,而且提供了預訓練好的模型,如果需要也可以直接訓練模型
  2. 函數計算為 Tesserocr 服務化提供了便利。借助函數計算可以輕松部署一個高可用、按量通路量計費的 OCR 服務。
  3. Funcraft 工具解決 Tesserocr 移植到函數計算的一些技術難題,比如原生依賴,打包問題。細節可以檢視 Funfile 檔案。
“阿裡巴巴雲原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的技術圈。”