java ocr算法原理_java-为OCR解析图像中字符的算法

我正在研究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的假设是否正确?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值