Como usar a Vision com o framework Spring

O Spring Cloud GCP (em inglês) oferece bibliotecas práticas para interagir com a API Vision de um aplicativo Spring. Essas bibliotecas incluem classes de configuração automática e auxiliares e classes de modelo do Spring Boot Template para permitir que os desenvolvedores comecem a usar a API Vision rapidamente.

Se você já estiver familiarizado com o Spring Framework (em inglês), a Vision do Spring Cloud poderá facilitar o trabalho com a API Vision no seu aplicativo e reduzir a quantidade de código que você precisa escrever.

Nesta página, explicamos como adicionar a Vision do Spring Cloud a um aplicativo Java. Para informações detalhadas sobre o módulo, consulte a referência da Vision do Spring Cloud.

Configuração de dependência

Para começar a usar essa biblioteca, adicione o artefato spring-cloud-gcp-starter-vision ao seu projeto.

Coordenadas do Maven usando a BOM do Spring Cloud GCP:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-gcp-dependencies</artifactId>
      <version>1.2.5.RELEASE</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-gcp-starter-vision</artifactId>
</dependency>

Também é necessário criar uma conta de serviço e usar a chave da conta de serviço para autenticar no Google Cloud.

Para mais informações, consulte as instruções para configurar um ambiente para desenvolvedores Java. Não é preciso instalar a biblioteca de cliente do Google Cloud para Java. O Spring Boot Starter instala a biblioteca de cliente automaticamente.

Análise de imagem

Depois de configurar as dependências da Vision do Spring Cloud GCP no classpath, é possível começar imediatamente a processar suas imagens conseguindo uma instância de CloudVisionTemplate usando a injeção de dependência do Spring (em inglês).

@Autowired private CloudVisionTemplate cloudVisionTemplate;

O CloudVisionTemplate é um wrapper em torno das bibliotecas de cliente da API Vision e permite processar imagens facilmente por meio da API Vision. Para mais informações sobre os recursos CloudVisionTemplate, consulte a página de referência do modelo do Cloud Vision.

As seções a seguir contêm amostras de código para casos de uso comuns de CloudVisionTemplate. Todos os snippets de código vêm do aplicativo de amostra Spring e Cloud Vision (em inglês).

Como conseguir os rótulos de classificação de uma imagem

O código abaixo extrai os rótulos de classificação de uma imagem, fornecendo descrições gerais do conteúdo da imagem.

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));

Como extrair o texto de uma imagem

A amostra de código abaixo descreve outra operação comum de extração do texto de uma imagem.

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

A seguir