光学字符识别

时间:2011-03-16 03:33:57

标签: ocr vision

嘿大家, 我正在尝试用Java创建一个可以读取屏幕数量的程序,并且还能识别屏幕上的图像。我想知道我怎么能做到这一点? 数字的字体将始终相同。我之前从未编写过类似的东西,但我对其工作原理的想法是让程序截取屏幕截图,然后用截图图像的部分覆盖数字图像并检查它们是否匹配,对每个数字重复此操作。如果这是正确的方法,我将如何将其放在代码中。

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

你总能训练一个神经网络为你做这件事。它们有时可以非常准确。如果你使用像Matlab这样的东西,它实际上已经具备了这方面的能力。显然有一个java的神经网络库(http://neuroph.sourceforge.net/),虽然我从来没有亲自使用它。

这是关于使用neuroph的教程:http://www.certpal.com/blogs/2010/04/java-neural-networks-and-neuroph-a-tutorial/

答案 1 :(得分:0)

您可以使用神经网络,支持向量机或其他机器学习构造。但它不会完成整个工作。如果你进行了一次屏幕截图,你将会看到一个非常大的图像,你需要找到它上面的单个字符。您还需要处理相机可能无法直接指向您要阅读的文本这一事实。您可能需要使用一系列算法来锁定图像的正确部分,然后以大小变为中性的方式对其进行下采样。<​​/ p>

这是我编写的一个简单的Java小程序,其中包含了一些内容。

http://www.heatonresearch.com/articles/42/page1.html

它可以让你在一个相对较大的区域上绘制并锁定你的char。然后它识别它。我正在使用字母表,但数字应该更容易。包含完整的Java源代码。

答案 2 :(得分:0)

一种更简单的方法可能是使用模板匹配。如果字体相同,和/或大小(以像素为单位)是已知的,那么简单的模板匹配可以为您完成工作。如果输入的ifsize未知,则可能必须创建不同比例的图像副本,并在每个比例下进行匹配。 一个具有极值(最高或最低,取决于您遵循的模板匹配方法)是您的结果。 Follow this link for details