將 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 構件新增至專案。

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

<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 開發環境的操作說明。您不需要安裝 Google Cloud Java 專用的用戶端程式庫;Spring Boot 啟動條件會自動安裝用戶端程式庫。

圖片分析

在 classpath 上設定 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;

後續步驟