基于笔画描述的文字识别OCR系统——技术说明

1. 已排除的方法
  以下方法经过我们编写程序代码来实践验证了其不可行性。
  1.1 游程统计法
  思路:统计出点阵中的任意一点向六个角度0°、30°、60°、90°、120°、150°所能遍历的点数。如图2,最上一点往六个方向的最大值是 13,方向为上下方向(90°);又如,最左一点往六个方向的最大值是30,方向为左右方向(0°)。通过统计周围的点,可以轻易得到横竖捌捺点。
[img][/img] 
图1 “南”字的游程统计

  缺点:文字在有杂点或扫描不清楚时,识别率很低或无法识别。例如:图2的“操”字就无法用游程统计法区分出横竖捌撇。
[img][/img]
图2

  1.2 瘦边法
  思路:对文字的笔画进行腐蚀、细线化处理,从而得到文字的骨架。

图3 左图是瘦边法的理想效果,右图是黑体、粗体等瘦边后的效果

  缺点:由于黑体、粗体的笔画较粗,在进行腐蚀、细线化处理后,往往造成笔画丢失或产生多余笔画。如图4,由于“操”字有连笔,在使用瘦边法细化后产生了多余笔画,会造成误识别。

图4

  1.3 X、Y方向归一法
  思路:对文字的笔画按X、Y方向求中点进行简化笔画。
  缺点:同上。
  
  此外,还有汉字特征法、匹配法、字根特征、粗外围特征法、笔画密度法等算法,但经我们编写代码来实践证明其效果不理想,所以在此不一一介绍。

2. 我们现在采用的识别算法----双识别引擎
  我们采用双识别引擎,即:轮廓笔画描述、边角特征数据库。其中笔画描述是主要的识别算法,边角特征数据库是辅助的识别算法。
  2.1 轮廓笔画描述
  轮廓笔画描述为主要的识别方法,其关键是找出汉字点阵的轮廓,并对笔画的特性、关键性确定取舍。通过上面对传统OCR使用方法的分析,我公司花了近2年的时间调研、编程测试,用实践来证明了:只有通过分析轮廓,才能更准确地得到横竖捌捺点。游程统计法、瘦边法、汉字特征法、匹配法、字根特征、归一法等算法都无法成功地描述出笔画。
  原因一:只有基于“笔画描述”才能识别手写体文字,任何边角特征、匹配法、游程统计法等都无法归纳出手写体文字的特征,只能归纳印刷体。所以,“笔画描述”是手写体识别的唯一出路。
  原因二:经过我们编写代码来实践证明了瘦边法、归一法等简化笔画的识别方法是低效的、误差大的算法,这些算法容易丢失笔画或者产生多余的笔画。只有使用 “轮廓”才能体现出手写体文字的原貌,“轮廓”能够原汁原味地体现手写体文字的字形,而且能够实现二维的汉字点阵转化为二维矢量,实现汉字的高效识别。
  通过轮廓来描述笔画,使用许多无关大局的“短边”被“长边”归纳吞并,“曲线”被描述为“两段线段”,“局部凹凸”视周围环境也被归纳合并……这样,一个复杂的文字就被能用“尽可能少”的笔画描述出来。关键技术如下:
  2.1.1 描述轮廓,使用“逆(顺)时针搜索”算法描述出汉字的轮廓。见图5中的左图。
  假设:汉字是Width╳Height的点阵,任意一点都有左上、上、右上、右、右下、下、左下、左这8个方向的邻点。
  首先,x: 0→Width-1, y: 0→Height-1 搜索出一个黑点,该点设为P1;从点P1逆(顺)时针搜索出下一轮廓点P2,再从点P2逆(顺)时针搜索出下一轮廓点Pn……
  2.1.2 使用“切线最陡”算法区分出相邻的两个笔画。描述轮廓之后,笔画描述的关键在于决定从何处开始属于下一段笔画。经理论证明,使用“切线最陡”算法可以算出任意一点属于哪一笔画。见图5中的右图。
  假设:从第一步得到汉字的轮廓点的数组P1、P2……Pn,并且由于二维汉字点阵至少可以得到x、y坐标最大最小极值点(且至少存在4个符合这样条件的点MaxMin1、MaxMin2、MaxMin3、MaxMin4等);
  首先,遍历任意2个极值点(例如:MaxMin1和MaxMin2)之间的轮廓点,如果某一点Px的切线与MaxMin1、MaxMin2所在的直线的夹角最大,且大于一定的角度Angle(如30°),则该点能把MaxMin1、MaxMin2“至少”分为两段笔画。
  接着,遍历MaxMin1和Px之间的轮廓点,同上步的原理判断是否再分为两段笔画;遍历Px和MaxMin2之间的轮廓点,同上步的原理判断是否再分为两段笔画。
  重复以上的步骤,就可以实现汉字轮廓矢量化。
  2.1.3 无关大局的“短边”被归纳、吞并、省略,一般取矩形的1/8或1/10为参考值,小于该参考值的边就考虑吞并、省略。
  2.1.4 由于描述曲线(撇、捺等)比较复杂,比较两条曲线的相对位置关系更复杂。因此,把曲线描述为两条或多条线段,转换为计算机易于操作的对象来处理。
  2.1.5 宋体字的横或竖等笔画起始端常有一个三角形的凸出点,通过强制记忆的方法,把它们省略。
  这样,所有印刷体、手写体都能用简单的笔画描述出来。

图5 左图书是“林”的轮廓,右图是笔画描述的效果

  优点:识别速度快,不需要搜索数据库,直接由笔画得到识别结果。如果笔画足够清晰,能轻易地识别不同人书写的手写体,手写体文字识别率达到了80%以上。这正是传统OCR无法比拟的,因为传统OCR不是基于笔画描述的,不能识别或很难识别手写体。
  缺点:如果笔画模糊不清,很难用笔画来描述,如下图。

图6 笔画描述对这样模糊不清的文字“矗”就无能为力

  解决方法:不要因为某方面的缺陷,而放弃一种不错的算法。使用下面介绍的第二种识别引擎,取长补短。


  2.2 边角特征数据库:改进型四边轮廓特征
  2.2.1 传统OCR的识别算法----四边轮廓特征法
  思路:每一汉字用32╳32点阵表示,分别从上下左右四个方向扫描汉字点阵,得到四个数值P1、P2、P3、P4,把这四个数值存入数据库。通过大量的学习、记忆,得到一个所有汉字的四边特征数据库。用该方法识别汉字时,系统会从数据库中检索出一个最相似的汉字,得到识别结果。经我们编写程序、测试发现,用该方法对印刷体文字进行识别,识别率可达60%以上。

图1 “木”字的上边特征

  评价:中等

  2.2.2 改进型四边轮廓特征
  传统OCR的四边轮廓特征法,识别率不高,如:“国”、“囚”、“四”、“因”等字,因为它们的四边特征值是相同的,使用此方法无法区分、无法识别。因此,我们使用提出了新的构思,使用新的算法:在汉字内部再次切割(按1/4切割),切割后再取四边特征Q1、Q2、Q3、Q4,这样,一个文字就的特征描述就是P1、P2、P3、P4、Q1、Q2、Q3、Q4。通过大量的学习、记忆,得到一个所有汉字的内外四边特征数据库。识别汉字时,从数据库中检索出一个最相似的汉字,得到识别结果。经过我们这样的改进,印刷体文字识别率达到了80%以上。

图4 “囚”字按1/4切割后得到右边的图形

  评价:良

  通过以上同时使用两种识别引擎,扬长避短,印刷体文字的识别率提高到99%以上,手写体文字的识别率提高到90%以上。其中最显著的就是:成功解决了手写体识别的关键问题。传统OCR识别局限于某种识别方法,无法同时解决模糊不清的印刷体、变形较多的手写体,而我们提出的两种识别引擎,将能轻易地解决这种问题,并能在识别率、识别速度上有质的提高,可扩展性较强。
转载地址:http://www.chinaocr.net/show_hdr.php?xname=TVKUIV0&dname=1JJU801&xpos=3
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 基于深度学习的文字识别与检测算法研究是一种利用深度学习技术来实现文字识别和检测的方法。该方法可以通过训练神经网络来识别和检测图像中的文字,从而实现自动化的文字识别和检测。这种方法已经在许多领域得到了广泛的应用,如自动驾驶、图像识别、安防监控等。 ### 回答2: 随着人工智能技术的不断发展,深度学习在计算机视觉领域中的应用越来越广泛。其中,基于深度学习的文字识别与检测算法研究成为了热点之一。 文字识别与检测是计算机视觉领域中比较重要的任务,主要是通过计算机自动识别并提取图像中的文字信息。传统的基于特征点的方法,需要手动提取特征并设计分类器,其识别准确率较低。而基于深度学习的方法则通过大量的训练数据和深度神经网络的层次化特征提取,能够实现高精度的文字识别和检测。 其中,基于卷积神经网络(CNN)的文字识别算法相对成熟,通过设计具有多个卷积层和池化层的神经网络,可以实现对输入图像的特征提取,并对提取出来的特征进行分类。此外,也可以将循环神经网络(RNN)与CNN结合使用,实现对输入序列进行识别,例如手写数字的识别等。 对于文字检测,也可以使用基于深度学习的方法。其中,Faster R-CNN等目标检测算法可以用于定位图像中的文字,并进行分类识别。此外,还可以使用基于区域提议网络(RPN)的检测方法,能够快速地对图像中可能存在的文字区域进行定位和识别。 总的来说,基于深度学习的文字识别与检测算法研究还有很大的发展空间。未来,随着深度学习技术的进一步提升和训练数据的增加,这些算法的识别准确率和鲁棒性将会进一步提高,为实际应用提供更好的支持和服务。 ### 回答3: 深度学习是指一种基于神经网络的机器学习方法,它具有层数多、模型复杂度高、特征自动提取等优势。在文字识别与检测领域,基于深度学习的算法也取得了很大的进展。 首先,在文字识别方面,基于深度学习的算法可以通过大量的训练数据自动学习到文字的特征,如笔画、线条等,从而准确地识别出文字。其中,卷积神经网络(CNN)是最常用的深度学习模型之一。它通过卷积层、池化层等结构实现对输入图像的特征提取,并通过全连接层输出识别结果。例如,在手写数字识别中,LeNet-5模型就是一种基于CNN的算法,它能够识别出0~9十个数字。 其次,在文字检测方面,基于深度学习的算法可以实现对复杂场景中的文字进行精确的定位和识别。一种常见的方法是使用区域提议网络(RPN)提取出图像中可能包含文字的区域,然后通过候选区域分类和回归网络进行精细的定位和识别。例如,在场景文字检测中,EAST算法就是一种很好的基于深度学习的方法,它能够在不同角度和遮挡情况下精确地检测出文字。 总之,基于深度学习的算法文字识别与检测领域具有广泛的应用前景。未来随着技术不断的发展,这些算法将会变得更加精准和高效,为各个领域带来更多便利和效益。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzj0470

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值