Google Distributed Cloud (GDC) 實體隔離設備中的 Vertex AI 光學字元辨識 (OCR) 服務,可偵測並擷取 PDF 和 TIFF 檔案中的文字。您可以在內嵌要求中,直接將本機檔案傳送至 BatchAnnotateFiles API 方法,該方法支援每次批次呼叫單一要求。
事前準備
如要開始使用 OCR API,必須先準備一個已啟用 OCR API 的專案,並取得適當的憑證。您也可以安裝用戶端程式庫,協助您呼叫 API。詳情請參閱「設定字元辨識專案」。
使用內嵌要求偵測文字
BatchAnnotateFiles 方法會偵測一批 PDF 或 TIFF 檔案中的文字。您直接將要偵測文字的檔案,當做 API 要求的內容傳送。系統會以 JSON 格式在 API 回應中傳回偵測到的文字。
您必須在 API 要求的 JSON 主體中指定欄位值。下表說明使用 BatchAnnotateFiles API 方法提出文字偵測要求時,必須提供的要求主體欄位:
| 要求主體欄位 | 欄位說明 |
|---|---|
content |
要偵測文字的檔案。您提供二進位檔案內容的 Base64 表示法 (ASCII 字串)。 |
mime_type |
這是來源檔案類型您必須將其設為下列其中一個值:
|
type |
您需要從檔案中偵測的文字類型。 指定下列其中一項註解功能:
|
language_hints |
選用。用於文字偵測的語言清單。 如果這個欄位留空,系統會解讀為自動偵測語言。 如果是以拉丁字母為基礎的語言,則不需要設定 language_hints 欄位。如果您知道檔案中的文字語言,設定提示可改善結果。 |
pages |
選用。要處理文字偵測作業的檔案頁數。 最多可以指定五個頁面。如未指定頁數,服務會處理檔案的前五頁。 |
提出內嵌 API 要求
使用 REST API 方法,向 OCR 預先訓練 API 提出要求。否則,請透過 Python 指令碼與 OCR 預先訓練 API 互動,偵測 PDF 或 TIFF 檔案中的文字。
以下範例說明如何使用 OCR 偵測檔案中的文字:
REST
請按照下列步驟,使用 REST API 方法偵測檔案中的文字:
將下列
request.json檔案儲存為要求主體:cat <<- EOF > request.json { "requests": [ { "input_config": { "content": BASE64_ENCODED_FILE, "mime_type": "application/pdf" }, "features": [ { "type": "FEATURE_TYPE" } ], "image_context": { "language_hints": [ "LANGUAGE_HINT_1", "LANGUAGE_HINT_2", ... ] }, "pages": [] } ] } EOF更改下列內容:
BASE64_ENCODED_FILE:二進位檔案內容的 Base64 表示法 (ASCII 字串)。這個字串的開頭字元類似/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==。FEATURE_TYPE:您需要從檔案中偵測的文字類型。允許的值為TEXT_DETECTION或DOCUMENT_TEXT_DETECTION。LANGUAGE_HINT:BCP 47 語言標記,用於文字偵測的語言提示,例如en-t-i0-handwrit。這個欄位為選填,如果留空,系統會自動偵測語言。
提出要求:
curl
curl -X POST \ -H "Authorization: Bearer TOKEN" \ -H "x-goog-user-project: projects/PROJECT_ID" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ https://ENDPOINT/v1/files:annotate更改下列內容:
PowerShell
$headers = @{ "Authorization" = "Bearer TOKEN" "x-goog-user-project" = "projects/PROJECT_ID" } Invoke-WebRequest -Method POST -Headers $headers -ContentType: "application/json; charset=utf-8" -InFile request.json -Uri "ENDPOINT/v1/files:annotate" | Select-Object -Expand Content更改下列內容:
Python
請按照下列步驟,透過 Python 指令碼使用 OCR 服務偵測檔案中的文字:
在您建立的 Python 指令碼中,加入下列程式碼:
from google.cloud import vision import google.auth from google.auth.transport import requests from google.api_core.client_options import ClientOptions audience = "https://ENDPOINT:443" api_endpoint="ENDPOINT:443" def vision_client(creds): opts = ClientOptions(api_endpoint=api_endpoint) return vision.ImageAnnotatorClient(credentials=creds, client_options=opts) def main(): creds = None try: creds, project_id = google.auth.default() creds = creds.with_gdch_audience(audience) req = requests.Request() creds.refresh(req) except Exception as e: print("Caught exception" + str(e)) raise e return creds def vision_func(creds): vc = vision_client(creds) input_config = {"content": "BASE64_ENCODED_FILE"} features = [{"type_": vision.Feature.Type.FEATURE_TYPE}] # Each requests element corresponds to a single file. To annotate more # files, create a request element for each file and add it to # the array of requests req = {"input_config": input_config, "features": features} metadata = [("x-goog-user-project", "projects/PROJECT_ID")] resp = vc.annotate_file(req,metadata=metadata) print(resp) if __name__=="__main__": creds = main() vision_func(creds)更改下列內容:
ENDPOINT:貴組織使用的 OCR 端點。詳情請參閱「查看服務狀態和端點」。BASE64_ENCODED_FILE:檔案內容的 Base64 表示法 (ASCII 字串)。這個字串的開頭字元類似/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==。FEATURE_TYPE:您需要從檔案中偵測的文字類型。允許的值為TEXT_DETECTION或DOCUMENT_TEXT_DETECTION。PROJECT_ID:您的專案 ID。
儲存 Python 指令碼。
執行 Python 指令碼,偵測檔案中的文字:
python SCRIPT_NAME將
SCRIPT_NAME替換為您為 Python 指令碼指定的名稱,例如vision.py。