将 Vision 与 Spring 框架配合使用

Spring Cloud Google Cloud 提供了方便的库,支持从 Spring 应用与 Vision API 连接。这些库包括自动配置和帮助程序类以及 Spring Boot Template 类,以帮助开发者快速开始使用 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>

您还必须创建服务账号,并使用该服务账号密钥向 Google Cloud 进行身份验证。

如需了解详情,请参阅有关设置 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;

后续步骤