Gau*_*dhi 5 python opencv document numpy
我正在从事一个项目,在该项目中,我处理并存储了带有标签类别的单页医疗报告的文档。用户将输入一个文档,我必须对其所属的类别进行分类。
我已将所有文档转换为灰度图像格式并存储以进行比较。
我有一个包含以下数据的图像数据集,
image_path: 此列有图像的路径histogram_value: 此列有图像的直方图,使用cv2.calcHist函数计算np_avg:该列具有图像所有像素的平均值。计算使用np.average
category:此栏是图片的一个类别。我打算用这两种方法,
histogram_value输入图像,找到最近的 10 个匹配图像
np_avg输入图像,找到最近的 10 个匹配图像我对图像处理领域知之甚少。上述机制对我的目的是否可靠?
我检查了SO,发现相同的问题很少,但他们有一个非常不同的问题和期望的结果。这个问题看起来与我的情况相似,但它非常通用,我不确定它是否适用于我的场景。
我会推荐一些东西:
基于文本的比较:
使用 Google 的 Tesseract 对文档进行 OCR 并提取文本特征,Tesseract 是最好的开源 OCR 软件包之一。还有一个名为PyTesseract的 Python 包装器。您可能需要调整图像的分辨率,以便 OCR 能够达到您满意的效果 - 这将需要一些尝试和错误。
提取单词后,普遍接受的方法之一是计算 TF-IDF(词频 - 逆文档频率),然后使用任何基于距离的方法(余弦相似度是常见的方法之一)来比较哪些文档是“相似的” “(更接近)彼此。
基于图像的比较
如果您已经将图像作为矢量,则应用基于距离的度量来计算相似性。一般来说,L1 或 L2 范数就可以。本文表明曼哈顿( L1范数)可能更适合自然图像。您可以从此开始并尝试其他基于距离的措施
基于文本和图像的整体比较
运行这两种方法,然后对两种方法进行平均,以获得彼此相似的文档。
例如
基于文本的方法可能将 DocB 和 DocC 分别按距离 10 和 20 个单位排列为与 DocA 最接近的 2 个文档。
基于图像的方法可能将 DocC 和 DocB 分别按距离 5 和距离 20 列为最接近的两个。
然后你可以平均这两个距离。与 DocA 相距,DocB 为 (10+20)/2 = 15,DocC 为 (20+5)/2 = 12.5 个单位。因此,在集成方法中,您将认为 DocC 更接近 A,而不是 B。