我公司有一个产品,涉及从法律合同 PDF 中提取各种字段。目前的方法非常耗时且混乱,我正在探索 NLP 是否是一个合适的替代方案。
需要解析的 PDF 通常遵循多个“模板”之一。在一个模板中,几乎所有文档都是相同的,除了我们试图提取的 20 个左右的特定字段。话虽如此,有时会出现轻微的不一致,例如缺少/添加空格、标点符号等。目前大约有 15 个模板,但有时会添加另一个模板。需要提取的大部分数据都是表格形式,但段落文本中散布着一些值。
对于当前的非 ML 方法,我们使用专有的 PDF 解析器,将所有表格提取为 json 格式。必须为出现的每个新 PDF 模板自定义配置此解析器,这很耗时。转换为 json 后,必须为每个模板中的每个值制作自定义的正则表达式,导致总共数百个正则表达式。通常这种方法非常准确,但有时轻微的不一致会破坏它,这意味着需要修改正则表达式。
我想知道 NLP 命名实体识别是否会成为解决此问题的更清洁的方法。我的想法是在几百个示例文档中标记所有值,然后在 Spacy 或 Flair 等库中训练自定义 NER 模型。理想情况下,我们可以输入从 PDF 中提取的原始文本,而不必配置自定义解析器来提取 json。
我看到使用 NLP 方法的优势是,我们不必在每次出现新模板时都配置自定义解析器并编写一堆正则表达式。在最坏的情况下,每次添加模板时我们都必须标记一些新文档,这可能比当前方法更快、更容易。我认为我们还可以通过在不同文档之间交换标记值来轻松生成大量合成训练数据。
我担心,使用 ML 方法,我们将无法达到近乎完美的准确度,这是一个要求。我也不确定 NLP 对表格中的原始文本而不是段落的执行效果如何。好消息是模板中的文档往往非常相似。
我以前从未做过 NLP,所以我想知道这里是否有人认为这种方法值得探索。如果这是可行的,是否有人对如何获得最佳结果有建议?