|12306验证码为什么那么变态?都是这项深度学习应用给逼的


导读:12306为什么要设置那么复杂的验证码机制呢?就是因为OCR 。
今天聊OCR 。
OCR是人工智能、机器学习特别是深度学习 , 在图像识别方向最为重要的应用之一 。 OCR全称Optical Chararcter Recogition , 中文翻译为光学字符识别 , 通常简写为OCR 。
作者:莫凡
来源:华章科技
|12306验证码为什么那么变态?都是这项深度学习应用给逼的
本文插图

如果之前没有接触过OCR , 光看名字上又光学又识别的 , 容易产生“听起好像很高端很复杂”的距离感 , 但实际上 , 计算机科学的每一项技术都是为了机器具备多一项技能 , 而OCR要机器具备的 , 是一项对于我们人来说属于最最基本的技能——“看图识字” 。
我们可能对这个能力习以为常了 , 以至于不会觉得这算是一项能力 , 但仔细想一想就知道 , 看图识字虽然最最基本 , 不过同样也最最基础 , 很多工作都需要首先具备看图识字这项技能才能开展 。 同样的道理 , OCR现在也已经是我们日常生活中应用最为广泛的智能技术之一 。
如果一时没想起来 , 不妨从咱们中国人都很熟悉的春运说起 。 12306大家应该都知道 , 是订火车票的官方网站 , 2015年12306出了一个轰动全国的“大新闻” , 12306改变“验证码机制”了 。 买火车票之前 , 用户先得要做几道颇为棘手的智力题 , 譬如要求在几张图片中找出某位名人 , 据说有些用户因为知识面比较窄最后选择放弃了购买火车票 。
这事大家都知道 , 不过有没有想过一个最基本的问题:12306为什么要改变验证码机制呢?
就是因为OCR 。
|12306验证码为什么那么变态?都是这项深度学习应用给逼的
本文插图

▲网友恶搞的12306验证码
验证码之所以叫验证“码” , 是因为最开始验证码大都是一串保存在图片里的四位数字 。 验证码的作用自然是区别真人和机器 , 听起来很厉害 , 其实原理异常简单:机器擅长处理结构化数据 , 而对于图像、文本和音频这些生活中很常见但属于非结构化的数据 , 对机器来说 , 用传统的算法处理难度非常大 。
为什么呢?不妨想象一个最最传统的验证码 , 白底黑字 , 上面一共四个阿拉伯数字 , 我们人自然看一眼就知道是哪四个数字 。 但是在机器看起来 , 这张图片是由一个挨一个的像素数值构成的数据矩阵 , 这就产生一个问题 , 我们人看起来是“空白”的地方 , 在机器看起来同样也存在着数字 , 并没有什么不同 , 自然无法区分到底上面写了什么 。
OCR的研究人员当然也没有偷懒 , 努力尝试了很多办法 , 有一种思路是提取图片特征 , 也研究出两种传统的提取方法 , 分别是基于结构形态的特征提取 , 和基于几何分布的特征提取 , 也取得一些成果 。
但总的来说 , 要求机器准确识别图片中的数字仍然很困难 , 只要图片中存在一点点杂质干扰 , 识别的正确率就大幅度下降 , 这就是为什么后来验证码都会选择采用一些随机线条 , 对于OCR来说 , 这都是低成本高收益的防破解手段 。 但对人来说却轻而易举 , 只需要看一眼就能识别 。
正是因为人和机器在处理非结构化数据存在能力鸿沟 , 在验证码这里 , 就是人和机器在识别图片中字符上的能力存在显著差异 , 因此 , 只要简单使用验证码 , 就能相当准确地辨别正在输入的究竟是人还是机器 。
那为什么12306在2015年就非得换了很好用的验证码机制呢?是因为就在2012年 , 发生了一件轰动整个研究界的事件 , 这个事件影响深远 , 推动OCR技术发生飞跃 , 从此机器也能很轻易就准确识别图片上的数字了 。
OCR并不是新出现的概念 , 起步非常早 。 根据《深度实践OCR:基于深度学习的文字识别》一书介绍 , 早在1929年 , 德国科学家就已经提出了OCR的想法 , 后续又有一些科学家加入进行这方面研究 , 不过 , 直到计算机出现以后 , 想法才慢慢落地 。


推荐阅读