首页 / 算法 / java-为OCR解析图像中字符的算法
java-为OCR解析图像中字符的算法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-为OCR解析图像中字符的算法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1834字,纯文字阅读大概需要3分钟。
内容图文
![java-为OCR解析图像中字符的算法](/upload/InfoBanner/zyjiaocheng/678/2db3e53fb1724ec7bb0efe8f8d673ff5.jpg)
我正在研究OCR,现在我正在研究将每个字符分开解析.例如,如果我的图片显示以下内容:
12345678.90
我想检测图像中每个数字的开始和结束位置的x,y坐标,以便确定要处理的数字,然后解析出每个数字/字符并进行处理.
我已经设计出一种简单的算法来执行此操作,并且我希望就如何进行改进提出一些意见/评论.
(在此应用程序中,我只需要处理数字,但是如果此算法也可以解析字母,那会更好).
> 1)我将在图像底部以一条直线读取图像中的像素.例如,如果图像为30×30,则我将从0.30开始读取到30.30.
> 2)我将比较像素的颜色.在确定了背景色和前景色之后,我将比较每个像素的颜色,以查看其背景色还是前景色.
> 3)如果它是背景,它将被忽略.如果我在前景中遇到任何像素,那将表示一个数字的开始.在那种情况下,我会记下位置,然后开始向上读取像素.例如,如果在5,30时我检测到前景色,那么我将开始读取5,29、5,28等.
> 4)我将向上读取像素(y轴),直到遇到背景颜色的像素为止.这应该给我角色的高度. (我知道对于一些像5这样的字符会更复杂,让我们暂时忽略它们).因此,例如,我确定角色的垂直方向是从5,20到5,30.
> 5)然后我回到x轴(5,30),在那里我检测到角色的水平方向开始.我将继续水平阅读以确定字符的宽度,例如6,30、7,30等.
> 6)这是棘手的步骤.我猜,在以下每个字符之间:
12345678.90
背景颜色中存在约一个像素的间隙.而且它可能对我们来说不可见,但是它在那里,并且会在程序中随着水平逐像素读取颜色而被发现.这将告诉它角色水平结束的位置.因此,例如,它可能会检测到15、30处的背景色像素.
> 7)这是算法,它应该给出每个字母开始和下一个字母开始的位置的x,y坐标.在上面的示例中,字符的范围是从5,20到15,30,并且是10×10.
是否可以改进此算法,并且/或者我对步骤6的假设是否正确?
解决方法:
我知道用于数字分割的一种常见方法是滑动窗口.
基本思想是,您可以在数字图像上滑动某个大小的窗口.
滑动窗口的每次移动都会产生图像(您只能查看窗口覆盖的像素).滑动窗口将变窄.现在可以训练分类器,它将滑动窗口映射到1或0,其中1表示滑动窗口以2位数的分隔为中心,0表示相反的数字.
您将需要一些训练数据来训练分类器.或者,您可以尝试使用无监督学习.
编辑:这部影片可能是有用的:https://www.youtube.com/watch?v=y6ga5DeVgSY
内容总结
以上是互联网集市为您收集整理的java-为OCR解析图像中字符的算法全部内容,希望文章能够帮你解决java-为OCR解析图像中字符的算法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。