字符识别(OCR算法)

TLE*_*TLE 35 ocr

我正在开发一个项目,我必须开发OCR算法(我必须从Image中读取文本,然后将其转换为不同的语言).所以我的第一个任务是从图像中获取文本.

完成第一项任务的步骤.

  1. 从给定的源加载任何图像格式(bmp,jpg,png).然后将图像转换为灰度并使用阈值(Otsu算法)对其进行二值化.//完成(如何从输出图像中删除噪声???)

结果

输入图像

输出图像

  1. 检测分辨率和反转等图像特征.这样我们最终可以将其转换为拉直图像以进行进一步处理.(完成了Image的旋转代码但是无法检测到我们必须旋转Image的Image角度,所以仍然在角度检测部分工作)

  2. 线路检测和删除.此步骤需要改进页面布局分析,以获得更好的下划线文本识别质量,检测表格等.(决定完成该部分的结束)

  3. 页面布局分析.在此步骤中,我尝试识别图像中存在的文本区域.因此,只有那部分用于识别,并且省略了该区域的其余部分.

  4. 检测文本行和单词.在这里,我们还需要处理不同的字体大小和单词之间的小空格.

  5. 识别人物.这是OCR的主要算法; 必须将每个字符的图像转换为适当的字符代码.有时,该算法会为不确定图像生成多个字符代码.例如,识别"I"字符的图像可以产生"I","|" 稍后将选择"1","l"代码和最终字符代码.

  6. 将结果保存为选定的输出格式,例如,可搜索的PDF,DOC,RTF,TXT.保存原始页面布局非常重要:列,字体,颜色,图片,背景等.

所以我在part6中需要帮助.我已经完成了行检测部分(从包含n行的段落中获取n个图像)但是在下一部分中卡住了单词和字符识别.如果您知道与OCR和字符识别部分相关的良好链接,那么请发布这里.

对于字符识别我想使用asprise(Java库)http://asprise.com/product/ocr/index.php?lang=java

nib*_*bra 18

要检测旋转角度,请使用Hough变换.

为了降低噪声,请将具有相同颜色(相似颜色,使用容差阈值)的邻居(北,东,南或西)的任何像素替换为邻居的平均值.

搜索垂直白色间隙以进行布局检测.沿垂直间隙切片.对于每个切片,现在搜索水平间隙和切片.如果切片具有相同(相似)的高度,则您处于行级别.否则重复垂直/水平切片,直到你只剩下线.然后最后一步是垂直切片,给你单个字符(或某些情况下的连字).长而窄或短而宽的切片是线条.

将字符切片与字符库进行比较.如果性能不是主要问题,请尝试查找不同字体库中的字符,直到您可以识别使用的字体.然后坚持使用该字体进行字符识别.

在原始图像中,用背景颜色替换每个字符,背景颜色是通过插入不属于字符每个像素的字符一部分的像素来确定的.这会为您提供背景图像(如果有).


小智 5

您应该使用自适应阈值而不是Otsu方法..我认为这将有所帮助http://www.csse.uwa.edu.au/~shafait/papers/Shafait-efficient-binarization-SPIE08.pdf 此方法将自动删除噪声.