你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 JavaScript 的 Azure AI 视觉图像分析客户端库 - 版本 1.0.0-beta.3
图像分析服务提供 AI 算法,用于处理图像并返回有关其内容的信息。 在单个服务调用中,可以同时从图像中提取一个或多个视觉特征,包括获取图像的标题、提取图像中显示的文本(OCR)和检测对象。 有关服务和支持的视觉功能的详细信息,请参阅 图像分析概述,以及 概念 页。
使用图像分析客户端库可以:
- 针对服务进行身份验证
- 设置要提取的功能
- 上传图像进行分析,或发送图像 URL
- 获取分析结果
产品文档 | 示例 | Vision Studio | API 参考文档 | 包(npm) | SDK 源代码
开始
当前支持的环境
- LTS 版本的 Node.js
- Safari、Chrome、Edge 和 Firefox 的最新版本。
有关详细信息,请参阅我们的 支持策略。
先决条件
- Azure 订阅。
- Azure 订阅中的 计算机视觉资源。
- 需要此资源的密钥和终结点才能针对服务进行身份验证。
- 可以使用免费定价层(
F0
)试用该服务,稍后升级到生产付费层。 - 请注意,若要使用
Caption
或Dense Captions
功能运行图像分析,Azure 资源需要来自以下支持 GPU 的区域之一:East US
、France Central
、Korea Central
、North Europe
、Southeast Asia
、West Europe
或West US
。
安装 @azure-rest/ai-vision-image-analysis
包
使用 npm
安装适用于 JavaScript 的图像分析客户端库:
npm install @azure-rest/ai-vision-image-analysis
浏览器支持
JavaScript 捆绑包
若要在浏览器中使用此客户端库,首先需要使用捆绑程序。 有关如何执行此操作的详细信息,请参阅我们的 捆绑文档。
关键概念
初始化 ImageAnalysisClient
后,需要选择要分析的一个或多个视觉特征。 这些选项由枚举类 VisualFeatures
指定。 支持以下功能:
-
VisualFeatures.Caption
:(示例 | 示例) 生成描述图像内容的人工可读句子。 -
VisualFeatures.Read
:(示例 | 示例)也称为光学字符识别(OCR)。 从图像中提取打印或手写文本。 -
VisualFeatures.DenseCaptions
:密集字幕通过为图像中最多 10 个不同的区域生成一个句子标题来提供更多详细信息,包括整个图像的标题。 -
VisualFeatures.Tags
:提取数千个可识别对象、生物、风景和图像中显示的操作的内容标记。 -
VisualFeatures.Objects
:对象检测。 这类似于标记,但侧重于检测图像中的物理对象并返回其位置。 -
VisualFeatures.SmartCrops
:用于查找图像的代表性子区域进行缩略图生成,优先级为包含人脸。 -
VisualFeatures.People
:在图像中找到人员并返回其位置。
有关这些功能的详细信息,请参阅 图像分析概述,以及 概念 页。
支持的图像格式
图像分析适用于满足以下要求的图像:
- 图像必须以 JPEG、PNG、GIF、BMP、WEBP、ICO、TIFF 或 MPO 格式显示
- 映像的文件大小必须小于 20 兆字节(MB)
- 图像的尺寸必须大于 50 x 50 像素,小于 16,000 x 16,000 像素
ImageAnalysisClient
ImageAnalysisClient
是与图像分析服务交互的开发人员的主要界面。 它充当网关,从中将发生与库的所有交互。
例子
对客户端进行身份验证
下面是如何使用基于密钥的身份验证创建 ImageAnalysisClient
实例的示例。
const key = "<your_key>";
const credential = new AzureKeyCredential(key);
const client = new ImageAnalysisClient(endpoint, credential);
const { ImageAnalysisClient } = require("@azure-rest/ai-vision-image-analysis");
const { AzureKeyCredential } = require('@azure/core-auth');
const endpoint = "<your_endpoint>";
const key = "<your_key>";
const credential = new AzureKeyCredential(key);
const client = new ImageAnalysisClient(endpoint, credential);
使用 Microsoft Entra ID 凭据创建 ImageAnalysisClient
客户端订阅密钥身份验证用于本入门指南中的大多数示例,但也可以使用 [Azure 标识库][azure_identity] 通过 Microsoft Entra ID(前为 Azure Active Directory)进行身份验证。 若要使用如下所示的 [DefaultAzureCredential][azure_identity_dac] 提供程序或 Azure SDK 提供的其他凭据提供程序,请安装 Azure.Identity 包:
npm install @azure/identity
const endpoint = "<your_endpoint>";
const credential = new DefaultAzureCredential();
const client = new ImageAnalysisClient(endpoint, credential);
从 URL 分析图像
以下示例演示如何使用适用于 JavaScript 的图像分析客户端库分析图像。
const imageUrl = "https://example.com/image.jpg";
const features = ["Caption", "DenseCaptions", "Objects", "People", "Read", "SmartCrops", "Tags"];
async function analyzeImageFromUrl() {
const result = await client.path("/imageanalysis:analyze").post({
body: {
url: imageUrl,
},
queryParameters: {
features: features,
"smartCrops-aspect-ratios": [0.9, 1.33],
},
contentType: "application/json",
});
console.log("Image analysis result:", result.body);
}
analyzeImageFromUrl();
从本地文件分析图像
在此示例中,我们将使用适用于 JavaScript 的图像分析客户端库从本地文件分析图像。
const fs = require("fs");
const imagePath = "./path/to/your/image.jpg";
const features = ["Caption", "DenseCaptions", "Objects", "People", "Read", "SmartCrops", "Tags"];
async function analyzeImageFromFile() {
const imageBuffer = fs.readFileSync(imagePath);
const result = await client.path("/imageanalysis:analyze").post({
body: imageBuffer,
queryParameters: {
features: features,
"smartCrops-aspect-ratios": [0.9, 1.33],
},
contentType: "application/octet-stream",
});
console.log("Image analysis result:", result.body);
}
analyzeImageFromFile();
从图像 URL 中提取文本
此示例演示如何使用 ImageAnalysisClient 提取图像文件 sample.jpg 打印文本或手写文本。 方法调用返回 ImageAnalysisResult 对象。 返回对象的 ReadResult 属性包括文本行列表和每个文本行周围的边界多边形。 对于每一行,它还返回文本行中的单词列表和围绕每个单词的边界多边形。
const client: ImageAnalysisClient = createImageAnalysisClient(endpoint, credential);
const features: string[] = [
'Read'
];
const imageUrl: string = 'https://aka.ms/azsdk/image-analysis/sample.jpg';
client.path('/imageanalysis:analyze').post({
body: { url: imageUrl },
queryParameters: { features: features },
contentType: 'application/json'
}).then(result => {
const iaResult: ImageAnalysisResultOutput = result.body as ImageAnalysisResultOutput;
// Process the response
if (iaResult.readResult && iaResult.readResult.blocks.length > 0) {
iaResult.readResult.blocks.forEach(block => {
console.log(`Detected text block: ${JSON.stringify(block)}`);
});
} else {
console.log('No text blocks detected.');
}
故障 排除
伐木
启用日志记录可能有助于发现有关故障的有用信息。 若要查看 HTTP 请求和响应的日志,请将 AZURE_LOG_LEVEL
环境变量设置为 info
。 或者,可以通过在 @azure/logger
中调用 setLogLevel
在运行时启用日志记录:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
有关如何启用日志的更详细说明,可以查看 @azure/记录器包文档。
后续步骤
有关演示如何使用客户端库的详细示例,请查看 示例 目录。
贡献
若要参与此库,请阅读 贡献指南 了解有关如何生成和测试代码的详细信息。