You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spring CloudVisionTemplate中设置Google Vision API的maxResults参数

解决方案

你可以通过以下两种方式设置maxResults参数,获取全部检测标签:

方案1:使用Google Vision Java SDK自定义请求(推荐)

原生SDK支持灵活配置请求参数,可直接在构造Feature时指定maxResults,设置为足够大的数值(如100,Google Vision标签检测返回上限通常不超过该值)即可拿到全部结果,代码示例如下:

import com.google.cloud.vision.v1.AnnotateImageRequest;
import com.google.cloud.vision.v1.AnnotateImageResponse;
import com.google.cloud.vision.v1.Feature;
import com.google.cloud.vision.v1.Feature.Type;
import com.google.cloud.vision.v1.Image;
import com.google.cloud.vision.v1.ImageAnnotatorClient;
import com.google.protobuf.ByteString;
import org.springframework.core.io.Resource;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

// 方法内部逻辑
try (ImageAnnotatorClient visionClient = ImageAnnotatorClient.create()) {
    // 读取图片资源转字节流
    ByteString imgBytes = ByteString.readFrom(imageResource.getInputStream());
    Image img = Image.newBuilder().setContent(imgBytes).build();
    
    // 配置标签检测的maxResults参数
    Feature feature = Feature.newBuilder()
            .setType(Type.LABEL_DETECTION)
            .setMaxResults(100)
            .build();
    
    AnnotateImageRequest request = AnnotateImageRequest.newBuilder()
            .addFeatures(feature)
            .setImage(img)
            .build();
    
    List<AnnotateImageRequest> requests = new ArrayList<>();
    requests.add(request);
    
    AnnotateImageResponse response = visionClient.batchAnnotateImages(requests).getResponses(0);
    annotationList = response.getLabelAnnotationsList();
} catch (IOException e) {
    // 自行处理异常
}

方案2:基于Spring CloudVisionTemplate适配

Spring封装的CloudVisionTemplate默认analyzeImage方法没有暴露maxResults配置,可通过两种方式调整:

  • 方式一:从CloudVisionTemplate获取原生ImageAnnotatorClient实例,后续逻辑和方案1完全一致,获取方式如下:
ImageAnnotatorClient client = cloudVisionTemplate.getImageAnnotatorClient();
  • 方式二:自行构造AnnotateImageRequest对象,调用CloudVisionTemplate内置的请求执行方法:
// 构造image、feature的逻辑同方案1
AnnotateImageRequest request = AnnotateImageRequest.newBuilder()
        .addFeatures(Feature.newBuilder()
                .setType(Type.LABEL_DETECTION)
                .setMaxResults(100)
                .build())
        .setImage(img)
        .build();
AnnotateImageResponse response = cloudVisionTemplate.executeAnnotateImageRequest(request);
annotationList = response.getLabelAnnotationsList();

内容的提问来源于stack exchange,提问作者pankaj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 02:00:05