检测表格中相关字段的学习方法(图像格式)

我一直在开发一款应用程序,用户可以上传代表某个表格的(扫描)PDF文件,在他们感兴趣的字段周围画出边界框,并将这些内容通过OCR转换为结构化文本格式。由于画边界框是一项繁琐的工作,我在考虑如何减少用户的工作量;也就是说,提前为用户提供自动检测的字段划分。我开始研究这个问题,并发现了一些有趣的方法,大多基于计算机视觉算法。然而,由于这款应用程序将来可能会被频繁使用,因此用户会画出大量的边界框,如果不尝试利用这个数据集来应用学习方法,似乎是一种浪费。所以我开始查看许多不同的表格,并注意到它们大多通过边框进行结构化,方式如下:

enter image description here

这里有几点观察:完全填满文本的框通常不会被要求提取,因为它们代表条款/条件/免责声明等。几乎空白的框也不会被要求,因为它们大多表示不相关的字段。唯一有趣的框似乎是那些在顶部/左侧有标签,并且在框的正文中有一些内容的框。

当然,也应该指出,并非每个表格都像上面的例子那样有边框结构良好。有些表格只在字段之间使用单一的分隔边框(即水平或垂直),有时甚至完全没有边框。

由于我们处理的是图像,我开始研究对象识别,并尝试了YOLOv2(卷积神经网络),我让它在一夜之间在一个包含100个表格的数据集上进行训练(我意识到这个数据集仍然太小,而且由于我在CPU上训练,所以训练时间也不够长)。无论如何,我希望所有训练字段都有边框和一些内容这一事实能帮助系统快速找到带边框的框。然而,到目前为止,结果却相当令人失望(平均损失/错误 = 9.6)。我开始思考这个问题,然后意识到,如果用户跳过绘制某些完全合格的带边框的字段,这会使神经网络在学习过程中感到困惑,我对这一点的理解正确吗?

至于我的问题的其余部分:你们认为对象识别是这里的正确方法,还是考虑到这种表格的性质,这对系统来说太 confusing 了?如果是这样,如果我应用一些过滤器来尝试“模糊”文本,使框看起来更加相似,情况是否仍然如此?或者,鉴于这个数据集包含每个文档中(大多数)相关框的坐标,还有什么更好的学习方法可以应用?也许甚至是一种不那么依赖边框存在的方法?

请记住,我唯一的要求是能够使用用户绘制的边界框作为数据集来持续改进系统。

感谢大家的时间!


回答:

关于神经网络策略,可能首先识别一段文本会更有趣。这样,你将从你的100份文件中获得更多学习数据。之后,你可以学习识别特定的标题。如果你然后有了文本的边界框,就很容易确定哪些文本靠近所说的标题。如果你的期望输出是像你图片中显示的那样大的边界框,网络将更难找到有用的信息,而不是直接包含文本的限制性小框。当然,因为你的框是手动输入的,其模糊性将是预测它们时准确性损失的主要来源。因此,具有像素级精确的输入也将有助于解决这个问题。

还可以考虑使用版本空间作为另一种学习方法。学习包含特征的框是其标志性用例之一。

另一种策略是完全不使用机器学习。像Matlab和Octave这样的数学框架具有强大的算法,可以将图像简化为检测到的线条的单像素宽的二进制网格(示例)。当然,这在处理没有线条的情况(寻找具有最少黑色像素的垂直/水平“切割”)或部分线条时需要一些额外的算法工作。尽管如此,结果可能比学习器更准确。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注