破解一个闭源程序来帮助我用 python/screenshot/OCR 对现实生活中的对象进行排序
Hacking a closed source program to help me sort real life objects with python/screenshot/OCR
在我的工作中,我们使用专用的 MS ACCESS 程序(我们称之为 XYZ)来帮助我们的工作。
我无法访问此程序的源代码 code/API,但我想编写一个 python 脚本来帮助我自动化排序任务(未实现),我告诉你.
我们随机抽取 12 个 objects/tools/pieces,它们由具有唯一 ID 的条形码标识(例如 50286,50285,50277,50280 ....),我们用条形码枪扫描器拍摄它们,然后在程序 XYZ 我们得到这个结果。
这是工作电脑的屏幕截图,为了清楚起见,我在右侧手动添加了蓝色数字,以向您解释我要完成的任务。
记住我们随机拿了这些对象,现在我们必须对它们进行排序。
它们按程序 XYZ 排序,请记住一些重要的排序内容,这些内容并不重要。
这个脚本制作了两个截图,第一个在列表排序之前,第二个在列表排序之后。
排序后,我的列表如下所示。
我希望我的脚本输出数字 3,12,11,9,8,7,10,6,4,5,1,2。
我认为这是一项简单的任务,因为我已经设法获得了例如 Element_#1_in_before_list
和 Element_#11_in_after_list,
但是我不能说第一个项目现在是第十一个元素,因为两张图片由于随机烦人的噪音而不相似 blue/cyan 像素(Truetype?)
我试过OCR识别字符,但有时会失败,而且太复杂了。
我尝试转换为黑白,但噪声像素有时会变成黑色或白色,并且两个图像不完全匹配(我想出了执行 md5sum 来判断它们是否相同的解决方案)
我该如何解决这个问题?
也许这很简单,但我是菜鸟。
帮我给 XYZ 开发者一个惊喜!!
您尝试过非精确匹配吗?您可以将列表 1 中的每个图像与列表 2 中 MSE 最低的图像匹配。
def mse(imageA, imageB):
# the 'Mean Squared Error' between the two images is the
# sum of the squared difference between the two images;
# NOTE: the two images must have the same dimension
err = np.sum((imageA.astype("float") - imageB.astype("float")) ** 2)
err /= float(imageA.shape[0] * imageA.shape[1])
# return the MSE, the lower the error, the more "similar"
# the two images are
return err
MSE 函数的来源:http://www.pyimagesearch.com/2014/09/15/python-compare-two-images/
在我的工作中,我们使用专用的 MS ACCESS 程序(我们称之为 XYZ)来帮助我们的工作。
我无法访问此程序的源代码 code/API,但我想编写一个 python 脚本来帮助我自动化排序任务(未实现),我告诉你.
我们随机抽取 12 个 objects/tools/pieces,它们由具有唯一 ID 的条形码标识(例如 50286,50285,50277,50280 ....),我们用条形码枪扫描器拍摄它们,然后在程序 XYZ 我们得到这个结果。
这是工作电脑的屏幕截图,为了清楚起见,我在右侧手动添加了蓝色数字,以向您解释我要完成的任务。 记住我们随机拿了这些对象,现在我们必须对它们进行排序。 它们按程序 XYZ 排序,请记住一些重要的排序内容,这些内容并不重要。
这个脚本制作了两个截图,第一个在列表排序之前,第二个在列表排序之后。
排序后,我的列表如下所示。
我希望我的脚本输出数字 3,12,11,9,8,7,10,6,4,5,1,2。
我认为这是一项简单的任务,因为我已经设法获得了例如 Element_#1_in_before_list
和 Element_#11_in_after_list,
但是我不能说第一个项目现在是第十一个元素,因为两张图片由于随机烦人的噪音而不相似 blue/cyan 像素(Truetype?)
我试过OCR识别字符,但有时会失败,而且太复杂了。
我尝试转换为黑白,但噪声像素有时会变成黑色或白色,并且两个图像不完全匹配(我想出了执行 md5sum 来判断它们是否相同的解决方案)
我该如何解决这个问题?
也许这很简单,但我是菜鸟。
帮我给 XYZ 开发者一个惊喜!!
您尝试过非精确匹配吗?您可以将列表 1 中的每个图像与列表 2 中 MSE 最低的图像匹配。
def mse(imageA, imageB):
# the 'Mean Squared Error' between the two images is the
# sum of the squared difference between the two images;
# NOTE: the two images must have the same dimension
err = np.sum((imageA.astype("float") - imageB.astype("float")) ** 2)
err /= float(imageA.shape[0] * imageA.shape[1])
# return the MSE, the lower the error, the more "similar"
# the two images are
return err
MSE 函数的来源:http://www.pyimagesearch.com/2014/09/15/python-compare-two-images/