在爬虫对验证码进行破解时,经常需要对图片中的文字内容进行识别,这时就需要用到OCR技术了,那么 OCR识别技术是如何实现对文字内容“即拍即得”的呢?
OCR(Optical Character Recognition)即光学字符识别技术,实质属于计算机输入技术。OCR通过利用光学技术与计算机技术对图片、纸张、物体等处的文本内容进行分析识别,并读取转换成计算机和人类都能理解接受的格式。
OCR主要可以分为手写体识别和印刷体识别。
由于印刷体都是计算机自助生成再进行输出,通常较为规律,因此较手写体识别来说要更简单。而手写体由于往往会带有个人特色,每个人的风格不尽相同,由于其千人千面的特性,手写体识别也成了OCR界一直想攻克的难关。当然,除了手写体与印刷体外,OCR也可以根据识别内容来分类。例如按语言分类,要识别的内容将可能包括汉语、英语、日语、法语等,而如果仅满足国人需求,要识别的内容就可能会包括汉字、英文字母、阿拉伯数字、标点符号等。
通常根据要识别的内容不同,识别的难度也不同。比如仅识别阿拉伯数字,只需能识别出0-9,而英文字母则需要识别52个字符(仅考虑大小写),而中文识别则会高达数千个,且由于汉字的结构偏旁较为复杂,要将这些字符都准确识别出来会使难度系数直线上升。一个典型的OCR技术处理流程如下图所示:
图:来源于网络
其中,图像预处理通常为能使图像中的文字更明显便于识别,会对图像的成像问题进行修正,通常是基于数字图像处理和传统机器学习等方法对图像进行操作。
常见的图像预处理包括几何变换(透视、翻转、旋转、扭曲、拉直等)、畸变矫正、去模糊、锐化、图像增强、光线矫正、灰度化、二值化等。其中,在对付验证码时常用的灰度化、二值化处理对于内容较为简单的文本信息有增强作用,但对复杂背景的内容处理效果就会收效甚微。
文字检测,顾名思义是对图片中存在的文字内容进行检测,检测内容包括文本所在的位置、范围、布局、数量等,通常也包括整体版面分析和文字行检测等。部分OCR软件为了保证检测范围的准确性,还会套用图像检测的方法,对图像中的文本区域进行框选,并像下图所示将框选与待识别区域交由令用户进行校验确认。
图:某OCR软件识别界面
文本检测完成后,建立在其基础之上的文本识别将会对选定的文本内容进行识别,并将图像中的字符转化为可供人类和计算机识别的文本信息。文本信息主要需要解决的问题是每个字符是什么。
对于识别后输出的文本通常需要再次核对验证以确保其准确率,即文本校正,通常也被认为属于文字检测的环节。当识别的内容是由词库中的词汇构成时就称之为有词典识别,反之则称为无词典识别。在整个处理流程过程中,对识别准确率影响最大的步骤就是文本检测与文本识别。相比一般文本,通常对OCR技术的评测会从最终识别率、识别速度、版面理解正确率、版面还原满意度4方面来作为依据。
OCR识别技术对于手写体识别目前尚在发展阶段,而对于印刷体识别的技术已经发展的较为纯熟。而且,对于印刷体识别的应用划分可能远比你我想象的更为细致。例如用于对人身份进行核查验证的证件OCR识别、用于移动支付绑卡的银行卡OCR识别、用于存储管理名片的名片OCR识别、用于大量文字资料、档案卷宗的录入和处理的文档OCR识别、用于银行、金融、电信机构的票据OCR识别、用于交通安全的车辆OCR识别等。
OCR技术的出现无疑提升了工作效率,也改变了我们的生活。
参考文献:
https://www.sohu.com/a/233167039_205239
https://zhuanlan.zhihu.com/p/45376274
编辑:jq
全部0条评论
快来发表一下你的评论吧 !