【问题标题】:Learning method for detecting relevant fields in forms (image format)检测表单相关字段的学习方法(图片格式)
【发布时间】:2018-03-18 23:18:01
【问题描述】:

所以我一直在开发一个应用程序,用户可以在其中上传(扫描的)代表某种形式的 PDF 文件,在他们感兴趣的字段周围绘制边界框,并将这些内容 OCR 并以结构化文本格式返回。因为绘制边界框有点拖累,所以我在想一种方法来减少用户所需的工作;即已经为他/她提供了一个自动检测到的字段划分形式。我开始研究这个问题,发现了一些有趣的方法,主要是基于计算机视觉算法。但是,由于此应用程序将来可能会频繁使用,因此用户将绘制大量边界框,因此不尝试使用此数据集来应用学习方法对我来说几乎是一种浪费。所以我开始查看很多不同的表格,并注意到它们中的大多数都是以这样的方式由边框构成的:

这里有一些观察:通常不要求提取 100% 用文本填充的框,因为它们代表条款/条件/免责声明/等。 (大部分)为空的框也不会被请求,因为它们大多表示不相关的字段。唯一有趣的盒子似乎是那些在顶部/左侧带有标签并且在盒子主体中有一些内容的盒子。

当然也应该说,并不是每个表格都像上面的表格那样具有良好的边框结构。有些只在字段之间使用单个分隔边界(即水平或垂直),有时根本没有边界。

由于我们正在处理图像,我开始研究对象识别并尝试了 YOLOv2(卷积神经网络),我让它在一个包含 100 个表格的数据集上训练了一晚(我意识到这个数据集仍然太小,因为我在我的 CPU 上训练,我也没有训练足够长的时间)。无论如何,我希望所有训练字段都有边框和一些内容这一事实能够快速帮助系统自己找到有边框的框。然而,到目前为止,结果非常令人失望(平均损失/错误 = 9.6)。我开始思考这个问题,然后意识到如果用户跳过绘制某些带有完美边界框的字段,它会在学习过程中混淆神经网络,我说的对吗?

至于我的问题的其余部分:你们认为对象识别是解决问题的方法,还是考虑到这种形式的性质,它对系统来说太混乱了?如果是这样,如果我应用了一些过滤器来尝试将文本“模糊”在一起,使这些框看起来更像彼此,情况是否仍然如此?或者,给定每个文档(大多数)相关框的坐标数据集,什么是更好的学习方法?甚至是一种不太基于边界存在的方法?

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

感谢大家的宝贵时间!

【问题讨论】:

    标签: machine-learning computer-vision artificial-intelligence conv-neural-network object-recognition


    【解决方案1】:

    至于神经网络策略,先识别一段文字可能会更有趣。这样,在给定 100 个文档的情况下,您将有更多数据可供学习。稍后,您可以学习它来识别特定的标题。如果您有文本的边界框,则很容易确定哪个文本靠近所述标题。如果您想要的输出是与您在图像中显示的一样大的边界框,那么与直接包含文本的受限小框相比,网络将很难找到有用的信息。当然,由于您的框是手动输入的,因此其模糊性将是预测它们准确性损失的主要来源。因此,拥有像素准确的输入也会对此有所帮助。

    还可以考虑使用version spaces 作为替代学习方法。包含功能的学习框是其旗舰用例之一。

    另一种策略是根本不使用机器学习。 Matlab 和 Octave 等数学框架具有 powerful algorithms,可以将图像缩减为检测到的线的二进制单像素宽网格 (example)。在没有线条(找到黑色像素最少的垂直/水平“剪切”)或部分线条时,这当然需要一些额外的算法工作。尽管如此,结果可能比学习者更准确。

    【讨论】:

    • 对学习特定标题并将它们与文本相关联的深刻见解!这样,我不仅会得到自动检测到的框,而且还能预测它所属的标签/标题。我将专注于这些单独的问题并保持这篇文章的更新。谢谢!
    • @SeekAndDestroy 标记为答案 pl0x ^^
    • 在研究了多种方法之后,我可以肯定地说,对象识别不是可行的方法。相反,我的方法部分基于你上次提到的策略,我尝试使用计算机视觉算法预先检测线条,并类似地检测文本块。将两者链接在一起给了我一组很好的“标签”-“文本块”对及其边界框。我仍在研究将用户绘制的框合并为训练数据的不同方法,因此问题尚未完全解决,但由于您的帖子向我发送了正确的方向,我将其标记为答案。
    • 您是否找到了一种有效的方法来处理这种情况,在文本周围定位边界框?我已成功识别文本边界框并使用 OpenCV 和 Pytesseract 转换文本,但是,我仍在努力找到可以为表单字段填充任何值的边界框。
    • 我不会说这是最有效或最好的方法,但我最终得到了一组基于 CV 的算法,它试图仅检测相关字段。正如您所提到的,您已经在使用 OpenCV 检测文本边界框,我建议您进一步尝试并考虑使用一些 CV 算法可以轻松检查的内容。例如,我正在做的一些事情:计算字段中的字体大小、检查字段中黑白像素的数量、检查文档上的字段位置、检测非常大/小/粗体的文本等。所有这些都是很好的指标'相关表单字段'。
    猜你喜欢
    • 2018-08-15
    • 2019-06-22
    • 1970-01-01
    • 2014-07-10
    • 2017-09-12
    • 2020-04-09
    • 2011-10-18
    • 1970-01-01
    • 2022-11-28
    相关资源
    最近更新 更多