如何索引 PDF 文件并搜索关键字?

Posted

技术标签:

【中文标题】如何索引 PDF 文件并搜索关键字?【英文标题】:How do I Index PDF files and search for keywords? 【发布时间】:2011-10-12 23:11:56 【问题描述】:

我拥有的是一堆 PDF(几百个)。它们没有适当的结构,也没有特定的字段。他们所拥有的只是大量的文字。

我想要做什么:

索引 PDF 并根据索引搜索一些关键字。 我有兴趣查找该特定关键字是否在 PDF 文档中,如果是,我想要找到该关键字的行。 如果我在包含该术语的 PDF 文档中搜索“Google”,我希望看到“Google 是一个很棒的搜索引擎”,这是 PDF 中的一行。

我决定怎么做:

使用 SOLR 或 Whoosh,但 SOLR 看起来很适合内置 PDF 支持。我更喜欢用 Python 编写代码,而 Sunburst 是我喜欢的 SOLR 的包装器。 SOLR 的示例/示例项目有一些基于价格比较的模式文件。现在我不确定是否可以使用 SOLR 来回答我的问题。

你们有什么建议?非常感谢任何意见。

【问题讨论】:

您是否建议按每个 PDF 包含的每个单词或短语对其进行索引?如果没有,您将如何生成关键字列表? 我实际上有一个关键字列表。我想为 PDF 中的所有内容编制索引,然后使用我的关键字对该索引进行搜索。 【参考方案1】:

我认为 Solr 符合您的需求。

“突出显示”功能正是您所寻找的。为此,您必须索引并将文档存储在 lucene 索引中。

突出显示功能返回一个片段,其中标记了搜索的文本。

看看这个:http://wiki.apache.org/solr/HighlightingParameters

【讨论】:

如何在默认模板的搜索结果中启用/显示“突出显示”?现在我只看到 XML(作者、content_type、id、最后修改和标题)。谢谢! highlighting nedds the TermVecors wiki.apache.org/solr/TermVectorComponent - 所以你必须再次索引激活的 TermVectorComponent 非常感谢,它现在显示 PDF 中的所有文本。我将所有文本复制到字段“文本”中。现在,当我搜索时,它会显示所有文本,而我只想要“文本”中具有匹配字符串的行。我的架构文件:pastebin.com/Cp1CsZ9Z【参考方案2】:

另一种离线/独立解决方案:

https://github.com/WolfgangFahl/pdfindexer 它使用 PDFBox 和 Apache Lucene,并会为找到的每个关键字创建一个 html 索引文件,其中包含指向 PDF 文件中页面的链接。

【讨论】:

【参考方案3】:

我曾经通过使用pdftotext(我猜pdftohtml 也可以)将PDF 文件转换为文本来解决这个问题,生成某种“缓存”。然后使用一些grep 在文本文件缓存中搜索关键字。

这与您提出的解决方案略有不同,但我可以想象您也可以从 Python 调用它。

【讨论】:

谢谢蒂姆。在我找到 SOLR 之前,您的解决方案是我的第一种方法。 SOLR 按需执行此操作,而且速度更快。只是想知道 SOLR 是否可以在我的上下文中使用,我想我可以! 好吧,听起来不错 :) 也许这种“离线”解决方案可能对其他人阅读本文有用...

以上是关于如何索引 PDF 文件并搜索关键字?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取PDF文件需要搜索特定关键字

java使用itex读取pdf,并搜索关键字,为其盖章

java操作pdf文件,能否找到某个关键词所在的页码? 谢谢!

Lucene 如何对索引进行搜索?

在 pdf 文件中查找特定文本并使用文本打印文件名和行

WIN7如何搜索文件里包含的文字?