python - 破解一个闭源程序来帮助我使用 python/screenshot/OCR 对现实生活中的对象进行排序

标签 python image opencv python-imaging-library ocr

在我的工作中,我们使用专用的 MS ACCESS 程序(我们称之为 XYZ)来帮助我们的工作。

我无法访问该程序的源代码/API,但我想编写一个 python 脚本来帮助我自动化排序任务(未实现),我告诉你。

我们取 12 个随机对象/工具/零件,它们由具有唯一 ID 的条形码标识(例如 50286,50285,50277,50280 ....),我们用条形码枪扫描仪拍摄它们并在程序中XYZ 我们得到了这个结果。

before sorting

这是工作电脑的屏幕截图,为了清楚起见,我在右侧手动添加了蓝色数字,以向您解释我要完成的任务。 记住我们随机拿了这些对象,现在我们必须对它们进行排序。 它们按程序 XYZ 排序,同时牢记一些并不重要的重要排序内容。

这个脚本制作了两个截图,第一个是在列表排序之前,第二个是在列表排序之后。

排序后,我的列表如下所示。

after sorting

我希望我的脚本输出数字 3,12,11,9,8,7,10,6,4,5,1,2。

我认为这是一项简单的任务,因为我已经设法获得了例如 Element_#1_in_before_list

50826 before

和 Element_#11_in_after_list,

50286 after

但是我不能告诉第一个项目现在是第十一个元素,因为两张图片由于随机烦人的蓝色/青色像素(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/

关于python - 破解一个闭源程序来帮助我使用 python/screenshot/OCR 对现实生活中的对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34473483/

相关文章:

javascript - 图像 Base64 字符串到 Uint8ClampedArray

Python 程序意外终止

python - 如何在Python中将字符串转换为儒略日期

python - 通过python查询mysql数据库上个月、上周、特定日期等的总数

javascript - JQuery:如何在源更改之前隐藏图像

c++ - 在 OpenCV 中从 Mat 对象构建图像

python - 在 (X,Y,Z) 坐标图上包括时间标签

html - 页脚图像上的文字

opencv - 使用 emgu 进行姿势估计

python - 为什么我的 Opencv 没有响应或没有执行任何操作?