用途
Azure AI Vision Image Analysis SDK for Java 用于在 Java 应用中构建图像分析功能。当需要实现图像描述生成、OCR 文字提取、对象检测、标签识别等任务时,可使用该 SDK。
安装
通过 Maven 引入依赖:
<dependency> <groupId>com.azure</groupId> <artifactId>azure-ai-vision-imageanalysis</artifactId> <version>1.1.0-beta.1</version> </dependency>
客户端创建
支持三种凭据方式:
- 使用 API Key:通过 ImageAnalysisClientBuilder 的 endpoint 与 KeyCredential 构建 ImageAnalysisClient。
- 异步客户端:同一 builder 调用 buildAsyncClient() 得到 ImageAnalysisAsyncClient。
- 使用 DefaultAzureCredential:通过 DefaultAzureCredentialBuilder 构建凭据。
主要能力(视觉特征)
- CAPTION:生成人类可读的图像描述。
- DENSE_CAPTIONS:为最多 10 个区域生成描述。
- READ:OCR,从图像中提取文字。
- TAGS:为物体、场景、动作生成内容标签。
- OBJECTS:检测对象并返回边界框。
- SMART_CROPS:生成智能缩略图区域。
- PEOPLE:检测人物及其位置。
使用方式
核心方法为 client.analyze(从本地文件,使用 BinaryData.fromFile)与 client.analyzeFromUrl(从 URL)。调用时传入 VisualFeatures 列表与可选的 ImageAnalysisOptions,例如设置 setGenderNeutralCaption(true) 或 setLanguage("en")。结果对象提供 getCaption()、getTags()、getObjects()、getRead().getBlocks()、getPeople()、getSmartCrops()、getDenseCaptions() 等访问器。
典型片段包括:
- 生成描述:analyze 后读取 result.getCaption().getText() 与 getConfidence()。
- OCR:遍历 getRead().getBlocks() 中的 getLines(),再遍历行内 getWords(),可获取 bounding polygon 与词级置信度。
- 对象检测:遍历 getObjects(),读取 getTags().get(0).getName() 与 getBoundingBox() 的 x/y/width/height。
- 标签:遍历 getTags() 读取名称与置信度。
- 人物检测:遍历 getPeople() 读取 getBoundingBox() 与 getConfidence()。
- 智能裁剪:设置 setSmartCropsAspectRatios(Arrays.asList(1.0, 1.5)),遍历 getSmartCrops() 读取宽高比与裁剪框。
- 密集描述:遍历 getDenseCaptions() 读取文本、置信度与区域框。
- 多特征:一次传入 CAPTION、TAGS、OBJECTS、READ,并统一设置选项。
异步分析:asyncClient.analyzeFromUrl(...).subscribe(result -> ..., error -> ..., () -> ...)。
错误处理:捕获 com.azure.core.exception.HttpResponseException,读取 e.getResponse().getStatusCode() 与 e.getMessage()。
环境变量
VISION_ENDPOINT=https://<resource>.cognitiveservices.azure.com/ VISION_KEY=<your-api-key>
适用场景
Java 后端服务或工具中集成图像理解能力,例如自动生成图片说明、扫描件与截图文字提取、内容标签化、目标与人物定位、按比例生成智能缩略图等。
图像要求与限制
- 格式:JPEG、PNG、GIF、BMP、WEBP、ICO、TIFF、MPO。
- 大小:小于 20 MB。
- 尺寸:50x50 至 16000x16000 像素。
- 区域可用性:Caption 与 Dense Captions 需要支持 GPU 的区域,部署前需确认支持区域。
- 仅当任务明确匹配上述范围时使用;输出不能替代针对具体环境的验证、测试或专家评审;若缺少必要输入、权限、安全边界或成功标准,应停止并请求澄清。
(注:资料未提供收费、价格与具体调用配额等信息,暂未提供。)