我有一大堆1930-40年代的官方文件图像,这些图像有彩色也有黑白,质量普遍较低(通常< 250 kB)。这些是医院、市政机构等官方机构使用的标准表格的照片,这些表格是手写或打字填写的个人信息。我在这篇文章的末尾放置了两个典型的例子。(请注意,这些是空白表格 – 我宁愿不将含有个人信息的表格放在网上。)
我需要做的就是整理这些文件集合,使相同类型的文件都归为一组。我不知道有多少种不同的类型。或者,我可以首先尝试寻找某一种特定类型文件的所有实例。我想象前一种方法是聚类方法,而后一种是相似性方法。
关于聚类方法,我的想法是(1)预处理图像以增强有用信息,(2)从每个图像中提取特征向量,(3)将这些特征向量输入聚类算法。我想使用SciKit-Image和SciKit-Learn库来完成这三项任务。我已经做了一些研究和阅读以熟悉这个主题和可能性,但我不知道从哪里开始,并且有一些基本问题。
- 预处理。哪些方法被证明是有用的?有太多选项:二值化、灰度化、去倾斜、去噪、模糊、裁剪、缩放…
- 特征提取。我认为,如果图像中最有趣的特征(角点、线条、网格、图片、标志)能够被捕捉到特征向量中是有帮助的 – 换句话说,如果特征基于所谓的兴趣点。同样,是否有特定的方法在这方面被证明是有帮助的?表示图像为特征向量的最佳方式是什么,我如何提取有趣的特征?
- 聚类。我看到SciKit-Learn提供了多种聚类算法。哪些最适合我的任务?哪些是最适合开始的 – 比如k-means?
关于相似性任务,我没有明确的想法如何接近,或者这是否可能。任何帮助都欢迎…
我意识到这是一个相当广泛的问题。总的来说,我想得到一些反馈,看我的方法是否有意义,是否可能产生有用的结果。此外,我非常感谢任何指向示例、现有流程或一般好的建议的指导!
示例:
回答:
我认为如果你手动确定文件类型的数量,然后通过确定与你识别的类别的相似性来寻找匹配,你的任务会容易得多。
作为相似性指数,我会追求以下两种策略之一:
1)基于表格的常量部分进行图像注册。
2)基于短语/关键词的匹配。从你的例子中,“Antrag auf Krankenhausaufname”可以通过pytesseract从图像中轻松提取,即使没有对图像进行任何预处理:
from PIL import Imageimport pytesseractimg = Image.open("test.jpg")text = pytesseract.image_to_string(img, lang="deu")print text
这会产生:
Zur Bendmmg für den Veru'dxerlenl ’Die." Antragudm’n in! der Krln Iren In n: vorAu/wdum du Krankenhnu an zlnzuru'dlemAntrag auf Krankenhausaufnahme._ ‚x, - >A Namp des Mitgligds:V'orname: - 'Ehefrau: „_Kind :Arbeitgeber :Behandelt seit arbeitsgnfähig seitGehikhlq? ja _ nein i sBelördemnq durch Kunkenkranwagen — Mxelklahwagen — Ist‘ -- nichl — eflordarllch. r- „ -Arbeilsunh‘” Folge eine: Irüheren Arbgttsunlalls’l Un‘allvemlchefleBerulxkvankheifl Verkghßq Spodunlall. Schlägerei. TrunksuchflVevsorgungslaideI-J Fundemwirkung? Folge emer Irühercn. nichlbehobene" Krankhen7.AZuInfimJn Inlmmidnn gKrankheitsbezeichnung ')x WM.-."/Begründung: __.___.
显然,你可以通过匹配你知道可靠地从文档中提取的短语来匹配文档。