如何在进行OCR之前验证图像是否包含背景噪声 [英] How to verify if the image contains noise in background before ‘OCR’ing
问题描述
我需要从几种类型的图像中提取文本。 我可以根据背景的噪声将图像手动分类为3类:
对于类别1的图像,我可以毫不费力地应用OCR。→基本大小写。
对于第二类图像和一些第三类图像,我可以通过应用以下方法来提取文本:
- 灰度、高斯模糊、大津阈值
- 变形打开以消除噪点并反转图像 →然后执行文本提取。
对于OCR任务,一种去噪方法显然不适用于所有图像。那么,有没有办法对图像的背景噪声水平进行分类呢?
欢迎所有建议。 提前谢谢。
推荐答案
根据您的评论other question以下是一些您可以尝试的方法。下面的一些想法组合应该会有所帮助。
图像嵌入和向量聚类
手册
使用预先训练好的网络,例如在ImageNet上的resnet
(可能工作不好)或在MNIST/EMNIST
上训练的简单预先训练好的网络。
Extract and concat
一些层将权重向量向网络末端展平。应用降维和应用最近邻/近似最近邻算法来查找最接近的匹配。设置簇数3
,因为您有3种类型的图像。
对于最近的邻居,从knn开始。GitHub中还有许多库可以提供帮助,例如faiss、annoy等。
有关详细信息,请访问
https://github.com/topics/nearest-neighbor-search
https://github.com/topics/approximate-nearest-neighbor-search
如果上面的结果不够好try finetuning
只有最后几层MNIST/EMNIST训练的网络。
使用现有库
有关分组/查找相似图像的信息,请查看
https://github.com/jina-ai/jina
您应该能够在GitHub上使用标签neural-search
、image-search
找到更多相似性群集。
https://github.com/topics/neural-search
https://github.com/topics/image-search
OCR
- 尝试easyocr,因为它比上次使用OCR时的tesserect更适合我。
- 首先对整个文档运行它,以查看是否满足要求。
- 如果可能,在附近没有其他文本的情况下,使用不那么紧密的裁剪,而在文本周围使用一些/大填充。另一种方法是在紧密裁剪的文本中尝试在所有方向上填充,以查看这是否会改善OCR结果。
- 有关tesserect,请参阅improving quality文档中提到的工具是否有帮助。
分类
如果您已经将数据分类到3个不同的目录中,并且只想对未来的图像进行分类,那么我建议使用神经网络。修改
pytorch
或tensorflow
的MNIST或CIFAR示例以训练和分类测试图像。根据样本图像,它看起来像计算机字体,而不是手写文本。如果是这样的话,Template matchingatmultiple scales可能会有所帮助。你必须看看噪声是否会影响匹配结果。图片来源,https://www.pyimagesearch.com/2021/03/22/opencv-template-matching-cv2-matchtemplate/
噪声消除
这里也可以使用神经网络。用1类图像训练denoising autoencoder,通过添加模拟2类和3类图像的噪声来损坏1类图像。这样,神经网络将对3种图像类别进行分类,而不需要手动创建数据集,在后处理中,可以根据类别类型使用另一种神经网络或图像处理方法来去除噪声。图片来源,https://keras.io/examples/vision/autoencoder/
在GitHub上尝试现有的库或预先训练的网络,以消除整个文档/裁剪区域中的噪音。查看rembg它是否适用于文本文档。
这篇关于如何在进行OCR之前验证图像是否包含背景噪声的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!