聊天机器人的视觉与图形技术应用
立即解锁
发布时间: 2025-08-21 02:24:15 阅读量: 2 订阅数: 3 


实用聊天机器人开发:Node.js与Microsoft Bot Framework
# 聊天机器人的视觉与图形技术应用
## 1. 计算机视觉探索
计算机视觉不仅仅能用于获取标签,其中一个强大的功能是光学字符识别(OCR)。以下是使用计算机视觉 API 进行 OCR 的操作步骤:
1. **获取访问密钥**:通过 Azure 门户获取计算机视觉 API 的访问密钥,此过程与获取其他认知服务的密钥相同。
2. **创建聊天机器人**:构建一个能够接收照片并从中提取文本信息的聊天机器人,处理图像上传的方式可参考热狗聊天机器人。
3. **测试 OCR 功能**:在纸上写下一些文字,然后通过聊天机器人进行识别,检查是否能正确识别书写内容。
4. **测试识别极限**:尝试调整图像的对比度或书写质量,观察在何种程度下 OCR 难以识别文本。
通过以上步骤,你可以对计算机视觉 API 进行实践,并临时测试其 OCR 算法的性能。
如今,机器学习算法的准确性取得了显著进展,许多功能通过 REST API 向开发者开放。开发者可以通过简单的 REST 端点访问这些算法,无需学习新的环境和语言(如 Anaconda、Python 和 scikit - learn),这促使大量开发者尝试新的想法,并将人工智能功能融入他们的应用程序中。虽然一些大型科技公司提供的服务可能在性能、成本效益或准确性方面不如自定义开发和优化的模型,但它们的易用性以及随着时间推移不断提高的准确性和成本效益,使其在生产场景中具有一定的吸引力。作为聊天机器人领域的专业人员,我们应该了解各种认知服务,这些服务可以助力聊天机器人的开发,充分利用这些功能能够极大地提升对话体验。
## 2. 自适应卡片的介绍与应用
### 2.1 自适应卡片的背景
聊天机器人可以通过多种方式与用户进行交互,如文本、语音、图像、按钮或轮播图等。然而,在某些情况下,文本可能不是传达信息的最有效方式。以股票报价为例,用户可能关注的信息各不相同,如最新价格、成交量、买卖报价、52 周高低价等。如果以文本形式呈现这些信息,解析起来会非常痛苦。而将内容展示在卡片中则是一种更具吸引力的选择,例如 TD Ameritrade Messenger 机器人的股票报价卡,它能更轻松地让用户获取信息。
### 2.2 自适应卡片的特点
最初,微软在 Bot Framework 中推出了英雄卡片,它是不同消息平台渲染图像、文本和按钮的一种抽象方式。但英雄卡片存在一定的局限性,它仅由图像、标题、副标题和可选按钮组成。为了提供更灵活的用户界面,微软创建了自适应卡片。自适应卡片的对象模型描述了消息应用程序中更丰富的用户界面,由通道连接器负责将自适应卡片的定义渲染为通道支持的形式,本质上是英雄卡片的增强版本。
自适应卡片在 2017 年 Build 大会上发布,它采用了类似 XAML 的布局引擎和类似 HTML 的概念,并以 JSON 格式呈现。以下是几个自适应卡片的示例:
#### 餐厅卡片示例
```json
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.0",
"body": [
{
"speak": "Tom's Pie is a Pizza restaurant which is rated 9.3 by customers.",
"type": "ColumnSet",
"columns": [
{
"type": "Column",
"width": 2,
"items": [
{
"type": "TextBlock",
"text": "PIZZA"
},
{
"type": "TextBlock",
"text": "Tom's Pie",
"weight": "bolder",
"size": "extraLarge",
"spacing": "none"
},
{
"type": "TextBlock",
"text": "4.2 ★★★☆ (93) · $$",
"isSubtle": true,
"spacing": "none"
},
{
"type": "TextBlock",
"text": "**Matt H. said** \"I'm compelled to give this place 5 stars due to the number of times I've chosen to eat here this past year!\"",
"size": "small",
"wrap": true
}
]
},
{
"type": "Column",
"width": 1,
"items": [
{
"type": "Image",
"url": "https://picsum.photos/300?image=882",
"size": "auto"
}
]
}
]
}
],
"actions": [
{
"type": "Action.OpenUrl",
"title": "More Info",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
}
]
}
```
#### 数据收集模板示例
```json
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.0",
"body": [
{
"type": "ColumnSet",
"columns": [
{
"type": "Column",
"width": 2,
"items": [
{
"type": "TextBlock",
"text": "Tell us about yourself",
"weight": "bolder",
"size": "medium"
},
{
"type": "TextBlock",
"text": "We just need a few more details to get you booked for the trip of a lifetime!",
"isSubtle": true,
"wrap": true
},
{
"type": "TextBlock",
"text": "Don't worry, we'll never share or sell your information.",
"isSubtle": true,
"wrap": true,
"size": "small"
},
{
"type": "TextBlock",
"text": "Your name",
"wrap": true
},
{
"type": "Input.Text",
"id": "myName",
"placeholder": "Last, First"
},
{
"type": "TextBlock",
"text": "Your email",
"wrap": true
},
{
"type": "Input.Text",
"id": "myEmail",
"placeholder": "[email protected]",
"style": "email"
},
{
"type": "TextBlock",
"text": "Phone Number"
},
{
"type": "Input.Text",
"id": "myTel",
"placeholder": "xxx.xxx.xxxx",
"style": "tel"
}
]
},
{
"type": "Column",
"width": 1,
"items": [
{
"type": "Image",
"url": "https://upload.wikimedia.org/wikipedia/commons/b/b2/Diver_Silhouette%2C_Great_Barrier_Reef.jpg",
"size": "auto"
}
]
}
]
}
],
"actions": [
{
"type": "Action.Submit",
"title": "Submit"
}
]
}
```
#### 股票报价示例
```json
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.0",
"speak": "Microsoft stock is trading at $62.30 a share, which is down .32%",
"body": [
{
"type": "Container",
"items": [
{
"type": "TextBlock",
"text": "Microsoft Corp (NASDAQ: MSFT)",
"size": "medium",
"isSubtle": true
},
{
"type": "TextBlock",
"text": "September 19, 4:00 PM EST",
"isSubtle": true
}
]
},
{
"type": "Container",
"spacing": "none",
"items": [
{
"type": "ColumnSet",
"columns": [
{
"type": "Column",
"width": "stretch",
"items": [
{
"type": "TextBlock",
"text": "75.30",
"size": "extraLarge"
},
{
"type": "TextBlock",
"text": "▼ 0.20 (0.32%)",
"size": "small",
"color": "attention",
"spacing": "none"
}
]
},
{
"type": "Column",
"width": "auto",
"items": [
{
"type": "FactSet",
"facts": [
{
"title": "Open",
"value": "62.24"
},
{
"title": "High",
"value": "62.98"
},
{
"title": "Low",
"value": "62.20"
}
]
}
]
}
]
}
]
}
]
}
```
### 2.3 自适应卡片的渲染与数据处理
自适应卡片的网站提供了丰富的示例,并且 Visualizer 工具展示了 Bot Framework 聊天机器人只是自适应卡片应用的一小部分。不同的 Bot Framework 通道对自适应卡片的支持程度有所不同,模拟器能够忠实地渲染卡片,但像 Facebook Messenger 等其他通道可能会将其渲染为图像。
以下是一个使用自适应卡片收集用户信息的工作示例:
```json
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.0",
"body": [
{
"type": "TextBlock",
"text": "Tell us about yourself",
"weight": "bolder",
"size": "medium"
},
{
"type": "TextBlock",
"text": "Don't worry, we'll never share or sell your information.",
"isSubtle": true,
"wrap": true,
"size": "small"
},
{
"type": "TextBlock",
"text": "Your name",
"wrap": true
},
{
```
0
0
复制全文
相关推荐










