java - 如何使用光学字符识别确定图像中的数字是否相同或不同?

标签 java machine-learning ocr image-manipulation bufferedimage

如果我有以下 4 张图像:

6

5

9

6

如何确定两个“6”相同,但 5 和 6、6 和 9、9 和 5 等不同?

图像始终是单色的(即只有黑白,没有其他颜色)

目前,我只是计算图像中黑色像素的数量,这似乎工作正常,但我不确定它是否可靠或是否有更好的方法。在上面的示例中,“6”都有 29 个黑色像素,而“5”有 26 个黑色像素,“9”有 28 个黑色像素。因此 6 和 9 之间的差异只有 1 个像素。但是在其他字体中,9 和 6 具有相同数量的像素。例如:

6

6

两者都有相同数量的前景像素。

最佳答案

您是否正在尝试检测完全相同的内容,或检测近似相同/近似的匹配(这就是真正的 OCR 的含义)?

您也可以首先找到图像/字形的加权中心,也许缩放尺寸以实现可比性(如果必须以不同的尺寸进行匹配),然后比较像素与像素之间的相似性(作为相似性百分比)两个图像。

当然,如果图像都已为您裁剪和调整大小,那么您只需扫描比较所有像素的图像,即可实现强力的“相似性”测量。

参见 BufferedImage.getRGB(): http://docs.oracle.com/javase/1.5.0/docs/api/java/awt/image/BufferedImage.html#getRGB(int,%20int)

您可以编写一个函数来获取两个 RGB 像素值(作为最大 0xffffff 的整数),分离组件,并对组件差异求和。

关于java - 如何使用光学字符识别确定图像中的数字是否相同或不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18943380/

相关文章:

java - 有没有办法在 BorderLayout 中移动 JPanel?

Java登录系统不起作用;读取第一个用户但无法解析第二个或下一个用户

machine-learning - 安德鲁练习的机器学习类(class)可以在本地运行但无法提交?

matlab - matlab中的主成分分析?

java - 对数组或集合中的元素进行高效的 Drools 评估

java - 深度优先搜索列表路径到所有端节点

python - 使用 keras 模型中的 tensorflow 图进行预测

xamarin - 相机预览和 OCR

c++ - 使用 Tesseract 进行页面布局分析?

ios - Tesseract ios SDK 错误打开数据文件/tessdata/eng.traineddata