Spring Framework와 함께 Vision 사용

Spring Cloud Google Cloud는 Spring 애플리케이션에서 Vision API와 연동할 수 있는 편리한 라이브러리를 제공합니다. 이러한 라이브러리에는 개발자가 Vision API를 빠르게 시작할 수 있도록 자동 구성 및 도우미 클래스와 Spring Boot Template 클래스가 포함되어 있습니다.

Spring Framework에 이미 익숙한 사용자라면 Spring Cloud Vision을 통해 애플리케이션에서 Vision API 관련 작업을 간편하게 수행하고 작성해야 하는 코드의 양을 줄일 수 있습니다.

이 페이지에서는 자바 애플리케이션에 Spring Cloud Vision을 추가하는 방법을 설명합니다. 모듈에 대한 자세한 내용은 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>

또한 서비스 계정을 만들고 서비스 계정 키를 사용하여 Google Cloud에 인증해야 합니다.

자세한 내용은 자바 개발 환경 설정 안내를 참조하세요. 자바용 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;

다음 단계