將 Vision API 與 C# 搭配使用

1. 總覽

Google Cloud Vision API 可讓開發人員輕鬆在應用程式中整合視覺偵測功能,包括為圖片加上標籤、偵測臉部和地標、光學字元辨識 (OCR),以及為煽情露骨內容加上標記。

在本程式碼研究室中,您將專注於搭配 C# 使用 Vision API。您將瞭解如何執行文字偵測、地標偵測和臉部偵測!

課程內容

  • 如何使用 Cloud Shell
  • 如何啟用 Google Cloud Vision API
  • 如何驗證 API 要求
  • 如何安裝 C# 適用的 Vision API 用戶端程式庫
  • 如何執行標籤偵測
  • 如何執行文字偵測
  • 如何執行地標偵測
  • 如何執行臉部偵測功能

軟硬體需求

  • Google Cloud Platform 專案
  • 瀏覽器,例如 ChromeFirefox
  • 熟悉使用 C#

問卷調查

您會如何使用這個教學課程?

僅供閱讀 閱讀並完成練習

針對 C# 的使用體驗,您會給予什麼評價?

新手 中級 還算容易

根據您使用 Google Cloud Platform 服務的經驗,您會給予什麼評價?

新手 中級 還算容易

2. 設定和需求

自修環境設定

  1. 登入 Google Cloud 控制台,建立新專案或重複使用現有專案。如果您還沒有 Gmail 或 Google Workspace 帳戶,請先建立帳戶

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • 「專案名稱」是這項專案參與者的顯示名稱。這是 Google API 未使用的字元字串。您可以隨時更新付款方式。
  • 所有 Google Cloud 專案的專案 ID 均不得重複,而且設定後即無法變更。Cloud 控制台會自動產生一個不重複的字串。但通常是在乎它何在在大部分的程式碼研究室中,您必須參照專案 ID (通常為 PROJECT_ID)。如果您對產生的 ID 不滿意,可以隨機產生一個 ID。或者,您也可以自行嘗試,看看是否支援。在這個步驟後,這個名稱即無法變更,而且在專案期間內仍會保持有效。
  • 資訊中的第三個值是專案編號,部分 API 會使用這個編號。如要進一步瞭解這三個值,請參閱說明文件
  1. 接下來,您需要在 Cloud 控制台中啟用計費功能,才能使用 Cloud 資源/API。執行本程式碼研究室不會產生任何費用 (如果有的話)。如要關閉資源,以免產生本教學課程結束後產生的費用,您可以刪除自己建立的資源或刪除專案。新使用者符合 $300 美元免費試用計畫的資格。

啟動 Cloud Shell

雖然 Google Cloud 可以從筆記型電腦遠端操作,但在本程式碼研究室中,您將使用 Google Cloud Shell,這是一種在 Cloud 中執行的指令列環境。

啟用 Cloud Shell

  1. 在 Cloud 控制台中,按一下「啟用 Cloud Shell」圖示 d1264ca30785e435.png

cb81e7c8e34bc8d.png

如果您是第一次啟動 Cloud Shell,系統會顯示中繼畫面,說明這項服務的內容。如果系統顯示中繼畫面,請按一下「繼續」

d95252b003979716.png

佈建並連線至 Cloud Shell 只需幾分鐘的時間。

7833d5e1c5d18f54.png

這個虛擬機器已載入所有必要的開發工具。提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作,大幅提高網路效能和驗證能力。在本程式碼研究室中,您的大部分作業都可透過瀏覽器完成。

連線至 Cloud Shell 後,您應會發現自己通過驗證,且專案已設為您的專案 ID。

  1. 在 Cloud Shell 中執行下列指令,確認您已通過驗證:
gcloud auth list

指令輸出

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. 在 Cloud Shell 中執行下列指令,確認 gcloud 指令知道您的專案:
gcloud config list project

指令輸出

[core]
project = <PROJECT_ID>

如果尚未設定,請使用下列指令進行設定:

gcloud config set project <PROJECT_ID>

指令輸出

Updated property [core/project].

3. 啟用 Vision API

您必須先啟用 API 才能開始使用 Vision API。您可以透過 Cloud Shell 使用下列指令啟用 API:

gcloud services enable vision.googleapis.com

4. 安裝 C# 適用的 Google Cloud Vision API 用戶端程式庫

首先,請建立簡易的 C# 主控台應用程式,您要用來執行 Vision API 範例:

dotnet new console -n VisionApiDemo

您應該會看到應用程式已建立,並已解決依附元件:

The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.

接著前往 VisionApiDemo 資料夾:

cd VisionApiDemo/

然後將 Google.Cloud.Vision.V1 NuGet 套件新增至專案:

dotnet add package Google.Cloud.Vision.V1
info : Adding PackageReference for package 'Google.Cloud.Vision.V1' into project '/home/atameldev/VisionApiDemo/VisionApiDemo.csproj'.
log  : Restoring packages for /home/atameldev/VisionApiDemo/VisionApiDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.Vision.V1' version '1.2.0' added to file '/home/atameldev/VisionApiDemo/VisionApiDemo.csproj'.

您現在可以使用 Vision API 了!

5. 執行標籤偵測

Vision API 的基本功能之一,就是識別圖片中的物件或實體,也稱為標籤註解。標籤偵測功能可識別一般物體、位置、活動、動物物種、產品等。Vision API 會接收輸入圖片,並傳回最有可能套用至該圖片的標籤。會傳回最相符的標籤,以及與圖片相符的可信度分數。

在這個範例中,您將對上海街道場景的圖片執行標籤偵測功能。開啟 Cloud Shell 右上角的程式碼編輯器:

92ea233083f961c5.png

前往 VisionApiDemo 資料夾中的 Program.cs 檔案,然後將程式碼替換為以下程式碼:

using Google.Cloud.Vision.V1;
using System;

namespace VisionApiDemo
{
    class Program
    {   
        static void Main(string[] args)
        {
            var client = ImageAnnotatorClient.Create();
            var image = Image.FromUri("gs://cloud-samples-data/vision/using_curl/shanghai.jpeg");
            var labels = client.DetectLabels(image);

            Console.WriteLine("Labels (and confidence score):");
            Console.WriteLine(new String('=', 30));

            foreach (var label in labels)
            {
                Console.WriteLine($"{label.Description} ({(int)(label.Score * 100)}%)");
            }
        }
    }
}

請花一兩分鐘研究這些程式碼,並瞭解如何運用 Vision API C# 程式庫執行標籤偵測。

返回 Cloud Shell,執行應用程式:

dotnet run 

您應該會看到以下的輸出內容:

Labels (and confidence score):
==============================
Wheel (97%)
Tire (97%)
Photograph (94%)
Bicycle (94%)
Motor vehicle (89%)
Infrastructure (89%)
Vehicle (86%)
Mode of transport (84%)
Bicycle wheel (83%)
Asphalt (81%)

摘要

在這個步驟中,您可以對中國街道的圖片執行標籤偵測功能,並顯示最有可能與該圖片相關的標籤。進一步瞭解標籤偵測

6. 執行文字偵測

Vision API 的文字偵測功能會執行光學字元辨識。能偵測並擷取圖片中的文字,並支援多種語言。另外還具備自動語言識別功能。

在這個範例中,您將在系統軟體更新畫面的影像上執行文字偵測功能。

前往 VisionApiDemo 資料夾中的 Program.cs 檔案,然後將程式碼替換為以下程式碼:

using Google.Cloud.Vision.V1;
using System;

namespace VisionApiDemo
{
    class Program
    {   
        static void Main(string[] args)
        {
            var client = ImageAnnotatorClient.Create();
            var image = Image.FromUri("gs://cloud-samples-data/vision/text/screen.jpg");
            var response = client.DetectText(image);
            foreach (var annotation in response)
            {
                if (annotation.Description != null)
                {
                    Console.WriteLine(annotation.Description);
                }
            }
        }
    }
}

請花一兩分鐘研究此程式碼,瞭解如何運用 Vision API C# 程式庫執行文字偵測。

返回 Cloud Shell,執行應用程式:

dotnet run 

您應該會看到以下的輸出內容:

System Software Update
Back
Preparing to install...
After preparation is complete, the PS4 will automatically restart and the update file will be
installed.
37%
gus class
System
Software
Update
Back
Preparing
to
install
...
After
preparation
is
complete
,
the
PS4
will
automatically
restart
and
the
update
file
will
be
installed
.
37
%
gus
class

摘要

在這個步驟中,您可以對水獺組合的圖片執行文字偵測功能,並列印圖片中辨識出的文字。進一步瞭解文字偵測

7. 執行地標偵測

Vision API 的地標偵測功能可以偵測圖片中受歡迎的天然和人造建築。

在這個範例中,您要對「艾菲爾鐵塔」的圖片執行地標偵測。

前往 VisionApiDemo 資料夾中的 Program.cs 檔案,然後將程式碼替換為以下程式碼:

using Google.Cloud.Vision.V1;
using System;

namespace VisionApiDemo
{
    class Program
    {   
        static void Main(string[] args)
        {
            var client = ImageAnnotatorClient.Create();
            var image = Image.FromUri("gs://cloud-samples-data/vision/eiffel_tower.jpg");
            var response = client.DetectLandmarks(image);
            foreach (var annotation in response)
            {
                if (annotation.Description != null)
                {
                    Console.WriteLine(annotation.Description);
                }
            }
        }
    }
}

請花一兩分鐘研究該程式碼,瞭解如何運用 Vision API C# 程式庫執行地標偵測。

返回 Cloud Shell,執行應用程式:

dotnet run

您應該會看到以下的輸出內容:

Eiffel Tower

摘要

在這個步驟中,您可以對艾菲爾鐵塔的圖片執行地標偵測。進一步瞭解地標偵測

8. 執行情緒臉部偵測功能

臉部偵測功能會偵測圖片中的多個臉孔以及相關的重要臉部特徵,例如情緒狀態或穿著頭飾。

在這個例子中,您可以偵測出情緒狀態有四種不同的可能性,包括快樂、生氣、悲傷和驚喜。

前往 VisionApiDemo 資料夾中的 Program.cs 檔案,然後將程式碼替換為以下程式碼:

using Google.Cloud.Vision.V1;
using System;

namespace VisionApiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = ImageAnnotatorClient.Create();

            var image = Image.FromUri("gs://cloud-samples-data/vision/face/face_no_surprise.jpg");
            var response = client.DetectFaces(image);
            foreach (var annotation in response)
            {
                Console.WriteLine($"Picture: {image}");
                Console.WriteLine($" Surprise: {annotation.SurpriseLikelihood}");
            }
        }
    }
}

請花一兩分鐘研究這些程式碼,瞭解該如何使用 Vision API C# 程式庫執行情緒臉部偵測。

執行應用程式;

dotnet run

您應該會看到下列 face_no_surprise 範例的輸出內容:

Picture: { "source": { "imageUri": "gs://cloud-samples-data/vision/face/face_no_surprise.jpg" } }
 Surprise: Likely

摘要

在這個步驟中,您可以執行臉部偵測作業。如要進一步瞭解臉部偵測,請參閱這篇文章

9. 恭喜!

您已瞭解如何使用 C# 的 Vision API 對圖片執行不同的偵測!

清除所用資源

如何避免系統向您的 Google Cloud Platform 帳戶收取您在本快速入門導覽課程中所用資源的相關費用:

  • 前往 Cloud Platform 主控台
  • 選取您要關閉的專案,然後按一下「刪除」會安排將專案刪除。

瞭解詳情

授權

這項內容採用的是創用 CC 姓名標示 2.0 通用授權。