光学字符识别

问题描述 投票:0回答:3

大家好, 我正在尝试用 Java 创建一个程序,它可以读取屏幕上的数字,并且还可以识别屏幕上的图像。我想知道我怎样才能实现这一目标? 数字的字体将始终相同。我以前从未编写过类似的程序,但我对其工作原理的想法是让程序进行屏幕截图,然后将数字图像与屏幕截图图像的部分重叠并检查它们是否匹配,对每个数字重复此操作。如果这是执行此操作的正确方法,我将如何将其放入代码中。

预先感谢您的帮助。

computer-vision ocr
3个回答
0
投票

你总是可以训练一个神经网络来为你做这件事。有时他们会变得相当准确。如果你使用像 Matlab 这样的东西,它实际上已经具备了这样的功能。显然有一个用于 java 的神经网络库(http://neuroph.sourceforge.net/),尽管我个人从未使用过它。

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


0
投票

您可以为此使用神经网络、支持向量机或其他机器学习结构。但它并不能完成全部工作。如果您进行屏幕截图,您将留下一张非常大的图像,您需要在其中找到各个字符。您还需要处理这样一个事实:相机可能不会直接指向您想要阅读的文本。您可能需要使用一系列算法来锁定图像的正确部分,然后以大小变得中性的方式对其进行下采样。

这是我编写的一个简单的 Java 小程序,它可以完成其中的一些工作。

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

它可以让你在相对较大的区域上绘制并锁定你的角色。然后它就认出来了。我正在使用字母表,但数字应该更容易。包含完整的 Java 源代码。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.