你当前正在访问 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 源代码

开始

当前支持的环境

有关详细信息,请参阅我们的 支持策略

先决条件

  • Azure 订阅
  • Azure 订阅中的 计算机视觉资源
    • 需要此资源的密钥和终结点才能针对服务进行身份验证。
    • 可以使用免费定价层(F0)试用该服务,稍后升级到生产付费层。
    • 请注意,若要使用 CaptionDense Captions 功能运行图像分析,Azure 资源需要来自以下支持 GPU 的区域之一:East USFrance CentralKorea CentralNorth EuropeSoutheast AsiaWest EuropeWest US

安装 @azure-rest/ai-vision-image-analysis

使用 npm安装适用于 JavaScript 的图像分析客户端库:

npm install @azure-rest/ai-vision-image-analysis

浏览器支持

JavaScript 捆绑包

若要在浏览器中使用此客户端库,首先需要使用捆绑程序。 有关如何执行此操作的详细信息,请参阅我们的 捆绑文档

关键概念

初始化 ImageAnalysisClient后,需要选择要分析的一个或多个视觉特征。 这些选项由枚举类 VisualFeatures指定。 支持以下功能:

  1. VisualFeatures.Caption:(示例 | 示例) 生成描述图像内容的人工可读句子。
  2. VisualFeatures.Read:(示例 | 示例)也称为光学字符识别(OCR)。 从图像中提取打印或手写文本。
  3. VisualFeatures.DenseCaptions:密集字幕通过为图像中最多 10 个不同的区域生成一个句子标题来提供更多详细信息,包括整个图像的标题。
  4. VisualFeatures.Tags:提取数千个可识别对象、生物、风景和图像中显示的操作的内容标记。
  5. VisualFeatures.Objects:对象检测。 这类似于标记,但侧重于检测图像中的物理对象并返回其位置。
  6. VisualFeatures.SmartCrops:用于查找图像的代表性子区域进行缩略图生成,优先级为包含人脸。
  7. 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/记录器包文档

后续步骤

有关演示如何使用客户端库的详细示例,请查看 示例 目录。

贡献

若要参与此库,请阅读 贡献指南 了解有关如何生成和测试代码的详细信息。