
Azure 认知服务是基于云的人工智能(AI)服务,可帮助开发人员在不具备直接的 AI 或数据科学技能、知识的情况下将认知智能内置于应用程序中。由于合规等要求,某些企业不得不选择本地部署。此篇文章将会向您介绍如何实现 Azure OCR 容器的离线部署。

#1
认知服务介绍
Azure 认知服务采用常用开发语言,通过 REST API 和客户端库 SDK 使用。借助 Azure 认知服务,开发人员可以通过能够看、听、说和分析的认知解决方案,轻松将认知功能添加到他们的应用程序中。
认知服务可分为四大部分:影像(视觉)、语音、语言、决策。
视觉 API
视觉 API 主要分为如下三大类:
● 计算机视觉:用于处理图像并返回信息的高级认知算法。
● 自定义视觉:用于生成、部署和改进您自己的图像分类器。图像分类器是一种 AI 服务,它可以根据图像的视觉特征为图像应用标签。
● 人脸识别:高级人脸算法,实现人脸属性检测和识别。
视觉 API 的计算机视觉及空间分析功能支持容器化部署。
语音 API
语音服务包括各种功能,如语音到文本、文本到语音以及语音翻译等。
语音服务的语音文本互转和语言检测功能支持容器化部署。
语言 API
语言 API 主要包含如下四类功能:
● 语言服务:即自然语言处理(NLP)功能。主要用来理解和分析文本。
● 翻译:近乎实时地提供文本翻译功能。
● 语言理解:语言理解(LUIS)是一种基于云的对话式 AI 服务,可将自定义机器学习智能应用于用户的对话或自然语言文本,以便预测整体含义并提炼出相关信息。
● QnA Maker: 从半结构化内容生成问答服务。
语言 API 的 LUIS、关键词提取、语言检测、情绪分析、临床文本医疗信息提取和翻译功能支持容器化部署。
决策 API
决策 API 主要包含如下内容:
● 异常检测器:监视并检测时序数据中的异常。
● 内容审查器:监视危险,非法的内容。
● 个性化体验创建服务:它能根据用户的行为历史,对用户的行为进行评估和预测,进行可以向用户推送更加合适的内容。
决策 API 的异常数据检测功能支持容器化部署。
#2
容器化安装步骤
申请许可
首先,需要到如下网址获取运行许可:
https://customervoice.microsoft.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR7en2Ais5pxKtso_Pz4b1_xURjBQUkk3MVdQN0RZNzFLS0FNRVU0UlFEQyQlQCN0PWcu
表单填写完成后,10 个工作日以内,将会收到审批结果。
获取容器运行所需的信息
运行容器化的认知服务,需要如下信息:
● 服务端点 URI

● API 密钥

配置运行环境
首先,需要检查机器是否支持高级向量扩展功能:
grep -q avx2 proc/cpuinfo && echo AVX2 supported || echo No AVX2 support detected
机器推荐配置为 8 核心,16GB 内存。
然后需要安装 Docker。Docker 安装方法请参见:
https://docs.docker.com/engine/install/centos/
下载并运行镜像
这里以 OCR 镜像为例:
容器 | 容器目录/ 仓库/ 镜像名 | 标签 |
Read 3.2 GA | mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2022-04-30 | latest, 3.2, 3.2-model-2022-04-30 |
然后可以用如下命令下下载镜像(此处使用的版本为 2022-4-30):
docker pull mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2022-04-30
最后,用如下命令运行镜像:
docker run --rm -it -p 5000:5000 --memory 16g --cpus 8 \mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2022-04-30 \Eula=accept \Billing={ENDPOINT_URI} \ApiKey={API_KEY}
#3
离线安装
如果环境对网络访问有限制,就需要多做一些工作以配置容器服务。要做的工作主要有:
● 配置一台可上网的机器用作下载所需软件包和容器镜像;
● 复制软件包和容器镜像到服务器上完成安装。
下面将针对运行环境和镜像的离线部署进行讨论。
运行环境离线部署
以 CentOS 为例,需要在可上网机器上使用如下命令准备 docker 软件包:
1.使用如命令下载软件包及其依赖项:repotrack docker-ce -p ./docker-ce/
2.对下载后的软件包进行压缩:tar czvf docker-ce.tar.gz ./docker-ce/
3.然后请复制压缩包到服务器。
在生产服务器上,运行如下命令安装 docker:
1.解压:tar czvf docker-ce.tar.gz ./docker-ce/
2.安装:yum install -y --cacheonly --disablerepo=* ~/docker-ce/*.rpm
容器镜像离线部署
在可上网的机器上,按照前面的步骤安装 docker,然后下载镜像,之后运行如下命令把镜像保存为本地文件:
docker save -o ocr.tar mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2022-04-30
把文件复制到服务器上,然后运行如下命令加载镜像:
docker load -i ocr.tar
#4
其他建议
为了保证服务在生产环境连续运行,建议配置 docker 为服务方式运行,并且把容器镜像也配置为服务方式。
Dokcer 以服务方式运行
systemctl enable dockersystemctl start docker
容器镜像以服务方式运行
sudo docker run -d --name ocrreader --restart always -p 80:5000 --memory 16g --cpus 8 \--env Eula=accept \--env Billing=https://ocrread-m-*.cognitiveservices.azure.cn/ \--env ApiKey=* \mcr.microsoft.com/azure-cognitive-services/vision/read:3.2-model-2022-04-30
#5
参考资料
[1] 创建要重复使用的容器
https://learn.microsoft.com/zh-cn/azure/cognitive-services/containers/container-reuse-recipe
[2] Install Computer Vision 3.2 GA Read OCR container
https://learn.microsoft.com/en-us/azure/cognitive-services/computer-vision/computer-vision-how-to-install-containers
[3] Install Docker Engine on CentOS
https://docs.docker.com/engine/install/centos/
[4] How to download rpm package and all dependencies (RHEL CentOS 7)
https://www.golinuxcloud.com/download-rpm-package-and-all-dependencies-centos/
[5] docker image save
https://docs.docker.com/engine/reference/commandline/image_save/
本文作者:杜红俊

微软(中国)云解决方案架构师
具有 20 年左右 IT 行业从业经验,主要负责云系统方案设计、交付与调优。




