用PHP OCR对非常相似的图像进行排序
谢谢你看我的问题 基本上,我要做的是在这里找到所有看起来像第一个和第三个图像的图像: 并移除所有看起来不像(2,4)的 我试过几个图书馆,但都没用 另一个可以接受的方法是检查图像是否包含“Code:”,因为我要整理的每个图像中都有这个字符串 谢谢,, 史蒂夫用PHP OCR对非常相似的图像进行排序,php,linux,api,ocr,Php,Linux,Api,Ocr,谢谢你看我的问题 基本上,我要做的是在这里找到所有看起来像第一个和第三个图像的图像: 并移除所有看起来不像(2,4)的 我试过几个图书馆,但都没用 另一个可以接受的方法是检查图像是否包含“Code:”,因为我要整理的每个图像中都有这个字符串 谢谢,, 史蒂夫 编辑:虽然第1张和第3张图像看起来大小相同,但实际大小不同。如果这些图像是您要使用的实际图像,则直方图相似性似乎可以完成这项工作。第一个和第三个对比度非常大,第二个和第四个,尤其是第四个,有着广泛的不同强度 您可以很容易地为图像中的灰色阴影
编辑:虽然第1张和第3张图像看起来大小相同,但实际大小不同。如果这些图像是您要使用的实际图像,则直方图相似性似乎可以完成这项工作。第一个和第三个对比度非常大,第二个和第四个,尤其是第四个,有着广泛的不同强度 您可以很容易地为图像中的灰色阴影绘制直方图,然后将阈值应用于直方图的形状以对其进行分类
编辑:要真正做到这一点:您可以遍历每个像素并创建一个像素值=>找到次数的数组。因为它是灰度的,你可以选择R、G或B频道。然后将每个数字除以图像中要归一化的像素数,这样它就可以适用于任何大小。直方图中的每个条目将是所用像素数的一小部分。然后可以测量高于某个阈值的值的数量。如果有很多灰色,您将得到大量的小值。如果没有,您将得到少量的大值。如果这些是您将要使用的实际图像,那么直方图相似性似乎可以完成这项工作。第一个和第三个对比度非常大,第二个和第四个,尤其是第四个,有着广泛的不同强度 您可以很容易地为图像中的灰色阴影绘制直方图,然后将阈值应用于直方图的形状以对其进行分类
编辑:要真正做到这一点:您可以遍历每个像素并创建一个像素值=>找到次数的数组。因为它是灰度的,你可以选择R、G或B频道。然后将每个数字除以图像中要归一化的像素数,这样它就可以适用于任何大小。直方图中的每个条目将是所用像素数的一小部分。然后可以测量高于某个阈值的值的数量。如果有很多灰色,您将得到大量的小值。如果没有,您将得到一小部分大值。由于我的背景是更多地处理图像中的文本而不是图像对象,我会在OCR后处理过程中这样做,搜索文本内容中的“关键字”或检查表示所需数据的“正则表达式”。这意味着整个工作需要分为两个阶段:图像到文本OCR(免费或廉价,软件或云),以及实际的分离过程(简单编程) 由于我的背景是更多地处理来自图像的文本,而不是图像对象,我会在OCR后处理过程中这样做,通过搜索文本内容中的“关键字”或检查表示所需数据的“正则表达式”。这意味着整个工作需要分为两个阶段:图像到文本OCR(免费或廉价,软件或云),以及实际的分离过程(简单编程) 您尝试过哪些库?失败的原因到底是什么?否则,人们可能会再次推荐相同的解决方案。我已经尝试过了,但都没有成功,因为第二个一次只能识别图像中的一个字母,而第一个根本无法识别任何字母(对于输出“8”的“Code:XXXX-XXXX-XXXX-XXXX”)。您尝试过哪些库,以及失败的原因是什么?否则,人们可能会再次推荐相同的解决方案。我已经尝试过了,但都没有成功,因为第二个一次只能识别图像中的一个字母,而第一个根本无法识别任何字母(输出“8”的“代码:XXXX-XXXX-XXXX-XXXX”)。阅读你的答案,想想50种灰色的阴影哈哈。但是我该怎么做呢?我所有的图片都是白色背景上的黑色文本,但也有其他类似的图片,比如白色背景上的黑色文本。我已经编辑了我的答案,并介绍了如何实际操作。这是一个简单的算法来实现,所以你可以尝试一下,花一些时间调整一系列输入的值,看看它是否有效。但是我该怎么做呢?我所有的图片都是白色背景上的黑色文本,但也有其他类似的图片,比如白色背景上的黑色文本。我已经编辑了我的答案,并介绍了如何实际操作。这是一个易于实现的简单算法,因此您可以尝试它,花一些时间调整一系列输入的值,看看它是否有效。