我正在开发一个项目,其中我必须开发 OCR 算法(我必须从图像中读取文本,然后将其转换为不同的语言)。所以我的第一个任务是从图像中获取文本。
完成第一个任务的步骤。
- 从给定源加载任何图像格式(bmp、jpg、png)。然后将图像转换为灰度并使用阈值(Otsu算法)将其二值化。 //已完成(如何从输出图像中去除噪声???)
Results
检测图像特征,如分辨率和反转。这样我们最终就可以将其转换为拉直的图像以进行进一步的处理。 (完成了图像旋转的代码,但无法检测我们必须旋转图像的图像角度,因此仍在研究角度检测部分)
线路检测和删除。需要此步骤来改进页面布局分析、对下划线文本实现更好的识别质量、检测表格等(决定在末尾完成该部分)
页面布局分析。在此步骤中,我尝试识别图像中存在的文本区域。因此,只有该部分用于识别,而该区域的其余部分被忽略。
检测文本行和单词。这里我们还需要注意不同的字体大小和单词之间的小间距。
字符识别。这是OCR的主要算法;每个字符的图像必须转换为适当的字符代码。有时,该算法会为不确定的图像生成多个字符代码。例如,识别“I”字符的图像可以产生“I”、“|”。 “1”、“l”代码和最终的字符代码将在稍后选择。
将结果保存为选定的输出格式,例如可搜索的 PDF、DOC、RTF、TXT。保存原始页面布局很重要:栏目、字体、颜色、图片、背景等。
所以我在第 6 部分中需要帮助。我已经完成了行检测部分(从包含 n 行的段落中获取 n 个图像),但卡在下一部分中获取单词和字符识别。如果您知道与 OCR 和字符识别部分相关的良好链接,请发布这里。
对于字符识别,我正在考虑使用 asprise(Java 库)http://asprise.com/product/ocr/index.php?lang=java http://asprise.com/product/ocr/index.php?lang=java
检测旋转角度, 使用霍夫变换 http://en.wikipedia.org/wiki/Hough_transform.
For 降噪,将任何没有邻居(北、东、南或西)的像素替换为相同颜色(相似的颜色,使用容差阈值),以及邻居的平均值。
搜索垂直白色间隙布局检测。沿着垂直间隙切片。对于每个切片,现在搜索水平间隙并切片。如果切片具有相同(相似)的高度,则处于线水平。否则重复垂直/水平切片,直到只剩下线条。最后一步再次是垂直切片,为您提供单个字符(或在某些情况下为连字)。长而窄或短而宽的切片都是线。
将字符切片与字符库进行比较。如果性能不是主要考虑的问题,请尝试在不同的字体库中查找字符,直到可以识别所使用的字体。然后坚持使用该字体字符识别.
在原始图像中,将每个字符替换为背景颜色,背景颜色是通过为字符的每个像素插入不属于字符的像素来确定的。这给你背景图,如果有的话。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)