GSP075

總覽
在本實驗室,您將搭配使用多個機器學習 API,探索機器學習技術的強大功能。首先,您將使用 Cloud Vision API 的文字偵測方法,透過光學字元辨識 (OCR) 技術從圖片中擷取文字。接著,您會學到如何使用 Translation API 翻譯該文字,並透過 Natural Language API 分析。
目標
本實驗室的學習內容如下:
- 建立 Cloud Vision API 要求,並使用 curl 指令呼叫 API
- 使用 Vision API 的文字偵測 (OCR) 方法
- 使用 Translation API 翻譯圖片中的文字
- 使用 Natural Language API 分析文字
設定和需求
瞭解以下事項後,再點選「Start Lab」按鈕
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。
您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。
為了順利完成這個實驗室,請先確認:
- 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
- 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。
如何開始研究室及登入 Google Cloud 控制台
-
點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:
- 「Open Google Cloud console」按鈕
- 剩餘時間
- 必須在這個研究室中使用的臨時憑證
- 完成這個實驗室所需的其他資訊 (如有)
-
點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。
接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。
提示:您可以在不同的視窗中並排開啟分頁。
注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」。
-
如有必要,請將下方的 Username 貼到「登入」對話方塊。
{{{user_0.username | "Username"}}}
您也可以在「Lab Details」窗格找到 Username。
-
點選「下一步」。
-
複製下方的 Password,並貼到「歡迎使用」對話方塊。
{{{user_0.password | "Password"}}}
您也可以在「Lab Details」窗格找到 Password。
-
點選「下一步」。
重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。
注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
-
按過後續的所有頁面:
- 接受條款及細則。
- 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
- 請勿申請免費試用。
Google Cloud 控制台稍後會在這個分頁開啟。
注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。
啟動 Cloud Shell
Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。
-
點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示
。
-
系統顯示視窗時,請按照下列步驟操作:
- 繼續操作 Cloud Shell 視窗。
- 授權 Cloud Shell 使用您的憑證發出 Google Cloud API 呼叫。
連線建立完成即代表已通過驗證,而且專案已設為您的 Project_ID:。輸出內容中有一行文字,宣告本工作階段的 Project_ID:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。
- (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
- 點按「授權」。
輸出內容:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project
輸出內容:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需 gcloud 的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南。
工作 1:建立 API 金鑰
您將使用 curl 向 Vision API 傳送要求,因此必須產生 API 金鑰來傳遞要求網址。
-
依序前往「導覽選單」>「API 和服務」>「憑證」,建立 API 金鑰。
-
按一下「+ 建立憑證」。
-
在下拉式選單中,選取「API 金鑰」。
-
複製剛才產生的金鑰,然後點按「關閉」。
-
請將 API 金鑰儲存為環境變數,這樣就不必在每個要求插入金鑰值。
-
在 Cloud Shell 執行下列指令,將 <your_api_key> 替換成剛才複製的金鑰:
export API_KEY=<YOUR_API_KEY>
點選「Check my progress」,確認工作已完成。
建立 API 金鑰
工作 2:將圖片上傳至 Cloud Storage bucket
建立 Cloud Storage bucket
將圖片傳送至 Vision API 進行偵測的方式有兩種:將採用 Base64 編碼的圖片字串傳送至 API,或是傳送儲存在 Cloud Storage 的檔案網址。在本實驗室,您將建立 Cloud Storage bucket 來儲存圖片。
-
前往控制台的「導覽選單」 >「Cloud Storage」瀏覽器,然後點選「建立 bucket」。
-
為 bucket 取一個不重複的名稱:-bucket。
-
命名後,點按「選取如何控制物件的存取權」。
-
取消勾選「強制禁止公開存取這個 bucket」方塊。
-
在「存取控管」下方選擇「精細」,然後點按「建立」。
將圖片上傳至 bucket
- 用右鍵點選下方的法文招牌圖片,然後點按「另存圖片」,將圖片儲存至電腦並命名為「sign.jpg」。

- 前往剛才在 Cloud Storage 瀏覽器中建立的 bucket,依序點按「上傳」>「上傳檔案」,然後選取「sign.jpg」。
接著要允許公開查看檔案,同時維持 bucket 的私人存取權設定。
- 點按圖片檔案的 3 點圖示:

-
選取「編輯存取權」。
-
點按「新增項目」,然後設定下列項目:
- 在「實體」選取「公開」。
- 確認「名稱」的值為「allUsers」。
- 在「存取權」選取「讀取者」。

- 按一下「儲存」。
現在您會看到檔案已具備公開存取權。
現在檔案已加入 bucket,您可以建立 Vision API 要求,傳送圖片的網址了。
點選「Check my progress」,確認工作已完成。
將圖片上傳至 bucket
工作 3:建立 Cloud Vision API 要求
- 在 Cloud Shell 環境中建立
ocr-request.json 檔案,然後將下列程式碼新增至檔案,並將「my-bucket-name」替換為您建立的 bucket 名稱。您可以使用偏好的指令列編輯器 (例如 nano、vim、emacs) 建立檔案,或點按鉛筆圖示,在 Cloud Shell 開啟程式碼編輯器:

- 將下列內容新增至
ocr-request.json 檔案:
{
"requests": [
{
"image": {
"source": {
"gcsImageUri": "gs://my-bucket-name/sign.jpg"
}
},
"features": [
{
"type": "TEXT_DETECTION",
"maxResults": 10
}
]
}
]
}
接下來要使用 Cloud Vision API 的 TEXT_DETECTION 功能,對圖片執行光學字元辨識 (OCR),以擷取文字。
工作 4:呼叫文字偵測方法
- 在 Cloud Shell,使用
curl 呼叫 Cloud Vision API:
curl -s -X POST -H "Content-Type: application/json" --data-binary @ocr-request.json https://vision.googleapis.com/v1/images:annotate?key=${API_KEY}
回應的第一部分應如下所示:
{
"responses": [
{
"textAnnotations": [
{
"locale": "fr",
"description": "LE BIEN PUBLIC\nles dépêches\nPour Obama,\nla moutarde\nest\nde Dijon\n",
"boundingPoly": {
"vertices": [
{
"x": 138,
"y": 40
},
{
"x": 622,
"y": 40
},
{
"x": 622,
"y": 795
},
{
"x": 138,
"y": 795
}
]
}
},
{
"description": "LE",
"boundingPoly": {
"vertices": [
{
"x": 138,
"y": 99
},
{
"x": 274,
"y": 82
},
{
"x": 283,
"y": 157
},
{
"x": 147,
"y": 173
}
]
}
},
{
"description": "BIEN",
"boundingPoly": {
"vertices": [
{
"x": 291,
"y": 79
},
{
"x": 413,
"y": 64
},
{
"x": 422,
"y": 139
},
{
"x": 300,
"y": 154
}
]
}
...
]
}]
}
OCR 方法可從圖片中擷取大量文字。
從 textAnnotations 傳回的第一筆資料是 API 在圖片中找到的整段文字,其中包括:
- 語言代碼 (本例中 fr 代表法文)
- 文字字串
- 定界框,指出在圖片中找到文字的位置
接著,您會取得一個物件,其中包含在文字中找到的每個字詞,以及該字詞的定界框。
備註:如果圖片包含大量文字,可以使用 Cloud Vision API 的 DOCUMENT_TEXT_DETECTION 功能。這項功能的回應會包含額外資訊,並將文字細分為頁面、區塊、段落和字詞。
除非您會法文,否則可能不知道這句話的意思,因此下一步是翻譯。
- 執行下列
curl 指令,將回應儲存至 ocr-response.json 檔案,以便稍後參照:
curl -s -X POST -H "Content-Type: application/json" --data-binary @ocr-request.json https://vision.googleapis.com/v1/images:annotate?key=${API_KEY} -o ocr-response.json
工作 5:將圖片中的文字傳送至 Translation API
Translation API 可將文字翻譯成超過 100 種語言,還能偵測輸入文字的語言。如要將法文文字翻譯成英文,請將文字和目標語言的語言代碼 (en-US) 傳送至 Translation API。
- 首先,建立
translation-request.json 檔案,並加入下列內容:
{
"q": "your_text_here",
"target": "en"
}
q 用來放置要翻譯的字串。
-
儲存檔案。
-
在 Cloud Shell 執行下列 Bash 指令,從上一個步驟擷取圖片文字,並複製到新的 translation-request.json 檔案 (只需一個指令即可完成):
STR=$(jq .responses[0].textAnnotations[0].description ocr-response.json) && STR="${STR//\"}" && sed -i "s|your_text_here|$STR|g" translation-request.json
- 現在您可以準備呼叫 Translation API 了!這個指令會同時將回應複製到
translation-response.json 檔案:
curl -s -X POST -H "Content-Type: application/json" --data-binary @translation-request.json https://translation.googleapis.com/language/translate/v2?key=${API_KEY} -o translation-response.json
- 執行下列指令,檢查包含 Translation API 回應的檔案:
cat translation-response.json
這下您就能看懂招牌上的更多內容了!
{
"data": {
"translations": [
{
"translatedText": "TO THE PUBLIC GOOD the dispatches For Obama, the mustard is from Dijon",
"detectedSourceLanguage": "fr"
}
]
}
}
在回應中:
-
translatedText 包含翻譯結果
-
detectedSourceLanguage 是 fr,即法文的 ISO 語言代碼。
Translation API 支援超過 100 種語言,詳情請見語言支援參考頁面。
除了翻譯圖片中的文字,您可能還想進一步分析內容,這時 Natural Language API 就能派上用場。接著就來進行下一個步驟!
工作 6:使用 Natural Language API 分析圖片文字
Natural Language API 能擷取實體、分析情緒和語法,並將文字分類,幫助您理解文本。使用 analyzeEntities 方法,即可查看 Natural Language API 從圖片文字中找到哪些實體。
- 如要設定 API 要求,請建立
nl-request.json 檔案,並加入下列內容:
{
"document":{
"type":"PLAIN_TEXT",
"content":"your_text_here"
},
"encodingType":"UTF8"
}
這項要求會將文字資訊提供給 Natural Language API:
-
type:支援的類型值為 PLAIN_TEXT 或 HTML。
-
content:將要分析的文字傳遞至 Natural Language API。Natural Language API 也能處理儲存在 Cloud Storage 的文字檔案。如要傳送 Cloud Storage 中的檔案,請將 content 替換為 gcsContentUri,並將值設為文字檔案在 Cloud Storage 中的 URI。
-
encodingType:指示 API 要使用哪種文字編碼來處理文字。API 會依照該方法計算特定實體在文字中出現的位置。
- 在 Cloud Shell 執行下列 Bash 指令,將翻譯後的文字複製到 Natural Language API 要求的內容區塊:
STR=$(jq .data.translations[0].translatedText translation-response.json) && STR="${STR//\"}" && sed -i "s|your_text_here|$STR|g" nl-request.json
nl-request.json 檔案現在已包含原始圖片文字的英文譯文,接著就來分析吧!
- 使用下列
curl 要求,呼叫 Natural Language API 的 analyzeEntities 端點:
curl "https://language.googleapis.com/v1/documents:analyzeEntities?key=${API_KEY}" \
-s -X POST -H "Content-Type: application/json" --data-binary @nl-request.json
捲動查看回應,即可看到 Natural Language API 找到的實體:
{
"entities": [
{
"name": "dispatches",
"type": "OTHER",
"metadata": {},
"salience": 0.3560996,
"mentions": [
{
"text": {
"content": "dispatches",
"beginOffset": 23
},
"type": "COMMON"
}
]
},
{
"name": "mustard",
"type": "OTHER",
"metadata": {},
"salience": 0.2878307,
"mentions": [
{
"text": {
"content": "mustard",
"beginOffset": 38
},
"type": "COMMON"
}
]
},
{
"name": "Obama",
"type": "PERSON",
"metadata": {
"mid": "/m/02mjmr",
"wikipedia_url": "https://en.wikipedia.org/wiki/Barack_Obama"
},
"salience": 0.16260329,
"mentions": [
{
"text": {
"content": "Obama",
"beginOffset": 31
},
"type": "PROPER"
}
]
},
{
"name": "Dijon",
"type": "LOCATION",
"metadata": {
"mid": "/m/0pbhz",
"wikipedia_url": "https://en.wikipedia.org/wiki/Dijon"
},
"salience": 0.08129317,
"mentions": [
{
"text": {
"content": "Dijon",
"beginOffset": 54
},
"type": "PROPER"
}
]
}
],
"language": "en"
}
對於有維基百科頁面的實體,API 會提供中繼資料,包括該頁面的網址和實體的 mid。mid 是 Google 知識圖譜中對應至該實體的 ID。如要取得更多資訊,可以呼叫 Knowledge Graph API 並傳遞這個 ID。Natural Language API 會針對所有實體,提供實體在文字中出現的位置 (mentions)、實體類型 (type),以及顯著性 (salience) (介於 0 到 1 之間,表示實體在整段文字中的重要性)。除了英文,Natural Language API 也支援語言支援參考頁面列出的語言。
從這張圖片找出重要實體相對容易,但如果圖片庫含有數千張圖片,這項工作的難度就會大增。這時就能利用 OCR、翻譯和自然語言處理技術,從大量圖片資料集中擷取意義。
點選「Check my progress」,確認工作已完成。
使用 Natural Language API 分析圖片文字
恭喜!
您已學會如何搭配使用 3 種不同的機器學習 API 了:Vision API 的 OCR 方法可從圖片擷取文字,Translation API 則能將該文字翻譯成英文,而 Natural Language API 可找出該文字中的實體。只要同時使用這幾個 API,就能從大型圖片資料集中擷取有意義的資訊。
後續步驟/瞭解詳情
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2024 年 10 月 22 日
實驗室上次測試日期:2024 年 10 月 22 日
Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。