在现代化的后端服务器环境中,图像识别已成为一个非常普遍的需求。这是一种通过计算机直接分析图片来了解图片的内容和上下文的方法,最终可以得出计算机理解的结论。
在本文中,我将向你展示如何使用 Express.js 和 Google Vision API 进行图像识别。我将向你逐步介绍如何开发一个 API 端点,使得它使用 Google Vision API 来解析图片并返回结果。
开始使用 Express.js
首先,让我们快速浏览一下 Express.js。对于那些不熟悉它的人来说,Express.js 是一个 Node.js 的 Web 应用程序框架。它提供了许多构建 Web 应用程序所需的工具和功能。使用 Express.js,我们可以轻松地创建和托管我们的 API 服务。
里面只需要写出这样的代码:
const express = require('express'); const app = express(); const PORT = process.env.PORT || 5000; app.listen(PORT, () => { console.log(`Listening on port ${PORT}...`); });
这个代码片段创建了一个简单的 Express.js 应用程序,该应用程序可以在 5000 端口上运行。
下面,我们将向 Express.js 服务添加一个新的端点,该端点将使用 Google Vision API 解析上传的图像文件。
建立 Google Vision API 的桥接
Google Vision API 提供了一个通过 RESTful API 输入图像并输出自动识别标签的接口。我们可以使用这个接口来完成我们自己的图像识别程序。但是,我们将需要一些额外的辅助程序来实现这个功能。因此,我们需要建立一个桥接,使 Express.js 服务可以连接到 Google Vision API。
为此,我们需要在 npm
中安装一个叫做 @google-cloud/vision
的模块。它是一个官方维护的模块,提供的功能非常全面。
npm install --save @google-cloud/vision
在我们安装完这个模块之后,我们需要获得一个 Google Cloud Platform 的 API 令牌,这样才能访问 Vision API 接口。我们可以从 Google Cloud Console 创建一个新的 API 项目,并通过访问 Google Cloud Platform 管理控制台获取 API 令牌。到这一步为止,我们已经准备好使用 Google Vision API。
下面是一个可以初始化 Google Vision API 的代码片段:
const vision = require('@google-cloud/vision')({ projectId: 'PROJECT_ID', credentials: { client_email: 'CLIENT_EMAIL', private_key: 'PRIVATE_KEY', }, });
请注意,这个代码片段链接了 API 项目和 Vision API,并使用了我们在线上获取的 API 令牌。
添加图像识别端点
在我们建立了 Vision API 的桥接之后,我们现在可以开始在 Express.js 应用程序中添加一个新的端点,该端点将接受对图像的 POST 请求,并使用 Vision API 来识别图像。
这个代码段会使用 multer
库来完成文件上传,它是一个非常好的库,它可以将上传的文件转换为使用 Buffer 对象来处理的多部分请求。在这个代码片段中,我们可以看到 multer
库的一个使用示例。
-- -------------------- ---- ------- ----- ------ - ------------------ ----- ------ - -------- -------- ---------------------- --- -------------------- ----------------------- ----- ---- ----- -- - -- ----------- - ---------------------- ------ - -------- --- ---- ---------- - --- ------- - ----- ----- - ---------------- ------ ---------------- ------ - -------- ------------------------- -- --------- - - ----- ------------------ ----------- --- -- -- -- ------------- -- - ----- ------ - ------------------------------------- -- ------------------- ---------------------- ------ --- -- ------------ -- - ------------ --- ---
这段代码首先使用 multer
库来处理图像文件的请求体。然后,它使用 Google Vision API
来识别图像。使用 annotateImage
方法,我们可以指定要识别的功能 features
,其中最常见的是 LABEL_DETECTION
。一旦完成了图像识别,将返回结果的数组,其中包含标签的详细信息。这些标签起到了对识别结果的概括作用。
最后,我们将结果通过 HTTP 200 (表示请求成功并带有响应体)返回给客户端。
结论
现在你已经了解了在 Express.js 应用程序中使用 Google Vision API 进行图像识别是如何实现的。通过建立 Vision API 的桥接并使用 multer
库来处理图像文件请求,我们可以轻松地开发出一个可以进行图像识别的 API 服务。这个例子仅仅只是表面,实际上我们可以进一步提升这个 API 服务的功能,比如为 API 添加容错机制,或者使用不同的标签识别功能。这些都是需要使用者根据自己的业务需求自行推导出来的。
如果你现在想深入学习这些内容,那么可以继续探索 Google Vision API 的详细文档。此外,其他的 Microsoft Azure、Amazon Rekognition 等云服务厂商的 Cloud Recognition 服务亦是类似的,你也可以了解一下。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/675288688bd460d3ad953a42