微软认知服务包括了影像、语音、语言、搜索、知识五大领域,通过对这些认知服务的独立或者组合使用,可以解决很多现实世界中的问题。作为AI小白,我们可以选择艰难地攀登崇山峻岭,也可以选择像牛顿一样站在巨人的肩膀上。本章节的内容就以“漫画翻译”为例,介绍如何灵活使用微软认知服务来实现自己的AI梦想。
日本漫画非常著名,如海贼王,神探柯南等系列漫画在中国的少年一代中是非常普及。国内专门有一批志愿者,全手工翻译这些漫画为中文版本,过程艰辛复杂,花费时间很长。能否使用AI来帮助加快这个过程呢?
小提示:漫画是有版权的,请大家要在尊重版权的前提下做合法的事。
漫画翻译,要做的事情有三步:
调用微软认知服务,用OCR(光学字符识别)服务识别出漫画上所有文字;
调用微软认知服务,用Text Translate(文本翻译)服务把日文翻译成中文;
自己写逻辑代码把中文文字贴回到以前的漫画中,覆盖以前的日文,生成新的漫画帧。
下图是展示最后的翻译效果,左侧是原漫画,右侧是翻译成中文的结果(由于版权问题,我们自己模仿原漫画做了几个对话气泡):
安装Windows 10版本 1803,低一些的Windows 10版本也可以使用。Windows 7也可以运行本示例程序,但不建议使用,Windows 7的官方技术支持到2020/01/14结束。
小提示:如果您的机器不能运行Windows 10,说明硬件性能还是有些不够的。AI是建立在软硬件快速发展的基础上的,不建议您使用低配置的机器来做AI知识的学习。
安装Visual Studio 2017 Community。点击这里下载,对于本案例,安装时选择“.NET桌面开发”即可满足要求。
点击进入此页面:
根据自己的实际情况选择以上三个选项之一,这里以选择第一个“来宾”选项为例:
选择一个热爱的国家/地区,在上下两个复选框上(“我同意”,“我接受”)都打勾,点击“下一步”:
上图中以选择”Microsoft”账户为例继续:
最后得到了上面这个页面,这里的密钥(Key)和终结点(Endpoint)要在程序中使用,请保存好!
小提示:上面例子中的密钥只能再使用1天了,因为是7天的免费试用版本。所以当你的程序以前运行正常,某一天忽然从服务器不能得到正常的返回值时并且得到错误代码Unauthorized (401),请首先检查密钥状态。
小提示:当试用的Key过期后,你是无法再申请试用Key的,只能申请正式的Key,这就要通过Azure门户。在Azure门户中申请好Computer Vision服务(包括OCR服务)的Key后,它会告诉你Endpoint是…../vision/v1.0,这个不用管它,在code里还保持……/vision/v2.0就可以了,两者的Key是通用的。
在上图中点击上方的 “+ Add”图标来创建资源,得到资源列表如下 :
在上图中点击右侧列表中的“AI + Machine Learning”,得到下图的具体服务项目列表:
这里有个坑,文本翻译不在右侧的列表中,需要点击右上方的”See all”来展开所有项目:
哦,好吧,还是没有!保持耐心,继续点击Cognitive Services栏目的右侧的”More”按钮,得到更详细的列表:
还是没有?卷滚一下看看?到底,到底!OK,终于有了Translator Text,就是Ta:
创建这个服务时,我们选择F0就可以了。如果要是做商用软件的话,你可以选择S1或其他,100万个字符才花10美元,不贵不贵!
是不是以上申请Key的过程太复杂了?那是因为Azure内容庞杂,网页设计层次太多!其实这个过程是可以简化的,因为我们有个Visual Studio Tools for AI扩展包!
打开VS2017,菜单上选择“工具(Tools)->扩展和更新(Extensions and Updates)”,在弹出的对话框左侧选择“联机(Online)”,在右侧上方输入”AI” 进行搜索,会看到”Microsoft Visual Studio Tools for AI”扩展包,下载完毕后关闭VS,这个扩展包就会自动安装。
安装完毕后,再次打开VS2017,点击菜单View->Server Explorer。如果安装了Tools for AI,此时会看到以下界面:
在AI Tools->Azure Cognitive Services下,可以看到我已经申请了2个service,ComputerVisionAPI和TranslateAPI就是我们想要的,这两个名字是自己在申请服务时指定的。
假设你还没有这两个服务,那么在Azure Cognitive Services上鼠标右键,然后选择Create New Cognitive Service,出现以下对话框:
在每个下拉框中显示的内容可能会每个人都不一样,绝大多数是用下拉框完成填充的,很方便。假设我想申请TextTranslation服务,那么我在Service Name上填写一个自己能看懂的名字就行了,比如我填写了”TranslateAPI”,这样比较直接。同理可以创建ComputerVisionAPI服务。服务的名字不会在Code中使用。
我们废了老鼻子劲,得到了以下两个REST API的Endpoint和相关的Key:
OCR服务
Endpoint: https://westcentralus.api.cognitive.microsoft.com/vision/v2.0
Text Translate文本翻译服务
Endpoint: https://api.cognitive.microsofttranslator.com/translate?api-version=3.0
小提示:以上两个Endpoint的URL是目前最新的版本,请不要使用旧的版本如v1.0等等。
咱们是洗洗睡了,还是写代码?看天色还早,继续写代码吧!