最近筆者接到一個需要對健保卡進行 OCR 的需求,當時想到的是 Google 之前所提供的 tesseractOcr 等一些 C# 的 Open Sources Library,當時一共找了 tesseract、tessnet2、nocr、tesseract-master 等
前言
最近筆者接到一個需要對健保卡進行 OCR 的需求,當時想到的是 Google 之前所提供的 tesseractOcr 等一些 C# 的 Open Sources Library,當時一共找了 tesseract、tessnet2、nocr、tesseract-master 等,實際進行 OCR 時才發現要將圖片處裡為 Monochrome 才能大大提升辨識率,於是又找了 C# 進行 Monochrome 的 Lib,一開始找到的是 AForge.NET Framework,但似乎有些 Bug ,在處理 JPEG/PNG 圖像時會出現 Notsupport 的情形,於是又找了另一個 Stackoverflow 上的 C# 範例,總算解決了Notsupport 這個問題,但中文的辨識率仍然非常不理想。
後來在董大偉老師的提醒下才發現其實 Microsoft Cognitive Services 提供的服務中,就有一項是 OCR 的服務,於是立馬來實驗一下 (重點還是在於辨識率是否能提高?提高多少?)
Microsoft Cognitive Services
它的前身其實是微軟在 Build 2016 大會上所揭露的一系列 API,當時最串紅就是 How-Old.NET 這個網站
現在的 Microsoft Cognitive Services 則提供更多人工智慧相關的服務,由於服務相當多,而且它已經幫您分類好,像是 Vision (人臉辨識/圖像分析/OCR/情感)、Speech(語意分析)、Language(語音辨識)、Knownledge (知識探勘/資料分析)等等,可到如下網址申請該服務:
https://www.microsoft.com/cognitive-services
Cognitive Services APIs 目前仍然是 Preview,您可以點選如上圖的 「Get started for free」申請試用。
接著,會秀出如下畫面,如果您已經有 Live Account 請點選 My account
點選了 My account 之後會帶入一個畫面,因為試用所以您也只能點選 Yes 了..
點選「是」之後,會再帶到一個歡迎畫面,從這個畫面中我們可以知道目前有 15 個 Keys 可以使用,也就是有 15 項產品可以使用。
我們要使用的 OCR 服務是屬於 Computer Vision,為了撰寫程式,所以我們必須複製出 Key,因為撰寫程式時,SDK在呼叫服務時會需要這個 Key 的資訊。
開始撰寫程式
一、首先,我們建立一個 WPF 專案
將畫面規劃為如下:
二、加入 NuGet 套件
Computer Vision APIs 目前也可以從 NuGet Server 上面下載安裝,與 Build 2016 當時的命名空間相同,仍然是在 Microsoft.ProjectOxford.Vision 這一顆元件中
三、開始撰寫程式
使用 Computer Vision APIs 來進行 OCR 可說真的是非常的容易,只要建立 VisionServiceClient 的實體,呼叫 RecognitiveTextAsync 方法即可回傳結果。
我們直接來看程式碼:
// 建立 Microsoft Vision Service Client var visionClient = new Microsoft.ProjectOxford.Vision.VisionServiceClient(VisionApiKey); FileStream fs = new FileStream(filePath, FileMode.Open); try { OcrResults = await visionClient.RecognizeTextAsync(fs, LanguageCodes.ChineseTraditional); //抓取每一區塊的辨識結果 foreach (var Region in OcrResults.Regions) { foreach (var line in Region.Lines) { foreach (var Word in line.Words) { txtOCRResult.Text += Word.Text; } txtOCRResult.Text += "\n"; } } } finally { fs.Close(); }
執行結果如下:
結語:
在微軟的 Build 2016 大會揭露許多 Computer Vision APIs 與 Open Source 的 .NET Core、微軟擁抱 Docker 之後,未來的軟體慢慢都為以服務方式呈現,包括企業內部的軟體、ERP、CRM、也就是說,可能不再有套裝軟體了,這也改變當開發人員的開發方式,Devices 端的作業系統可能不再重要,你也可能不是開發獨立產品,或軟體,你可能是取用各種服務 APIs ,組合成企業內部系統,且這些 APIs 可能都來自不同的國家。
所以您準備好迎接這爆炸服務時代了嗎?我們待續....
簽名:
學習是一趟奇妙的旅程
這當中,有辛苦、有心酸、也有成果。有時也會有瓶頸。要能夠繼續勇往直前就必須保有一顆最熱誠的心。
軟體開發之路(FB 社團):https://www.facebook.com/groups/361804473860062/
Gelis 程式設計訓練營(粉絲團):https://www.facebook.com/gelis.dev.learning/
如果文章對您有用,幫我點一下讚,或是點一下『我要推薦』,這會讓我更有動力的為各位讀者撰寫下一篇文章。
非常謝謝各位的支持與愛護,小弟在此位各位說聲謝謝!!! ^_^