本页介绍了如何在 Google Distributed Cloud (GDC) 气隙式设备上使用 Optical Character Recognition (OCR) API 检测文件中的文本。
GDC 气隙设备上的 Vertex AI 的 OCR 服务使用 BatchAnnotateFiles
API 方法检测 PDF 和 TIFF 文件中的文本。
准备工作
在开始使用 OCR API 之前,您必须有一个启用了 OCR API 的项目,并且拥有相应的凭据。 您还可以安装客户端库,以便调用 API。如需了解详情,请参阅设置字符识别项目。
使用内嵌请求检测文本
BatchAnnotateFiles
方法可检测一批 PDF 或 TIFF 文件中的文本。您直接在 API 请求中将要检测文本的文件作为内容发送。系统会在 API 响应中以 JSON 格式返回检测到的文本结果。
您必须为 API 请求的 JSON 正文中的字段指定值。下表介绍了使用 BatchAnnotateFiles
API 方法发出文本检测请求时必须提供的请求正文字段:
请求正文字段 | 字段说明 |
---|---|
content |
包含要检测的文字的文件。您提供二进制文件内容的 Base64 表示形式(ASCII 字符串)。 |
mime_type |
源文件类型。您必须将其设置为以下值之一:
|
type |
您需要从文件中检测出的文本类型。 指定以下两种注解功能之一:
|
language_hints |
可选。用于文本检测的语言列表。 系统会将此字段的空值解读为自动语言检测。 对于基于拉丁字母的语言,您无需设置 language_hints 字段。如果您知道文件中文本的语言,设置提示有助于获得更好的结果。 |
pages |
可选。要处理的文件页数,用于文本检测。 您可以指定的最大页数为 5。如果您未指定页数,则服务会处理文件的前五页。 |
发出内嵌 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) print("Got token: ") print(creds.token) 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
。