当前位置:   article > 正文

C#机器学习(1)-Azure AI(1)_c#人工智能

c#人工智能

Azure 认知服务概述

Azure 认知服务是基于云的人工智能 (AI) 服务,可帮助开发人员在不具备直接的 AI 或数据科学技能知识的情况下将认知智能内置于应用程序中。 可采用常用开发语言通过 REST API 和客户端库 SDK 使用此类服务。 借助 Azure 认知服务,开发人员可以通过能够看、听、说和分析的认知解决方案,轻松将认知功能添加到他们的应用程序中。
认知服务类别

认知服务可分为五个主要领域:

影像
语音
语言
决策
Azure OpenAI 服务
  • 1
  • 2
  • 3
  • 4
  • 5

计算机视觉概述

使用基于云的计算机视觉 API,开发人员可以访问用于处理图像并返回信息的高级算法。
通过上传图像或指定图像 URL,Microsoft 计算机视觉算法可以基于输入和用户选择以不同方式分析可视内容。
使用计算机视觉服务,可以访问用于处理图像并返回信息的高级认知算法。

图像要求

计算机视觉可以分析符合以下要求的图像:

图像必须以 JPEG、PNG、GIF 或 BMP 格式显示 图像的文件大小必须不到 4 兆字节 (MB) 图像的尺寸必须大于 50 x 50
像素
对于读取 API,图像的尺寸必须介于 50 x 50 和 10000 x 10000 像素之间。

数据隐私和安全性

使用计算机视觉服务的开发人员应该了解 Microsoft 针对客户数据的政策。

微软确保 Microsoft 服务中数据的安全、合规和隐私的特定策略、操作实践和技术。

你的数据由你控制。
我们将明确公布数据的存储位置和使用方式。
我们将保护静态数据和传输中的数据。
我们将捍卫你的数据。
  • 1
  • 2
  • 3
  • 4

下面是微软关于数据安全的承诺

在微软,我们重视、保护和捍卫隐私。我们相信透明度,这样人们和组织就可以控制他们的数据,并在如何使用数据方面有意义的选择。我们授权并保护使用我们产品和服务的每个人的隐私选择。

1、您可以控制数据

我们久经考验的隐私保护方法基于我们的承诺,即让您控制 您将数据放入云中。换句话说,您可以控制数据。微软通过我们向您作出的合同承诺来保证这一点。

2、您的数据属于您

您的数据是您的业务,您可以随时访问、修改或删除它。未经您的同意,Microsoft不会使用您的数据,当我们获得您的同意后,我们将使用您的信息仅提供您选择的服务。

3、您对数据的控制

微软遵守广泛适用的隐私法(如GDPR)和隐私标准(如世界上第一个云隐私国际实践准则),加强了您对数据的控制, ISO/IEC 27018标准。

4、独立审计报告

您可以访问我们遵守隐私标准的独立审计报告,从而为您履行自己的隐私义务提供支持。

5、仅在征得同意的情况下处理数据

我们只根据您的协议并根据我们合同约定的严格政策和程序处理您的数据。我们不会将您的数据与广告商支持的服务共享,也不会将其用于营销研究或广告等任何目的。

6、分包商数据限制

当我们部署分包商或子处理器执行需要访问您的数据的工作时,他们只能执行Microsoft聘请他们提供的功能,并且他们受Microsoft向您作出的相同合同隐私承诺的约束。Microsoft Online Services子处理器列表确定了已授权的子处理器,这些子处理器事先已根据严格的安全和隐私要求进行了审核。

计算机视觉快速入门

光学字符识别 (OCR)

OCR 传统上是一种基于机器学习的技术,用于从原始图像和非文档图像(如产品标签、用户生成的图像、屏幕截图、路标和海报等)中提取文本。
对于在文本不多的单个图像上运行 OCR 的多种场景,需要快速且同步的 API 或服务。
这样可将 OCR 嵌入准实时的用户体验中,从而能以较快的运转速度丰富内容理解并跟进用户操作。
光学字符识别 (OCR) 服务从图像中提取文本。 你可以使用新读取 API 从图像和文档中提取印刷体文本和手写文本。
此 API 使用基于深度学习的模型,并处理各种表面和后台上的文本。 包括业务文档、发票、收据、海报、名片、信件和白板。

OCR 支持的语言

目前在计算机视觉中提供的两个“读取”版本都支持多种语言的印刷和手写文本。 印刷文本的 OCR 包括对英语、法语、德语、意大利语、葡萄牙语、西班牙语、中文、日语、韩语、俄语、阿拉伯语、印地语和其他使用拉丁语、西里尔语、阿拉伯语和梵文脚本的国际语言的支持。 手写文本 OCR 包括对英语、简体中文、法语、德语、意大利语、日语、韩语、葡萄牙语和西班牙语的支持。

OCR API

使用计算机视觉 Read REST API 或客户端库。 读取 API 提供 AI 算法,用于从图像中提取文本,并将其作为结构化字符串返回。
1、图像:
常规的现实图像 标签、路标和海报
通过性能增强的同步 API 对常规非文档图像进行优化,可更轻松地在用户体验方案中嵌入 OCR。
2、文档:
数字文档和扫描文档,包括图像 书籍、文章和报表 表单识别器
使用异步 API 对文本密集型扫描文档和数字文档进行优化,有助于大规模地自动执行智能文档处理。

OCR 常用功能

读取 OCR 模型可在具有通用基线功能的计算机视觉和表单识别器中使用,同时针对相关的方案进行优化。 以下列表汇总了常用功能:

提取受支持语言的印刷和手写文本
具有位置和置信度分数的页面、文本行和字词
支持混合语言、混合模式(打印和手写)
本地部署可用的 Distroless Docker 容器
  • 1
  • 2
  • 3
  • 4
Azure 门户准备

要在AZure中注册帐号,需要有一张信用卡,如果没有,可以去淘宝找一个商家咨询
请在 Azure 门户中创建计算机视觉资源,以获取密钥和终结点。
在这里插入图片描述注意定价层的选项
F0为限量免费使用
S1为标准付费使用
在这里插入图片描述部署完成
在这里插入图片描述

标记是应用于 Azure 资源的元数据元素。 它们是键值对,可帮助你根据与组织相关的设置来识别资源。 如果要跟踪资源的部署环境,请添加名为
Environment 的键。 若要确定部署到生产环境的资源,请赋予它们 Production 值。 完全形成后,键值对变为
Environment = Production。

部署后,单击“转到资源”。
需要从创建的资源获取密钥和终结点,以便将应用程序连接到计算机视觉服务。
在这里插入图片描述

两种部署方式

1、云 API,因为它们易于集成,而且其现成可用的性质能够提高工作效率。 Azure 和计算机视觉服务将处理缩放、性能、数据安全与合规需求,你只需将工作重心放在满足客户需求上。

2、对于本地部署,可以使用读取 Docker 容器在你自己的本地环境中部署计算机视觉 v3.2 正式版 OCR 功能。 容器非常适合用于满足特定的安全性和数据管理要求。

OCR项目实战之车牌识别

1、新建项目
在这里插入图片描述
在这里插入图片描述
2、管理 NuGet 包
创建新项目后,右键单击“解决方案资源管理器”中的项目解决
方案,然后选择“管理 NuGet 包”
,或者按下图打开菜单
在这里插入图片描述

3、安装客户端库 。

在打开的包管理器中,选择“浏览”,选中“包括预发行版”并搜索 Microsoft.Azure.CognitiveServices.Vision.ComputerVision。
在这里插入图片描述

选择最新版本,然后选择“安装”。

4、Azure 门户找到密钥和终结点 。
在Azure资源的“密钥和终结点”页的“资源管理”下可以找到密钥和终结点 。

密钥和终结点粘贴到代码中的指定位置。 计算机视觉终结点的格式为 https://<your_computer_vision_resource_name>.cognitiveservices.azure.com/
5、Azure Key Vault

密钥用于访问认知服务 API。请勿共享你的密钥。请安全地存储这些密钥(例如,使用 Azure Key Vault)。
建议定期重新生成这些密钥。执行 API 调用只需要一个密钥。在重新生成第一个密钥时,可以使用第二个密钥继续访问服务。

Azure Key Vault 保护云中的加密密钥、证书(以及与证书关联的私钥)和机密(例如连接字符串和密码)。 存储敏感数据和关键业务数据时,必须采取措施以最大限度提高保管库及其中存储的数据的安全性。

可以通过指定哪些 IP 地址有权访问来减少保管库的曝光。 通过 Azure Key Vault 的虚拟网络服务终结点可将访问限制为指定虚拟网络。 此外,还可通过这些终结点将访问限制为一系列 IPv4(Internet 协议版本 4)地址范围。 任何从外部连接到 Key Vault 的用户都无法访问这些资源

使用 Azure 专用链接服务,可以通过虚拟网络中的专用终结点访问 Azure Key Vault 和 Azure 托管的客户服务/合作伙伴服务。 Azure 专用终结点是一个网络接口,可以通过私密且安全的方式将你连接到 Azure 专用链接支持的服务。 专用终结点使用 VNet 中的专用 IP 地址将服务有效接入 VNet 中。 发往服务的所有流量都可以通过专用终结点路由,因此不需要网关、NAT 设备、ExpressRoute 或 VPN 连接或公共 IP 地址。 虚拟网络与服务之间的流量将通过 Microsoft 主干网络,因此不会从公共 Internet 泄露。

Azure Key Vault是 Azure 中几个关键管理解决方案之一,可帮助解决以下问题:
1、机密管理 - Azure Key Vault 可以用来安全地存储令牌、密码、证书、API 密钥和其他机密,并对其访问进行严格控制
2、密钥管理 - Azure Key Vault 可用作密钥管理解决方案。 可以通过 Azure Key Vault 轻松创建和控制用于加密数据的加密密钥。
3、证书管理 - Azure Key Vault 可用来轻松预配、管理和部署公用和专用传输层安全性/安全套接字层 (TLS/SSL) 证书,以用于 Azure 以及内部连接资源。

Azure Key Vault 具有两个服务层级:标准层(使用软件密钥加密)和高级层(包含受硬件安全模块 [HSM] 保护的密钥)。

6、输入代码

using System;
using System.Collections.Generic;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Threading;
using System.Linq;

namespace ComputerVisionQuickstart
{
    class Program
    {
        // Add your Computer Vision subscription key and endpoint
    static string subscriptionKey = "你的密钥";
    static string endpoint = "你的终结点";

        private const string READ_TEXT_URL_IMAGE = "你的图片链接";

        static void Main(string[] args)
        {
            Console.WriteLine("Azure Cognitive Services Computer Vision - .NET quickstart example");
            Console.WriteLine();

            ComputerVisionClient client = Authenticate(endpoint, subscriptionKey);

            // Extract text (OCR) from a URL image using the Read API
            ReadFileUrl(client, READ_TEXT_URL_IMAGE).Wait();
        }

        public static ComputerVisionClient Authenticate(string endpoint, string key)
        {
            ComputerVisionClient client =
              new ComputerVisionClient(new ApiKeyServiceClientCredentials(key))
              { Endpoint = endpoint };
            return client;
        }

        public static async Task ReadFileUrl(ComputerVisionClient client, string urlFile)
        {
            Console.WriteLine("----------------------------------------------------------");
            Console.WriteLine("READ FILE FROM URL");
            Console.WriteLine();

            // Read text from URL
            var textHeaders = await client.ReadAsync(urlFile);
            // After the request, get the operation location (operation ID)
            string operationLocation = textHeaders.OperationLocation;
            Thread.Sleep(2000);

            // Retrieve the URI where the extracted text will be stored from the Operation-Location header.
            // We only need the ID and not the full URL
            const int numberOfCharsInOperationId = 36;
            string operationId = operationLocation.Substring(operationLocation.Length - numberOfCharsInOperationId);

            // Extract the text
            ReadOperationResult results;
            Console.WriteLine($"Extracting text from URL file {Path.GetFileName(urlFile)}...");
            Console.WriteLine();
            do
            {
                results = await client.GetReadResultAsync(Guid.Parse(operationId));
            }
            while ((results.Status == OperationStatusCodes.Running ||
                results.Status == OperationStatusCodes.NotStarted));

            // Display the found text.
            Console.WriteLine();
            var textUrlFileResults = results.AnalyzeResult.ReadResults;
            foreach (ReadResult page in textUrlFileResults)
            {
                foreach (Line line in page.Lines)
                {
                    Console.WriteLine(line.Text);
                }
            }
            Console.WriteLine();
        }

    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83

更改自己的密钥和终结点

static string subscriptionKey = "你的密钥";
static string endpoint = "你的终结点";
  • 1
  • 2

永远不要公开发布该密钥。 对于生产来说,请使用安全的方式存储和访问凭据,例如 Azure Key Vault。

7、再次强调安全性

密钥轮换 每个认知服务资源都有两个 API 密钥,以便启用机密轮换。 这是一种安全预防措施,可让你定期更改可以访问服务的密钥,从而在密钥泄露时保护服务的隐私。

安全地存储机密和密钥

访问密钥保管库需要适当的身份验证和授权,否则调用方(用户或应用程序)无法进行访问。
身份验证用于确定调用方的身份,而授权则决定了调用方能够执行的操作。

身份验证通过 Azure Active Directory 来完成。 授权可以通过 Azure 基于角色的访问控制 (Azure RBAC)
或 Key Vault 访问策略来完成。
Azure RBAC可用于管理保管库和访问存储在该保管库中的数据,而密钥保管库访问策略仅能在尝试访问存储在保管库中的数据时使用。

Azure Key Vault 可能受软件保护,或在 Azure Key Vault 高级层中由硬件安全模块 (HSM) 提供硬件保护。
受软件保护的密钥、密码和证书由 Azure 使用行业标准算法和密钥长度进行保护。 如果需要提高可靠性,可以在 HSM 中导入或生成永不超出
HSM 边界的密钥。 Azure Key Vault 使用经美国联邦信息处理标准 (FIPS) 140-2 级别 2 验证的 nCipher
HSM。 你可以使用 nCipher 工具将密钥从 HSM 移动到 Azure Key Vault。

最后需要指出的是,根据 Azure Key Vault 的设计,Microsoft 无法查看或提取数据。

Azure 密钥管理服务

Azure 提供多种用于在云中存储和管理密钥的选项,包括 Azure 密钥保管库、Azure 托管 HSM、专用 HSM 和付款 HSM。 这些选项在 FIPS 合规性级别、管理开销和目标应用方面有所不同。

Azure 密钥保管库(标准层):已通过 FIPS 140-2 第 1 级别验证的多租户云密钥管理服务,也可用于存储机密和证书。 Azure 密钥保管库中存储的密钥受软件保护,可用于静态加密和自定义应用程序。 密钥保管库提供新式 API 和最广泛的区域部署,以及与 Azure 服务的集成。 有关详细信息,请参阅关于 Azure 密钥保管库。

Azure 密钥保管库(高级层):已通过 FIPS 140-2 第 2 级别验证的多租户 HSM 服务,可用于将密钥存储在安全的硬件边界中。 Microsoft 将管理和操作基础 HSM,存储在 Azure 密钥保管库高级层中的密钥可用于静态加密和自定义应用程序。 密钥保管库高级层也提供新式 API 和最广泛的区域部署,以及与 Azure 服务的集成。 有关详细信息,请参阅关于 Azure 密钥保管库。

8、运行程序

通过百度随意搜索一些车牌图片
取得链接后,将READ_TEXT_URL_IMAGE变量设置为自己的图片链接即可

这里以图片链接
在这里插入图片描述

https://img.tt98.com/d/file/pic/2018060202001129/5acc7493a8e62.jpg
为例

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/40967?site
推荐阅读
相关标签
  

闽ICP备14008679号