我将介绍项目环境,以便您了解一些帮助我的背景信息。
我正在尝试解析 pdf 格式的德国组织结构图信息。现在,我可以可靠地从 PDF 中读出矩形的内容,并获取该矩形中包含的所有文本块。对于每个矩形,我想将其中的信息分为几个类别。这些是:
类型(子组织的类型。例如 Referat)
标题(下属组织的具体名称。例如,Referat XI A 9)
描述(职责。例如 Personalien der Zollverwaltung und der Bundesmonopolverwaltung für Branntwein)
负责人(例如MR Hoffmann)
我使用 python 研究了几种不同的方法,但找不到合适的解决方案。使用 spacy,我发现很难获得任何有意义的结果,因为矩形内的文本不是真正的句子,而且据我了解,spacy 依赖于识别标记在句子中具有的词性。
例如,我使用词袋阅读了其他一些方法,但这似乎也没有意义,因为我再次没有完整的句子。我目前正在实现一个非常大但简单的模式匹配解决方案,我在其中检查“Referat”等关键字或人的前缀“MR”并据此进行分类。一旦我没有在给定文本中搜索指定的前缀或关键字,这种正则表达式方法显然很快就会失败。
我还尝试考虑文本块放置在内容节点内的位置,并据此解析信息。但一旦 pdf 之间的顺序不同,这种方法就会失败。
我正在寻找一般建议,指出使用 python 解决此问题的方法。关于这个主题的问题似乎非常古老,或者只关注我遇到的问题的一个子集,所以我认为进行另一次讨论会很有帮助。
Python中的yield关键字用于定义生成器,它是一种特殊类型的迭代器。当函数包含yield关键字时,它就成为生成器函数。与返回单个值并终止的常规函数不同,生成器函数可以生成多个值,一次一个,并在每次生成之间保持其状态。这允许您以节省内存的方式迭代一系列值。