是否可以在 Java 中进行此类搜索

Is it possible to do this type of search in Java

我在工作中被困在一个我认为不可能的项目上,我想知道是否有人可以证实我认为这是不可能的,或者至少给我新的选择。

我们正在为客户做一个项目,涉及从服务器大量下载文件(使用 ftp4j 和文档名称列表很容易做到),但现在我们需要对来自服务器的数据进行分类。客户正在合同中工作,希望我们提取相关信息,例如:许可方、被许可方、产品、协议日期、终止日期、版税、限制。

既然文件完全不规范,那还能行吗?我可以想象加载文件并进行搜索,但我不知道如何从许可人和协议限制等段落中提取信息。这些不是哈希值,而只是长期合约。即使我要搜索 'Licensor',它也会多次出现在文档中。这些文档甚至没有采用一致的文件格式。有些是 PDF,有些是文本,有些是 html,我什至看到一些像 pdf 中的扫描图像一样糟糕。

我的老板一直催促我参与这个项目,但我觉得自己别无选择。我主要做网络和移动,所以大数据真的不是我的强项。这听起来有可能在合理的时间内完成吗? (我们谈论的是至少 1000 个文档)。我在 Java.

一直在研究这个

我会尽力为您提供一些信息,因为这不是我的专业领域。我会高度考虑编写一个脚本来识别您正在处理的文件类型,然后调用适当的解析方法来处理您正在寻找的内容。

由于您正在处理大数据,python 可能非常有用。 Javascript 将是我的下一个选择。

如果你的整体代码是用Java写的,无论你选择哪一种,它都应该是非常可移植和灵活的。使用正则表达式或特定的字符串搜索将是解决此问题的好方法;

如果您只关心 Licensor 后跟一个名称,您可以识别该特定实例的格式并使用您创建的正则表达式搜索类似的内容。这可以外推到其他搜索实例。


要从图像中获取文本,请尝试使用此页面上的 API:

  • How to read images using Java API?

  • Scanned Image to Readable Text


对于 PDF 中的文本:


来自 HTML 文档的文本:


如果您还需要什么,请告诉我。我会尽力找到它!

您可以使用 tika 进行文本提取。如果有固定模式,您可以使用正则表达式或 xpath 查询提取信息。其他解决方案是使用 Solr,如此 video 所示。您不需要 solr,但观看视频了解一下。

Apache tika 可以从几乎任何常用的文件格式中提取纯文本。

但根据您描述的情况,您仍然需要像 "natural language recognition" 中那样分析文本。那是一个领域;尽管 一些 取得了进展(通过专门研究 teams,花费很多人年!);计算机仍然会失败(有时甚至人类也会失败)。

根据您提到的文件数量(1000 份),雇用一名临时工并通过人力sorted/tagged 获得它们。它会更便宜,你的错误分类也会更少。