照片的OCR识别

来自ng的ml-003中 18_XVIII._Application_Example-_Photo_OCR

这是ng2013年在coursera上最后的一课了。这一系列的几个视频还是相比前面有些难懂,。。。。。。

ng说拿这个做例子有三个原因:一、演示如何将复杂的机器学习进行融合;二介绍下机器学习的type line和当你决定做某事的时候如何的利用资源;三、这个例子能够说明更多有趣的机器学习idea(将机器学习用于计算机视觉,人工数据综合)


首先是图像中的文字识别


这是最简单的几部划分,(但是比如你之前的单词是cleaning,但是机器有可能会反馈给你c1eaning,会有少许的错误,简单的提下)


这里是一个OCR识别的管道图,下面是每个部分差不多需要这么多人的合作,但是(ng最后居然说其实一个人完成整个工作也是可以的,如果他知道怎么做的话,唉)

一、滑动窗口


相对应来说,行人检测中的窗口比较简单,因为他的背景较为单一,不像之前的文本识别,背景很是复杂,在行人检测中,要考虑到不同距离下不同人的窗口的高度和宽度等等。


这里是个简单的数据集的例子,通过观察采用这么大的窗口较为合适,行人检测的数据集一般都是1k或者10k等等的


从图的左上角开始一个82*36的窗口,然后分类获得这个是y=0,就是非行人的数据,然后将窗口右移这其中的移动的距离就叫做stepsize,如果stepsize等于1 的确可以抓取足够的数据,但是计算量太大,一半都是stepsize等于4 或者8.然后这里的窗口大小如果按照需要也是可以调的更大的。并不是完全的限定在一个数值上


这样就能够获得这样一个结果


通过这样的方法就能应用在文字识别上,通过不同的滑动窗口获得文本的位置


通过不同的滑动窗口最后就锁定了文字的位置,然后进行图片的放大来更清晰的显示字符串的位置


但是如果采用中间划分的方法,左边的明显是滑动窗口取到了两个字,而右边的是取到了一个完整的字


通过一种方法当滑动窗口滑倒完整的字的时候不采用切分,而滑倒两个字的时候采用切分。

二、人工数据结合

ng说见过的最好的机器学习算法都是采用一个low bias算法,然后再大量的数据上运行。对于文字识别来说。数据有一个是来自于真实的数据,一个是来自于众多的字体库


或者通过采用字体库的字体,在放到实际数据的背景上合成人工数据:


或者是在数据上加上扭曲等方法


在音频上:



对于数据添加噪声来说,添加的噪声是有意义的,比如上图中的扭曲是可以在test中真实找到的,(类似模拟test数据一样)。而下文中的椒盐噪声是无意义的,添加了也没什么帮助,因为在这个例子中,我们是想识别的文字而且文字的扭曲是真实世界中看得到的,而添加的椒盐噪声是除非你就是为了比如降噪这种噪音,能够在test中看到的,因为这里是为了识别不同形状的a,而不是为了降噪,


按照上图说的,在添加人工合成的数据的时候,一定要知道你的模型是不是过拟合的,如果模型是欠拟合的,那么增加再多的数据都是在浪费时间。其次,可以坐下来和团队的人员一起问问 想要这些数据的处理速度提升10x,需要做多少工作:1、人工合成;2、手动添加标签;3、寻找混合来源。

三、细胞级别分析


如上图来说,对于整个系统而言,每个地方都是需要做工作的,但是如何找到这个系统的瓶颈之处,通过提升这个系统的瓶颈来达到提升整个系统的效率,这是值得思考的,不然在其他表现很好的环节上大量的工作,最后还是在浪费时间

相比较而言,首先没有任何改变的情况下最好的精度是72%,然后通过修改第二项,让他的输出是100准确的,那么整个系统提升到89%的精度,有17%的改变,说明这部分值得我们花时间,然后再改动第二项的基础上,接着将第三项改动成完美情况下,整个系统只提升了1%,这说明第三项是很好的,差不多不需要花时间去完善。

这同样让我们知道每个部分的上限是多少,和在这个部分的上限上运行的时候整个系统的精度是多少



上面两个图就是一个人脸检测的模型过程。


通过与最原始的模型的效果相对比,先逐个部分的进行人工的修改(即将这个部分的精度提到上限),比如第一部分的背景移除,可以通过ps等软件人工的去除,然后将这个完美的模型代替第一部分的输出,观察整个模型提升的效果,这里第一个模型只提升了0.1%,说明这部分没什么可改善的地方。接着往下按照这种原理进行。找到整个模型的瓶颈之处。

就是用人工的小数据去验证模型的瓶颈,而不至于花了很久时间才发现其实都在浪费时间。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: VB OCR识别源码是指使用VB语言编写的OCR(Optical Character Recognition,光学字符识别识别程序的代码实现。OCR是一种通过计算机技术识别并转换印刷体或手写体字符成为可编辑文本的技术。VB OCR识别源码可以是一个基于图像处理算法的识别程序,可以识别图像中的字符并将其转换为文本。OCR识别源码可以通过学习和模拟人类视觉和语言处理方式进行设计和实现。 VB OCR识别源码的实现步骤一般包括图像预处理、特征提取和字符识别三个主要环节。首先,必须将原始图像进行预处理以获取更好的图像质量,比如调整亮度、对比度和色彩平衡等。然后利用特征提取算法提取出图像中字符的特征,如边缘、轮廓、纹理等信息,然后使用字符识别算法根据这些特征对字符进行识别。字符识别算法包括模板匹配、神经网络、支持向量机等。 然而,识别率往往受到诸多因素的影响,如图像的质量、字体、字号、倾斜角度、噪声等。因此,要提高VB OCR识别源码的准确性,需要对算法进行优化,通过模型迭代、增加样本量、引入自适应学习等方法来改进算法,同时结合实际场景进行调整和优化。 总之,VB OCR识别源码是一种非常有用的技术,可以在各种场景下进行自动化文本识别和报表处理等工作,受到越来越多应用的关注。 ### 回答2: 首先,OCR技术是一种可以将印刷体或手写体转换成文本或者数字的自动识别技术。而VB OCR识别源码是指使用Visual Basic编写的OCR识别程序的源代码。这种源码可以用来实现光学字符识别功能,即对图像中的字符进行识别和转换,从而可以拓宽应用范围,提高实用价值。 VB OCR识别源码需要包含以下主要部分:图像预处理、字符分割、特征提取和识别分类。首先,通过图像预处理,对图像进行滤波、二值化等操作,使字符更加清晰。然后,通过字符分割,将图像分割成单个字符,以供后续的识别处理。接着,通过特征提取,对字符的几何形状特征、灰度特征等进行提取,建立特征向量,为后续的分类处理做准备。最后,通过分类器将字符识别出来,并将结果输出。 VB OCR识别源码可以应用于各种领域,比如照片文字识别、电子文档转换等。不过,在使用该源码时,需要注意数据集和识别模型的训练和优化,以及对应的算法和实现细节的完善。 总之,VB OCR识别源码是实现OCR技术的重要基础,它可以帮助我们有效地提高图像识别的精度和效率。 ### 回答3: VB OCR识别源码是一种基于VB语言开发的图像识别程序,可用于识别图片中的文字内容。这种源码程序能够对一些复杂的、包含多种字体的图像进行识别,并将其转化成文字的形式。这对于小型企业、个人开发者或学习者来说,是一个非常实用且好用的工具。 VB OCR识别源码主要包含两个部分:图像处理模块和文字识别模块。图像处理模块主要用于对输入的图像进行预处理,如图像灰度化、二值化、去噪等,以提高后续的图像识别准确率。而文字识别模块则是核心部分,负责将预处理后的图像中的文字信息进行识别,并将其转化成计算机可读的文字形式。 VB OCR识别源码的优点是开发难度较低,图像识别准确率较高,还能够进行定制化的开发,适应不同的应用场景。另外,VB语言本身就是一种容易上手的编程语言,对于初学者来说也比较友好。 总之,VB OCR识别源码是一款实用而且易用的软件工具,能够为很多人的学习和工作提供很大的帮助和便利。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值