TIKA - 架构

Tika 的应用级架构

应用程序程序员可以轻松地将 Tika 集成到他们的应用程序中。Tika 提供了一个命令行界面和一个 GUI,使其更加用户友好。

在本章中,我们将讨论构成 Tika 架构的四个重要模块。下图显示了 Tika 的架构及其四个模块 −

  • 语言检测机制。
  • MIME 检测机制。
  • 解析器接口。
  • Tika Facade 类。
Tika Architecture

语言检测机制

每当将文本文档传递给 Tika 时,它都会检测其编写语言。它接受没有语言注释的文档,并通过检测语言将该信息添加到文档的元数据中。

为了支持语言识别,Tika 在包 org.apache.tika.language 中有一个名为 Language Identifier 的类,以及一个语言识别存储库,其中包含用于从给定文本中检测语言的算法。Tika 内部使用 N-gram 算法进行语言检测。

MIME 检测机制

Tika 可以根据 MIME 标准检测文档类型。Tika 中的默认 MIME 类型检测是使用 org.apache.tika.mime.mimeTypes 完成的。它使用 org.apache.tika.detect.Detector 接口进行大多数内容类型检测。

Tika 在内部使用多种技术,如文件通配符、内容类型提示、魔法字节、字符编码和其他几种技术。

解析器接口

org.apache.tika.parser 的解析器接口是 Tika 中解析文档的关键接口。此接口从文档中提取文本和元数据,并为愿意编写解析器插件的外部用户进行汇总。

使用针对各个文档类型的不同具体解析器类,Tika 支持许多文档格式。这些格式特定的类通过直接实现解析器逻辑或使用外部解析器库来支持不同的文档格式。

Tika Facade 类

使用 Tika Facade 类是从 Java 调用 Tika 的最简单、最直接的方式,它遵循 Facade 设计模式。您可以在 Tika API 的 org.apache.tika 包中找到 Tika Facade 类。

通过实现基本用例,Tika 充当了景观的代理。它抽象了 Tika 库的底层复杂性,例如 MIME 检测机制、解析器接口和语言检测机制,并为用户提供了一个简单的使用界面。

Tika 的功能

  • 统一解析器接口 − Tika 将所有第三方解析器库封装在一个解析器接口中。由于此功能,用户无需选择合适的解析器库,只需根据遇到的文件类型使用它即可。

  • 低内存使用率 − Tika 消耗较少的内存资源,因此可轻松嵌入 Java 应用程序。我们还可以在运行在资源较少的平台上的应用程序(如移动 PDA)中使用 Tika。

  • 快速处理 − 可以快速检测和提取应用程序内容。

  • 灵活的元数据 − Tika 了解用于描述文件的所有元数据模型。

  • 解析器集成 − Tika 可以在单个应用程序中使用适用于每种文档类型的各种解析器库。

  • MIME 类型检测 − Tika 可以检测并提取 MIME 标准中包含的所有媒体类型的内容。

  • 语言检测 − Tika 包含语言识别功能,因此可以在多语言网站中基于语言类型在文档中使用。

Tika 的功能

Tika 支持各种功能 −

  • 文档类型检测
  • 内容提取
  • 元数据提取
  • 语言检测

文档类型检测

Tika 使用各种检测技术并检测给定文档的类型。

Detection

内容提取

Tika 有一个解析器库,可以解析各种文档格式的内容并提取它们。检测到文档类型后,它会从解析器存储库中选择适当的解析器并传递文档。Tika 的不同类具有解析不同文档格式的方法。

Extraction

元数据提取

除了内容之外,Tika 还使用与内容提取相同的程序提取文档的元数据。对于某些文档类型,Tika 具有用于提取元数据的类。

Extraction1

语言检测

在内部,Tika 遵循 n-gram 等算法来检测给定文档中内容的语言。 Tika 依赖 LanguageidentifierProfiler 等类进行语言识别。

Detection1