【发布时间】:2013-02-17 17:55:38
【问题描述】:
我正在开发一个项目,我必须开发 OCR 算法(我必须从图像中读取文本,然后将其转换为不同的语言)。所以我的第一个任务是从图像中获取文本。
完成第一项任务的步骤。
- 从给定源加载任何图像格式(bmp、jpg、png)。然后将图像转换为灰度并使用阈值进行二值化(Otsu 算法)。 //完成(如何去除输出图像中的噪点???)
结果
检测分辨率和反转等图像特征。这样我们就可以最终将其转换为拉直的图像以进行进一步处理。 (完成了图像旋转的代码,但无法检测到我们必须旋转图像的图像角度,所以还在做角度检测部分)
行检测和删除。这一步是为了改进页面布局分析,获得更好的下划线文本识别质量,检测表格等(决定完成该部分在最后)
页面布局分析。在这一步中,我试图识别图像中存在的文本区域。这样只有该部分用于识别,其余区域被排除在外。
检测文本行和单词。这里我们还需要注意不同的字体大小和单词之间的小间距。
字符识别。这是OCR的主要算法;每个字符的图像都必须转换为适当的字符代码。有时该算法会为不确定的图像生成几个字符代码。例如,识别“I”字符的图像可以产生“I”、“|” “1”、“l”代码和最终字符代码将在稍后选择。
将结果保存为选定的输出格式,例如可搜索的 PDF、DOC、RTF、TXT。保存原始页面布局很重要:列、字体、颜色、图片、背景等。
所以我在第 6 部分需要帮助。我已经完成了行检测部分(从包含 n 行的段落中获取 n 个图像)但在下一部分获取单词和字符识别时卡住了。如果您知道与 OCR 和字符识别部分相关的良好链接那么请在这里发帖。
对于字符识别,我正在考虑使用 asprise(Java 库)http://asprise.com/product/ocr/index.php?lang=java
【问题讨论】:
-
对于文档部分,您可以使用 Apache POI lib poi.apache.org,对于 txt,您可以编写自己的 streamwriter,这应该不会那么难,对于 PDF,您可以使用 stefanochizzolini.it/en/projects/clown PDfClown跨度>
-
您能否提供更多参考资料以了解有关 ocr 的更多信息。
-
OCR 是一个成熟的研究课题。我一直觉得这是一个很好的主题读物。 handwritten.net/mv/papers/… 对于 OCR 分区问题,尤其是这个问题很有趣 music.mcgill.ca/~ich/classes/mumt611_08/Evaluation/…。
-
用于拉直图像,这是我开始为 OCR 写乐谱时使用的技巧:verens.com/2012/07/26/…
标签: ocr