获取文件的“文本内容”

获取文件的“文本内容”

我想知道是否有一个工具可以抓取文件的文本内容。基本上我想放入 pdf、word 文档、压缩文件或其他任何文件并获取其中包含的文本。

它可以strings打印出可打印字符的序列,但这不适用于许多压缩格式。它的“愚蠢”性质还意味着它通常不仅仅打印文本。不过,对于未知文件类型来说,这将是一个很好的后备方案。

有一个pdftotext命令几乎完全符合我的要求,但它只适用于 pdf。

是否有一种工具可以处理多种格式或将更多这些工具结合在一起?

附加信息

很多人都提到他们的工具是非标准的。我只想指出这很好。

答案1

除了、和朋友之外,我从未见过任何可以从任何文本文件解析数据的stringsUnix 命令行工具。所有这些工具都假设数据是文本格式。grepawk

PDF 或 Word 文档等文件以二进制格式对文本数据进行编码,因此如果没有其他工具的帮助来解析它,则无法访问它。这些工具通常是一种技巧小马,通常只能处理其中一种或几种二进制文件格式。

您可以使用该file命令来识别文件类型。

例子

$ file /usr/share/cups/data/default.pdf
/usr/share/cups/data/default.pdf: PDF document, version 1.5

man file有关其用法的更多信息,请参见 参考资料。

Lucene、Solar 和其他索引工具

您也许能够适应或找到索引工具中包含的工具,例如卢塞恩(例如:PDF&MSOffice文档),它可以从人们通常每天处理的至少一大部分文件中解析出此文本。对于初学者来说,我希望它能够与 PDF、Word 和 Libre Office 文件格式抗衡。

其他工具

这些工具至少可以部分读取某些二进制文件,因此我将它们添加到此处只是为了让您了解它们。它们并不包罗万象,但可能对您有用。

答案2

不存在这样的转换工具(至少不是标准的),但您可能会找到一些很好的预览生成器或将现有工具结合在一起的工具(见下文)。文档格式有很多很多,所有这些格式都是由使用它们的应用程序定义的(随机示例:PDF、Word 文档、ODS 电子表格、PowerPoint 演示文稿、HTML 文档 [其中某些字符串不是内容的一部分] 、JPG 文本图像、编译程序、数据库文件、压缩文件、gzip 压缩文件、bzip 压缩文件,这样的例子不胜枚举)。创建一个程序来读取现有的每种文档数据格式、解码数据并提取实际内容几乎是不可能的。

搜索索引器/预览生成器采用的典型策略是猜测文件类型,调用一些可以抓取相关文本的过滤器,然后处理/预览该文本。通常,这是由作者自己编写一小组常见类型的过滤器(进行研究以了解格式规范),或者通过应用程序提供某种类型的可扩展插件式框架并保留它来完成的交给第三方来编写过滤器。很多时候它是两者的结合。

例如,Nautilus 就结合了这些方法。对于某些格式,例如常见的图像格式,它可以自行生成预览。对于其他格式,它依赖于由应用程序作者创建并在 gconf 中指定给 Nautilus 的第三方脚本,这些脚本定义了各种文档格式,以解析文档并生成缩略图。它只是将生成预览的任务委托给这些脚本,然后将其存储为图像文件并由 Nautilus 显示。

您找到的任何搜索索引器都将按照类似的原理运行。

您可能想研究一些其他选项,包括但当然不限于:

  • 使用现有的搜索软件。以下是适用于 Linux 的可用选项的详细列表和回顾:http://www.tuxradar.com/content/best-linux-desktop-search-tools(如果您有 ADD:前 3 名依次是 Recoll、Beagle、Google Desktop)。
  • 如果您正在编写自己的过滤器,请考虑编写一个可以使用已编写的过滤器的过滤器。
  • 考虑一下您真正想要支持的文档类型,并编写一个使用file各种过滤工具(例如pdftotext)工作的组合的脚本。
  • 满足有限的未压缩原始文本和使用strings

相关内容