OCR识别系列之一-----基础介绍

最近做了几个OCR项目,现在基本已经结束,想利用这段闲暇时间,来对OCR进行系统的梳理一下,首先对ocr基础进行介绍。

1、OCR的定义

OCR,中文又叫光学字符识别,它是利用光学技术和计算机技术将目标上的文字信息提取出来。OCR识别是计算器视觉研究领域之一,目前生活中的应用也比较成熟,比方说,身份证识别,车牌号识别,拍题搜答案等应用。

2、OCR的分类

目前主要根据识别字体分成两类:印刷体识别和手写体识别。

印刷体识别相对简单些,字体比较规则,有几十种字体规则。但是也有一些因为字符印刷墨迹的断裂,粘连,遮挡等造成识别困难,总的来说,印刷体的识别目前识别情况已经相当不错了,但是还没能达到100%识别准确。

手写字体一直是OCR界想攻克的难关,主要因为手写字体比较多样化且具有个人特色,就比方说医生开的药方,人眼都很难辨认写的是什么,机器也很难理解。

3、ocr识别方法

目前主要有以下几种:

  • 谷歌开源OCR引擎Tesseract,因为是外国人开发的,所以中文识别效果并不好,但是在英文及数字识别上效果不错。
  • 百度公司开发的OCR的API,通过写一个python脚本就可以对其进行调用实现文字识别,但是并不是免费,少量调用不收费,大量调用就要收费了。用来进行汉字识别效果还不错。
  • 传统方法做字符的特征提取,然后输入分类器,得到OCR模型。在深度学习没有发展起来前,对于复杂的场景基本都是采用这种方法,第一步特征设计和提取,我们需要对字符进行设计它独有的特征,来为后面分类做准备,字符有哪些特征呢?结构特征:字符端点,交叉点,圈的个数,线条数等,第二部将这些特征送入分类器(SVM)做分类,得出识别结果。这种方式的缺点是需要大量时间做特征设计,通过人工设计的特征(HOG)来训练字符识别模型。这种方法,一旦字符变化,模糊或者背景干扰等情况出现时,模型的泛化能力迅速下降,过度依赖字符切分的结果,在字符扭曲,粘连,噪声干扰的情况下,切分的错误尤其突出。这也就是为什么现在基本都会选择深度学习去做OCR。
  • 暴力的字符模板匹配法,通常应用在字体统一,清晰度高,识别场景简单,识别字符简单的
  • 基于深度学习的字符识别(文字检测+文字识别),目前来说用的效果比较好的就是先利用神经网络对文字区域进行定位,然后对定位到的文字进行字符识别

猜你喜欢

转载自blog.csdn.net/wangmengmeng99/article/details/129796845