Google Cloud Vision 運算元¶
先決任務¶
要使用這些運算元,您必須完成一些事項
使用 Cloud Console 選擇或建立 Cloud Platform 專案。
為您的專案啟用計費,如 Google Cloud 文件所述。
啟用 API,如 Cloud Console 文件所述。
透過 pip 安裝 API 庫。
pip install 'apache-airflow[google]'詳細資訊請參閱 安裝。
CloudVisionAddProductToProductSetOperator¶
建立一個新的 ReferenceImage 資源。
有關引數定義,請參閱 CloudVisionAddProductToProductSetOperator
使用運算元¶
我們使用 Google 庫中的 Product、ProductSet 和 Retry 物件
tests/system/google/cloud/vision/example_vision_autogenerated.py
from google.api_core.retry import Retry # isort:skip
tests/system/google/cloud/vision/example_vision_autogenerated.py
from google.cloud.vision_v1.types import ProductSet # isort:skip
tests/system/google/cloud/vision/example_vision_autogenerated.py
from google.cloud.vision_v1.types import Product # isort:skip
如果 product_set_id 和 product_id 是由 API 生成的,可以從 XCOM 中提取
tests/system/google/cloud/vision/example_vision_autogenerated.py
add_product_to_product_set = CloudVisionAddProductToProductSetOperator(
location=LOCATION,
product_set_id=product_set_create_output,
product_id="{{ task_instance.xcom_pull('product_create') }}",
retry=Retry(maximum=10.0),
timeout=5,
task_id="add_product_to_product_set",
)
否則可以明確指定
tests/system/google/cloud/vision/example_vision_explicit.py
add_product_to_product_set_2 = CloudVisionAddProductToProductSetOperator(
location=LOCATION,
product_set_id=GCP_VISION_PRODUCT_SET_ID,
product_id=GCP_VISION_PRODUCT_ID,
retry=Retry(maximum=10.0),
timeout=5,
task_id="add_product_to_product_set_2",
)
模板化¶
template_fields: Sequence[str] = (
"location",
"product_set_id",
"product_id",
"project_id",
"gcp_conn_id",
"impersonation_chain",
)
更多資訊¶
CloudVisionImageAnnotateOperator¶
對影像執行影像檢測和標註。
有關引數定義,請參閱 CloudVisionImageAnnotateOperator
使用運算元¶
我們使用 Google 庫中的 enums 和 Retry 物件
tests/system/google/cloud/vision/example_vision_annotate_image.py
from google.api_core.retry import Retry # isort:skip
tests/system/google/cloud/vision/example_vision_annotate_image.py
from google.cloud.vision_v1 import Feature # isort:skip
from system.google import DEFAULT_GCP_SYSTEM_TEST_PROJECT_ID
tests/system/google/cloud/vision/example_vision_annotate_image.py
annotate_image = CloudVisionImageAnnotateOperator(
request=annotate_image_request,
retry=Retry(maximum=10.0),
timeout=5,
task_id="annotate_image",
)
結果可以從 XCOM 中提取
tests/system/google/cloud/vision/example_vision_annotate_image.py
annotate_image_result = BashOperator(
bash_command="echo {{ task_instance.xcom_pull('annotate_image')"
"['logoAnnotations'][0]['description'] }}",
task_id="annotate_image_result",
)
模板化¶
template_fields: Sequence[str] = (
"request",
"gcp_conn_id",
"impersonation_chain",
)
更多資訊¶
CloudVisionCreateProductOperator¶
建立並返回一個新的產品資源。
關於提供的 Product 物件可能出現的錯誤
如果
display_name缺失或長度超過 4096 個字元,則返回 INVALID_ARGUMENT。如果
description長度超過 4096 個字元,則返回 INVALID_ARGUMENT。如果
product_category缺失或無效,則返回 INVALID_ARGUMENT。
有關引數定義,請參閱 CloudVisionCreateProductOperator
使用運算元¶
我們使用 Google 庫中的 Product 和 Retry 物件
tests/system/google/cloud/vision/example_vision_autogenerated.py
from google.cloud.vision_v1.types import Product # isort:skip
tests/system/google/cloud/vision/example_vision_autogenerated.py
from google.api_core.retry import Retry # isort:skip
tests/system/google/cloud/vision/example_vision_autogenerated.py
product = Product(display_name="My Product 1", product_category="toys")
product_id 引數可以省略(它將由 API 生成)
tests/system/google/cloud/vision/example_vision_autogenerated.py
product_create = CloudVisionCreateProductOperator(
location=LOCATION,
product=product,
retry=Retry(maximum=10.0),
timeout=5,
task_id="product_create",
)
或者可以明確指定
tests/system/google/cloud/vision/example_vision_explicit.py
product_create_2 = CloudVisionCreateProductOperator(
product_id=GCP_VISION_PRODUCT_ID,
location=LOCATION,
product=product,
retry=Retry(maximum=10.0),
timeout=5,
task_id="product_create_2",
)
模板化¶
template_fields: Sequence[str] = (
"location",
"project_id",
"product_id",
"gcp_conn_id",
"impersonation_chain",
)
更多資訊¶
CloudVisionDeleteProductOperator¶
永久刪除一個產品及其參考影像。
產品的元資料及其所有影像將立即刪除,但包含該產品的 ProductSets 上的搜尋查詢可能仍然有效,直到所有相關快取重新整理。
可能出現的錯誤
如果產品不存在,則返回 NOT_FOUND。
有關引數定義,請參閱 CloudVisionDeleteProductOperator
使用運算元¶
如果 product_id 是由 API 生成的,可以從 XCOM 中提取
tests/system/google/cloud/vision/example_vision_autogenerated.py
product_delete = CloudVisionDeleteProductOperator(
location=LOCATION,
product_id="{{ task_instance.xcom_pull('product_create') }}",
task_id="product_delete",
)
否則可以明確指定
tests/system/google/cloud/vision/example_vision_explicit.py
product_delete_2 = CloudVisionDeleteProductOperator(
location=LOCATION, product_id=GCP_VISION_PRODUCT_ID, task_id="product_delete_2"
)
模板化¶
template_fields: Sequence[str] = (
"location",
"project_id",
"product_id",
"gcp_conn_id",
"impersonation_chain",
)
更多資訊¶
CloudVisionGetProductOperator¶
獲取與 Product 相關的資訊。
可能出現的錯誤
如果
Product不存在,則返回 NOT_FOUND。
有關引數定義,請參閱 CloudVisionGetProductOperator
使用運算元¶
如果 product_id 是由 API 生成的,可以從 XCOM 中提取
tests/system/google/cloud/vision/example_vision_autogenerated.py
product_get = CloudVisionGetProductOperator(
location=LOCATION,
product_id="{{ task_instance.xcom_pull('product_create') }}",
task_id="product_get",
)
否則可以明確指定
tests/system/google/cloud/vision/example_vision_explicit.py
product_get_2 = CloudVisionGetProductOperator(
location=LOCATION, product_id=GCP_VISION_PRODUCT_ID, task_id="product_get_2"
)
模板化¶
template_fields: Sequence[str] = (
"location",
"project_id",
"product_id",
"gcp_conn_id",
"impersonation_chain",
)
更多資訊¶
CloudVisionProductSetCreateOperator¶
建立一個新的 ProductSet 資源。
有關引數定義,請參閱 CloudVisionCreateProductSetOperator
使用運算元¶
我們使用 Google 庫中的 ProductSet 和 Retry 物件
tests/system/google/cloud/vision/example_vision_autogenerated.py
from google.cloud.vision_v1.types import ProductSet # isort:skip
tests/system/google/cloud/vision/example_vision_autogenerated.py
from google.api_core.retry import Retry # isort:skip
tests/system/google/cloud/vision/example_vision_autogenerated.py
product_set = ProductSet(display_name="My Product Set")
product_set_id 引數可以省略(它將由 API 生成)
tests/system/google/cloud/vision/example_vision_autogenerated.py
product_set_create = CloudVisionCreateProductSetOperator(
location=LOCATION,
product_set=product_set,
retry=Retry(maximum=10.0),
timeout=5,
task_id="product_set_create",
)
或者可以明確指定
tests/system/google/cloud/vision/example_vision_explicit.py
product_set_create_2 = CloudVisionCreateProductSetOperator(
product_set_id=GCP_VISION_PRODUCT_SET_ID,
location=LOCATION,
product_set=product_set,
retry=Retry(maximum=10.0),
timeout=5,
task_id="product_set_create_2",
)
模板化¶
template_fields: Sequence[str] = (
"location",
"project_id",
"product_set_id",
"gcp_conn_id",
"impersonation_chain",
)
更多資訊¶
CloudVisionDeleteProductSetOperator¶
永久刪除一個 ProductSet。ProductSet 中的 Products 和 ReferenceImages 不會被刪除。實際的影像檔案不會從 Google Cloud Storage 中刪除。
有關引數定義,請參閱 CloudVisionDeleteProductSetOperator
使用運算元¶
如果 product_set_id 是由 API 生成的,可以從 XCOM 中提取
tests/system/google/cloud/vision/example_vision_autogenerated.py
product_set_delete = CloudVisionDeleteProductSetOperator(
location=LOCATION,
product_set_id=product_set_create_output,
task_id="product_set_delete",
)
否則可以明確指定
tests/system/google/cloud/vision/example_vision_explicit.py
product_set_delete_2 = CloudVisionDeleteProductSetOperator(
location=LOCATION, product_set_id=GCP_VISION_PRODUCT_SET_ID, task_id="product_set_delete_2"
)
模板化¶
template_fields: Sequence[str] = (
"location",
"project_id",
"product_set_id",
"gcp_conn_id",
"impersonation_chain",
)
更多資訊¶
CloudVisionGetProductSetOperator¶
獲取與 ProductSet 相關的資訊。
有關引數定義,請參閱 CloudVisionGetProductSetOperator
使用運算元¶
如果 product_set_id 是由 API 生成的,可以從 XCOM 中提取
tests/system/google/cloud/vision/example_vision_autogenerated.py
product_set_get = CloudVisionGetProductSetOperator(
location=LOCATION,
product_set_id=product_set_create_output,
task_id="product_set_get",
)
否則可以明確指定
tests/system/google/cloud/vision/example_vision_explicit.py
product_set_get_2 = CloudVisionGetProductSetOperator(
location=LOCATION, product_set_id=GCP_VISION_PRODUCT_SET_ID, task_id="product_set_get_2"
)
模板化¶
template_fields: Sequence[str] = (
"location",
"project_id",
"product_set_id",
"gcp_conn_id",
"impersonation_chain",
)
更多資訊¶
CloudVisionUpdateProductSetOperator¶
更改 ProductSet 資源。當前只能更新 display_name。
注意
要定位 ProductSet 資源,其 name 的形式 projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID 是必需的。
您可以將 name 直接作為 product_set 物件的屬性提供。或者,您可以將其留空,而是提供 location 和 product_set_id(以及可選的 project_id - 如果未提供,將使用連線預設值),name 將由運算元本身建立。
此機制旨在方便您,允許將 project_id 留空,並讓 Airflow 使用連線預設的 project_id。
有關引數定義,請參閱 CloudVisionUpdateProductSetOperator
使用運算元¶
我們使用 Google Cloud Vision 庫中的 ProductSet 物件
tests/system/google/cloud/vision/example_vision_autogenerated.py
from google.cloud.vision_v1.types import ProductSet # isort:skip
tests/system/google/cloud/vision/example_vision_autogenerated.py
product_set = ProductSet(display_name="My Product Set")
任務初始化
如果 product_set_id 是由 API 生成的,可以從 XCOM 中提取
tests/system/google/cloud/vision/example_vision_autogenerated.py
product_set_update = CloudVisionUpdateProductSetOperator(
location=LOCATION,
product_set_id=product_set_create_output,
product_set=ProductSet(display_name="My Product Set 2"),
task_id="product_set_update",
)
否則可以明確指定
tests/system/google/cloud/vision/example_vision_explicit.py
product_set_update_2 = CloudVisionUpdateProductSetOperator(
location=LOCATION,
product_set_id=GCP_VISION_PRODUCT_SET_ID,
product_set=ProductSet(display_name="My Product Set 2"),
task_id="product_set_update_2",
)
模板化¶
template_fields: Sequence[str] = (
"location",
"project_id",
"product_set_id",
"gcp_conn_id",
"impersonation_chain",
)
更多資訊¶
CloudVisionUpdateProductOperator¶
更改 Product 資源。當前只能更新 display_name、description 和 labels 欄位。如果 labels 更新了,更改直到下次索引時才會反映在查詢中。
注意
要定位 Product 資源,其 name 的形式 projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID 是必需的。
您可以將 name 直接作為 product 物件的屬性提供。或者,您可以將其留空,而是提供 location 和 product_id(以及可選的 project_id - 如果未提供,將使用連線預設值),name 將由運算元本身建立。
此機制旨在方便您,允許將 project_id 留空,並讓 Airflow 使用連線預設的 project_id。
可能出現的錯誤
如果
Product不存在,則返回 NOT_FOUND。如果
display_name存在於update_mask中但請求中缺失或長度超過 4096 個字元,則返回 INVALID_ARGUMENT。如果
description存在於update_mask中但長度超過 4096 個字元,則返回 INVALID_ARGUMENT。如果
product_category存在於update_mask中,則返回 INVALID_ARGUMENT。
有關引數定義,請參閱 CloudVisionUpdateProductOperator
使用運算元¶
我們使用 Google Cloud Vision 庫中的 Product 物件
tests/system/google/cloud/vision/example_vision_autogenerated.py
from google.cloud.vision_v1.types import Product # isort:skip
tests/system/google/cloud/vision/example_vision_autogenerated.py
product = Product(display_name="My Product 1", product_category="toys")
如果 product_id 是由 API 生成的,可以從 XCOM 中提取
tests/system/google/cloud/vision/example_vision_autogenerated.py
product_update = CloudVisionUpdateProductOperator(
location=LOCATION,
product_id="{{ task_instance.xcom_pull('product_create') }}",
product=Product(display_name="My Product 2", description="My updated description"),
task_id="product_update",
)
否則可以明確指定
tests/system/google/cloud/vision/example_vision_explicit.py
product_update_2 = CloudVisionUpdateProductOperator(
location=LOCATION,
product_id=GCP_VISION_PRODUCT_ID,
product=Product(display_name="My Product 2", description="My updated description"),
task_id="product_update_2",
)
模板化¶
template_fields: Sequence[str] = (
"location",
"project_id",
"product_id",
"gcp_conn_id",
"impersonation_chain",
)
更多資訊¶
CloudVisionCreateReferenceImageOperator¶
建立一個新的 ReferenceImage 資源。
有關引數定義,請參閱 CloudVisionCreateReferenceImageOperator
使用運算元¶
我們使用 Google 庫中的 ReferenceImage 和 Retry 物件
tests/system/google/cloud/vision/example_vision_autogenerated.py
from google.cloud.vision_v1.types import ReferenceImage # isort:skip
tests/system/google/cloud/vision/example_vision_autogenerated.py
from google.api_core.retry import Retry # isort:skip
tests/system/google/cloud/vision/example_vision_autogenerated.py
reference_image = ReferenceImage(uri=VISION_IMAGE_URL)
product_set_id 引數可以省略(它將由 API 生成)
tests/system/google/cloud/vision/example_vision_autogenerated.py
reference_image_create = CloudVisionCreateReferenceImageOperator(
location=LOCATION,
reference_image=reference_image,
product_id="{{ task_instance.xcom_pull('product_create') }}",
reference_image_id=GCP_VISION_REFERENCE_IMAGE_ID,
retry=Retry(maximum=10.0),
timeout=5,
task_id="reference_image_create",
)
或者可以明確指定
tests/system/google/cloud/vision/example_vision_explicit.py
reference_image_create_2 = CloudVisionCreateReferenceImageOperator(
location=LOCATION,
reference_image=reference_image,
product_id=GCP_VISION_PRODUCT_ID,
reference_image_id=GCP_VISION_REFERENCE_IMAGE_ID,
retry=Retry(maximum=10.0),
timeout=5,
task_id="reference_image_create_2",
)
模板化¶
template_fields: Sequence[str] = (
"location",
"reference_image",
"product_id",
"reference_image_id",
"project_id",
"gcp_conn_id",
"impersonation_chain",
)
更多資訊¶
CloudVisionDeleteReferenceImageOperator¶
刪除一個 ReferenceImage 資源。
有關引數定義,請參閱 CloudVisionDeleteReferenceImageOperator
使用運算元¶
我們使用 Google 庫中的 ReferenceImage 和 Retry 物件
tests/system/google/cloud/vision/example_vision_autogenerated.py
from google.cloud.vision_v1.types import ReferenceImage # isort:skip
tests/system/google/cloud/vision/example_vision_autogenerated.py
from google.api_core.retry import Retry # isort:skip
tests/system/google/cloud/vision/example_vision_autogenerated.py
reference_image = ReferenceImage(uri=VISION_IMAGE_URL)
product_set_id 引數可以省略(它將由 API 生成)
tests/system/google/cloud/vision/example_vision_autogenerated.py
reference_image_delete = CloudVisionDeleteReferenceImageOperator(
location=LOCATION,
product_id="{{ task_instance.xcom_pull('product_create') }}",
reference_image_id=GCP_VISION_REFERENCE_IMAGE_ID,
retry=Retry(maximum=10.0),
timeout=5,
task_id="reference_image_delete",
)
或者可以明確指定
tests/system/google/cloud/vision/example_vision_explicit.py
reference_image_delete_2 = CloudVisionDeleteReferenceImageOperator(
location=LOCATION,
reference_image_id=GCP_VISION_REFERENCE_IMAGE_ID,
product_id=GCP_VISION_PRODUCT_ID,
retry=Retry(maximum=10.0),
timeout=5,
task_id="reference_image_delete_2",
)
模板化¶
template_fields: Sequence[str] = (
"location",
"reference_image",
"product_id",
"reference_image_id",
"project_id",
"gcp_conn_id",
"impersonation_chain",
)
更多資訊¶
CloudVisionRemoveProductFromProductSetOperator¶
建立一個新的 ReferenceImage 資源。
有關引數定義,請參閱 CloudVisionRemoveProductFromProductSetOperator
使用運算元¶
我們使用 Google 庫中的 Product、ProductSet 和 Retry 物件
tests/system/google/cloud/vision/example_vision_autogenerated.py
from google.api_core.retry import Retry # isort:skip
tests/system/google/cloud/vision/example_vision_autogenerated.py
from google.cloud.vision_v1.types import ProductSet # isort:skip
tests/system/google/cloud/vision/example_vision_autogenerated.py
from google.cloud.vision_v1.types import Product # isort:skip
如果 product_set_id 和 product_id 是由 API 生成的,可以從 XCOM 中提取
tests/system/google/cloud/vision/example_vision_autogenerated.py
remove_product_from_product_set = CloudVisionRemoveProductFromProductSetOperator(
location=LOCATION,
product_set_id=product_set_create_output,
product_id="{{ task_instance.xcom_pull('product_create') }}",
retry=Retry(maximum=10.0),
timeout=5,
task_id="remove_product_from_product_set",
)
否則可以明確指定
tests/system/google/cloud/vision/example_vision_explicit.py
remove_product_from_product_set_2 = CloudVisionRemoveProductFromProductSetOperator(
location=LOCATION,
product_set_id=GCP_VISION_PRODUCT_SET_ID,
product_id=GCP_VISION_PRODUCT_ID,
retry=Retry(maximum=10.0),
timeout=5,
task_id="remove_product_from_product_set_2",
)
模板化¶
template_fields: Sequence[str] = (
"location",
"product_set_id",
"product_id",
"project_id",
"gcp_conn_id",
"impersonation_chain",
)
更多資訊¶
請參閱 Google Cloud Vision Remove Product From Product Set 文件。
CloudVisionDetectTextOperator¶
對影像執行文字檢測。
有關引數定義,請參閱 CloudVisionDetectTextOperator
使用運算元¶
我們使用 Google 庫中的 Retry 物件
tests/system/google/cloud/vision/example_vision_annotate_image.py
from google.api_core.retry import Retry # isort:skip
tests/system/google/cloud/vision/example_vision_annotate_image.py
detect_text = CloudVisionDetectTextOperator(
image=DETECT_IMAGE,
retry=Retry(maximum=10.0),
timeout=5,
task_id="detect_text",
language_hints="en",
web_detection_params={"include_geo_results": True},
)
結果可以從 XCOM 中提取
tests/system/google/cloud/vision/example_vision_annotate_image.py
detect_text_result = BashOperator(
bash_command="echo {{ task_instance.xcom_pull('detect_text')['textAnnotations'][0] }}",
task_id="detect_text_result",
)
模板化¶
template_fields: Sequence[str] = (
"image",
"max_results",
"timeout",
"gcp_conn_id",
"impersonation_chain",
)
更多資訊¶
請參閱 Google Cloud Vision 文字檢測文件。
CloudVisionTextDetectOperator¶
對影像執行文件文字檢測。
有關引數定義,請參閱 CloudVisionTextDetectOperator
使用運算元¶
我們使用 Google 庫中的 Retry 物件
tests/system/google/cloud/vision/example_vision_annotate_image.py
from google.api_core.retry import Retry # isort:skip
tests/system/google/cloud/vision/example_vision_annotate_image.py
document_detect_text = CloudVisionTextDetectOperator(
image=DETECT_IMAGE, retry=Retry(maximum=10.0), timeout=5, task_id="document_detect_text"
)
結果可以從 XCOM 中提取
tests/system/google/cloud/vision/example_vision_annotate_image.py
document_detect_text_result = BashOperator(
bash_command="echo {{ task_instance.xcom_pull('document_detect_text')['textAnnotations'][0] }}",
task_id="document_detect_text_result",
)
模板化¶
template_fields: Sequence[str] = (
"image",
"max_results",
"timeout",
"gcp_conn_id",
"impersonation_chain",
) # Iterable[str]
更多資訊¶
請參閱 Google Cloud Vision 文件文字檢測文件。
CloudVisionDetectImageLabelsOperator¶
對影像執行影像標籤檢測。
有關引數定義,請參閱 CloudVisionDetectImageLabelsOperator
使用運算元¶
我們使用 Google 庫中的 Retry 物件
tests/system/google/cloud/vision/example_vision_annotate_image.py
from google.api_core.retry import Retry # isort:skip
tests/system/google/cloud/vision/example_vision_annotate_image.py
detect_labels = CloudVisionDetectImageLabelsOperator(
image=DETECT_IMAGE, retry=Retry(maximum=10.0), timeout=5, task_id="detect_labels"
)
結果可以從 XCOM 中提取
tests/system/google/cloud/vision/example_vision_annotate_image.py
detect_labels_result = BashOperator(
bash_command="echo {{ task_instance.xcom_pull('detect_labels')['labelAnnotations'][0] }}",
task_id="detect_labels_result",
)
模板化¶
template_fields: Sequence[str] = (
"image",
"max_results",
"timeout",
"gcp_conn_id",
"impersonation_chain",
)
更多資訊¶
請參閱 Google Cloud Vision 標籤檢測文件。
CloudVisionDetectImageSafeSearchOperator¶
對影像執行影像標籤檢測。
有關引數定義,請參閱 CloudVisionDetectImageSafeSearchOperator
使用運算元¶
我們使用 Google 庫中的 Retry 物件
tests/system/google/cloud/vision/example_vision_annotate_image.py
from google.api_core.retry import Retry # isort:skip
tests/system/google/cloud/vision/example_vision_annotate_image.py
detect_safe_search = CloudVisionDetectImageSafeSearchOperator(
image=DETECT_IMAGE, retry=Retry(maximum=10.0), timeout=5, task_id="detect_safe_search"
)
結果可以從 XCOM 中提取
tests/system/google/cloud/vision/example_vision_annotate_image.py
detect_safe_search_result = BashOperator(
bash_command=f"echo {detect_safe_search.output}",
task_id="detect_safe_search_result",
)
模板化¶
template_fields: Sequence[str] = (
"image",
"max_results",
"timeout",
"gcp_conn_id",
"impersonation_chain",
)
更多資訊¶
參考¶
更多資訊請參閱