我的应用程序允许用户上传pdf文件并将其存储在网络服务器上供以后查看。我将文件名,位置,大小,上传日期,用户名等存储在SQL Server数据库中。
我希望能够以编程方式,在上传文件之后,生成关键字列表(可能除了常用词之外的所有内容)并将它们存储在sql数据库中,以便后续用户可以进行关键字搜索。 ..
有关如何处理此任务的建议?这些类型的例程是否已经存在?
编辑:只是为了澄清我的要求,我不会关心做OCR,我不知道PDF的内部,但我明白,如果它是由应用程序生成的,例如Word-> PDF打印,文档的文本是可搜索的...所以我的第一个任务,我的问题的意图是,如何从asp.net应用程序访问PDF文件的文本?扫描PDF上的OCR可能超出了我的要求。答案 0 :(得分:2)
作为第一步,您应该从PDF中提取所有文本。 ghostscript和pdftotext可以执行此操作,PDFBox是另一种选择。 当然还有其他工具。
然后,您可以删除所有停用词和重复项,并将其写入数据库。
我被提到这对扫描的PDF文档不起作用,但这只是事实的一半。一方面,有许多扫描的PDF文件另外嵌入了文本,因为这是一些扫描仪驱动程序所做的事情(Canon CanoScan驱动程序执行OCR并生成可搜索的PDF)。另一方面,使用包含非ASCCII字符的LaTeX生成的文档会根据我的经验返回垃圾(即使我在acrobat中复制并粘贴)。
答案 1 :(得分:0)
我预见到的唯一问题就是抓住每个非常见的词,你会稀释你的搜索结果,并且必须查询数据库以获得更多的pdf。要查看的一个网站是Scribd,它与您正在谈论的用户上传文件和人们可以通过Flash应用程序在线查看这些内容类似。
答案 2 :(得分:0)
这是一个非常有趣的话题。问题是您需要多少关键字来定义一个PDF。如果你说:
3到10 - 我会检查文本分类的方法,例如贝叶斯分类器或K-NN(该方法会将PDF文件分组为类似的群集)。我知道类似的算法用于过滤垃圾邮件。但它是一个需要输入的系统,例如,如果你将关键字添加到100 PDF,这个系统将学习模式。我不是专家,但这是一种方法。
超过10 - 然后我会建议蛮力 - >过滤常用词 - >获得特定文件的最常用词语。
我会探索第一个选项。您一定要检查“文本分类”,“自动标记”,“文本挖掘”,“自动关键字提取”等方法。
一些链接:
答案 3 :(得分:0)
如果您计划索引PDF文档,则应考虑使用Lucene之类的专用文本搜索引擎。 Lucene提供的功能仅使用SQL和关系数据库很难实现。您仍然需要从PDF文档中提取文本,但不必担心过滤掉常用单词。通过过滤常用单词,您将完全失去进行短语搜索的能力。