將 Vision 與 Spring 架構搭配使用

Spring Cloud Google Cloud 提供便利的程式庫,可從 Spring 應用程式與 Vision API 互動。這些程式庫包含自動設定和輔助類別,以及 Spring Boot 範本類別,可讓開發人員快速開始使用 Vision API。

如果您已熟悉 Spring Framework,則 Spring Cloud Vision 可讓您在應用程式中更輕鬆地使用 Vision API,並減少需要編寫的程式碼量。

本頁說明如何將 Spring Cloud Vision 新增至 Java 應用程式。如要進一步瞭解這個模組,請參閱 Spring Cloud Vision 參考資料

設定依附元件

如要開始使用這個程式庫,請將 spring-cloud-gcp-starter-vision 構件新增至專案。

Maven 座標,使用 Spring Cloud Google Cloud BOM:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-gcp-dependencies</artifactId>
      <version>1.2.8.RELEASE</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version>${spring.version}</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-gcp-starter-vision</artifactId>
</dependency>

詳情請參閱設定 Java 開發環境的操作說明。您不需要安裝 Java 專用的 Google Cloud 用戶端程式庫,因為 Spring Boot 啟動器會自動安裝用戶端程式庫。

圖片分析

在類別路徑上設定 Spring Cloud Google Cloud Vision 依附元件後,您可以使用 Spring 依附元件插入取得 CloudVisionTemplate 的執行個體,立即開始處理圖片。

@Autowired private CloudVisionTemplate cloudVisionTemplate;

CloudVisionTemplate 是 Vision API 用戶端程式庫的包裝函式,可讓您透過 Vision API 輕鬆處理圖片。如要進一步瞭解 CloudVisionTemplate 功能,請參閱 Cloud Vision 範本參考頁面

下列各節包含 CloudVisionTemplate 常見用途的程式碼範例。所有程式碼片段都來自 Spring 和 Cloud Vision 範例應用程式

取得圖片的分類標籤

下方程式碼會擷取圖片的分類標籤,提供圖片內容的一般說明。

AnnotateImageResponse response =
    this.cloudVisionTemplate.analyzeImage(
        this.resourceLoader.getResource(imageUrl), Type.LABEL_DETECTION);

Map<String, Float> imageLabels =
    response.getLabelAnnotationsList().stream()
        .collect(
            Collectors.toMap(
                EntityAnnotation::getDescription,
                EntityAnnotation::getScore,
                (u, v) -> {
                  throw new IllegalStateException(String.format("Duplicate key %s", u));
                },
                LinkedHashMap::new));

擷取圖片中的文字

下列程式碼範例說明另一項常見作業,也就是從圖片中擷取文字。

String textFromImage =
    this.cloudVisionTemplate.extractTextFromImage(this.resourceLoader.getResource(imageUrl));
return "Text from image: " + textFromImage;

後續步驟