SND*_*SND 5 artificial-intelligence machine-learning computer-vision object-recognition conv-neural-network
因此,我一直在开发一个应用程序,用户可以上传表示某种表单的(扫描的)PDF 文件,在他们感兴趣的字段周围绘制边界框,并对这些内容进行 OCR 识别并以结构化文本格式返回。因为绘制边界框有点麻烦,所以我正在考虑一种方法来减少用户所需的工作;即已经以形式向他/她提供自动检测的字段划分。我开始研究这个问题并发现了一些有趣的方法,主要基于计算机视觉算法。然而,由于这个应用程序将来可能会被频繁使用,因此用户会绘制很多边界框,所以对我来说,不尝试使用这个数据集来应用学习方法几乎是一种浪费。所以我开始研究很多不同的形式,并注意到它们中的大多数都是由边框以如下方式构成的:
这里有一些观察结果:100% 充满文本的框通常不需要提取,因为它们代表条款/条件/免责声明/等。也不需要(大部分)为空的框,因为它们大多表示不相关的字段。唯一有趣的盒子似乎是那些在顶部/左侧带有标签并且在盒子主体中带有一些内容的盒子。
当然还应该说,并不是每种形式的边框结构都像上面的形式那么好。有些在字段之间仅使用单个分隔边框(即水平或垂直),有时根本没有边框。
由于我们正在处理图像,所以我开始研究对象识别并尝试了 YOLOv2(卷积神经网络),我在 100 种形式的数据集上训练了一个晚上(我意识到这个数据集仍然太小,因为我在我的数据集上进行了训练) CPU,我也没有训练足够长的时间)。无论如何,我希望所有训练字段都有边界,并且某些内容能够快速帮助系统本身找到有边界的框。然而到目前为止,结果相当令人失望(平均损失/错误 = 9.6)。我开始思考这个问题,然后意识到,如果用户跳过绘制某些完美细边框框的字段,就会使神经网络在学习过程中感到困惑,我的说法正确吗?
至于我的问题的其余部分:你们认为对象识别是解决这个问题的方法吗?还是考虑到这种形式的性质,它对于系统来说太混乱了?如果是这样,如果我应用一些过滤器来尝试将文本“模糊”在一起,使框看起来彼此更加相似,情况还会如此吗?或者,给定每个文档(最)相关框的坐标数据集,什么是更好的学习方法?也许甚至是一种不太依赖边界存在的方法?
请记住,我要求的唯一要求是能够使用用户绘制的边界框作为数据集来不断改进系统。
感谢大家抽出宝贵的时间!
至于神经网络策略,首先识别一段文本可能更有趣。这样,您就可以从 100 个文档中获得更多数据来学习。稍后,您可以学习它来识别特定的标头。如果您有文本的边界框,则可以轻松确定哪个文本靠近所述标题。如果您所需的输出是与图像中显示的一样大的边界框,则与直接包含文本的受限小框相比,网络将更难找到有用的信息。当然,由于您的方框是手动输入的,因此其模糊性将是预测它们准确性损失的主要原因。因此,拥有像素精确的输入也将对此有所帮助。
还可以考虑使用版本空间作为替代学习方法。包含功能的学习盒是其旗舰用例之一。
另一种策略是根本不使用机器学习。Matlab 和 Octave 等数学框架具有强大的算法,可以将图像缩小为检测到的线的二进制单像素宽网格(示例)。当使用无线(寻找具有最少黑色像素的垂直/水平“切口”)或部分线时,这当然需要一些额外的算法工作。尽管如此,结果可能比学习者更准确。