【问题标题】:Generating keywords from a pdf automatically自动从pdf生成关键字
【发布时间】:2010-10-25 01:26:16
【问题描述】:

我的应用程序允许用户上传 pdf 文件并将它们存储在网络服务器上供以后查看。我将文件的名称、位置、大小、上传日期、用户名等存储在 SQL 服务器数据库中。

我希望能够以编程方式,在文件上传后,生成关键字列表(可能除了常用词之外的所有内容)并将它们存储在 sql 数据库中,以便后续用户可以进行关键字搜索。 ..

关于如何完成这项任务的建议?这些类型的例程是否已经存在?

编辑:只是为了澄清我的要求,我不关心进行 OCR,我不知道 PDF 的内部,但我知道如果它是由应用程序生成的,例如 Word->PDF打印,文档的文本是可搜索的......所以真的是我的第一个任务,我的问题的目的是,如何从 asp.net 应用程序访问 PDF 文件的文本?在这一点上,扫描 PDF 上的 OCR 可能超出了我的要求。

【问题讨论】:

  • 您应该记住的一件事是,许多 PDF 实际上是扫描件,带有文本图像,而不是实际的字符串。你想在这种情况下做 OCR 吗?只是需要考虑的事情。

标签: asp.net sql-server pdf


【解决方案1】:

我预见到获取每个非常用词的唯一问题是您将稀释搜索结果并且必须查询数据库以获取更多 pdf。一个要查看的网站是Scribd,它的作用类似于您所说的用户上传文件并且人们能够通过 Flash 应用程序在线查看它们。

【讨论】:

    【解决方案2】:

    这是一个非常有趣的话题。问题是定义一个 PDF 需要多少个关键字。如果你说:

    • 3 到 10 - 我会检查文本分类方法,例如 贝叶斯分类器 或 K-NN(该方法会将 PDF 文件分组到相似的集群中)。我知道类似的算法用于过滤垃圾邮件。但这是一个需要输入的系统,例如,如果您将关键字添加到 100 个 PDF,该系统将学习模式。我不是专家,但这是一种方法。

    • 超过 10 个 - 那我建议蛮力 -> 过滤常用词 -> 获取特定文档的最常用词。

    我会探索第一个选项。一定要检查“文本分类”、“自动标记”、“文本挖掘”、“自动关键字提取”等方法。

    一些链接:

    http://en.wikipedia.org/wiki/Naive_Bayes_classifier

    Keyword Extraction Using Naive Bayes

    【讨论】:

      【解决方案3】:

      作为第一步,您应该从 PDF 中提取所有文本。 ghostscriptpdftotext 可以做到这一点,PDFBox 是另一种选择。 当然还有其他工具。

      然后您可以删除所有停用词和重复词并将其写入数据库。

      有人提到这不适用于扫描的 PDF 文档,但这只是事实的一半。一方面,有许多扫描的 PDF 文件还嵌入了文本,因为这是一些扫描仪驱动程序所做的(Canon CanoScan 驱动程序执行 OCR 并生成可搜索的 PDF)。另一方面,根据我的经验,使用 LaTeX 生成的包含非 ASCCII 字符的文档会返回垃圾(即使我在 acrobat 中复制和粘贴)。

      【讨论】:

      • 我说的是没有文字的PDF扫描。我从来没有说过 /all/ PDF 扫描缺少文本。
      • Matthew Flaschen,你是对的。我的评论并不是要表达不同意见,而是补充。事实的一半是没有文本的 PDF 扫描,另一个是文本提取不一定适用于排版 PDF。
      【解决方案4】:

      如果您计划为 PDF 文档编制索引,则应考虑使用专用的文本搜索引擎,例如 Lucene。 Lucene 提供了仅使用 SQL 和关系数据库难以实现的功能。您仍然需要从 PDF 文档中提取文本,但不必担心过滤掉常用词。通过过滤掉常用词,您将完全失去进行词组搜索的能力。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-13
        • 2021-08-03
        • 2011-01-09
        • 2020-06-10
        • 1970-01-01
        • 1970-01-01
        • 2015-06-03
        • 2016-11-18
        相关资源
        最近更新 更多