我有一大堆来自1930年代至40年代的官方文件的图像,包括颜色和B&amp; W,它们的质量相当低(通常一般<250 kB)。这些是官方机构(例如医院和市政当局等)使用的标准表格的照片,这些照片是用手或打字机填写的,带有个人信息。我在这篇文章的最后给出了两个典型的例子。 (请注意,这些是空表格 - 我宁愿不在网上放置个人信息。)
我需要做的是订购集合,以便将所有相同类型的文档组合在一起。我不知道有多少种不同的类型。或者,我可以首先尝试尝试查找某个特定文档类型的所有实例。我认为前一种方法是一种聚类方法,而后者是一种相似性方法。
关于聚类方法,我的想法是(1)预处理图像以增强有用信息,(2)从每个图像中提取特征向量,以及(3)将这些特征向量提供给聚类算法。我想使用SciKit-Image和SciKit-Learn库来完成这三项任务。我做了一些研究和阅读以熟悉这个主题和可能性,但我不知道从哪里开始并提出一些基本问题。
关于相似性任务,我不清楚如何处理这个问题,或者如果可能的话。 欢迎任何帮助...
我意识到这是一个相当广泛的问题。总的来说,我希望得到一些关于我的方法是否有意义的反馈,以及它是否可能产生有用的结果。此外,我非常感谢您对示例,现有管道或一般好建议的任何指示!
示例:
答案 0 :(得分:1)
预处理: 你可以做,灰度,降噪,删除边框和偏移。应该足够我的计划。
调整图像大小以匹配A4等常见格式,但请注意保留图像的宽高比。
你会找到兴趣点并将其裁剪掉。这样你只考虑表单字段,而不是可以变化的条目。
您可以为文档的每个兴趣点制作指纹。
您可以从所有个人指纹构建一个完整的图像指纹。
只需对所有指纹进行排序,无需复杂的聚类。
在排序的指纹列表中,找出一组文档以某种方式结束而另一组文档开始并分开的位置。
你完成了!
如果你去聚类等,这个过程会慢得多,结果也会一样。很好地取决于聚类算法,以及你要向它提供什么样的特征向量。但这应该更快,也更适合程序。
答案 1 :(得分:1)
对这些数据进行聚类将非常困难。 k-means对不良数据点非常敏感,所以不要认为它会很好用。但它在很大程度上取决于您的功能质量。
我不认为像SIFT这样的标准功能会有很多用处。它们适用于具有渐变等的照片。
您需要仔细制作这些功能,例如水平线的数量与垂直线的数量,背景色调等。然后尝试使用鲁棒聚类算法,如DBSCAN和层次聚类。后者可能是一个更容易的起点,但难以扩展。
答案 2 :(得分:0)
我认为,如果您手动识别文档类型的数量,然后通过确定与已识别类别的相似性来查找匹配项,那么您的任务会更容易。
作为一个相似性指数,我会采用以下两种策略之一:
1)基于表格的常量部分进行图像配准。
2)匹配短语/关键词。从您的示例中,即使没有对图像进行任何预处理,也可以通过pytesseract从图像中轻松提取“Antrag auf Krankenhausaufname”:
td
这会产生:
from PIL import Image import pytesseract img = Image.open("test.jpg") text = pytesseract.image_to_string(img, lang="deu") print text
显然,您可以通过匹配您知道可以通过tesseract从文档中可靠提取的短语来匹配文档。