Tika 简明教程

TIKA - Architecture

Application-Level Architecture of Tika

应用程序员可以轻松地在应用程序中集成 Tika。Tika 提供命令行界面和图形用户界面,以便于用户使用。

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

  1. Language detection mechanism.

  2. MIME detection mechanism.

  3. Parser interface.

  4. Tika Facade class.

tika architecture

Language Detection Mechanism

每当文本文档传递给 Tika 时,它将检测其书面语言。它接受没有语言注释的文档,并在检测语言后在文档的元数据中添加该信息。

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

MIME Detection Mechanism

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

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

Parser Interface

org.apache.tika.parser 的解析器接口是 Tika 中用于解析文档的主要接口。该接口从文档中提取文本和元数据,并将其总结出来,以便愿意编写解析器插件的外部用户使用。

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

Tika Facade Class

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

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

Features of Tika

  1. Unified parser Interface − Tika 将所有第三方解析器库封装在一个解析器接口中。由于这个特性,用户无需再承受选择合适的解析器库并按照遇到的文件类型进行使用的负担。

  2. Low memory usage − Tika 消耗的内存资源较少,因此很容易嵌入到 Java 应用程序中。我们还可以在资源较少的平台(如移动 PDA)上运行的应用程序中使用 Tika。

  3. Fast processing − 可以预期从应用程序快速检测和提取内容。

  4. Flexible metadata − Tika 理解所有用于描述文件元数据的模型。

  5. Parser integration − Tika 可以在一个应用程序中使用为每种文档类型提供的各种解析器库。

  6. MIME type detection − Tika 可以检测和提取 MIME 标准中包含的所有媒体类型的内容。

  7. Language detection − Tika 包含语言识别特性,因此可以在多语言网站中基于语言类型用于文档。

Functionalities of Tika

Tika 支持各种功能:

  1. Document type detection

  2. Content extraction

  3. Metadata extraction

  4. Language detection

Document Type Detection

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

detection

Content Extraction

Tika 拥有一个解析程序库,该库可以解析各种文档格式的内容并提取出来。在检测到文档类型之后,它从解析器容器中选择相应的解析器并传递该文档。Tika 的不同类具有不同的方法来解析不同的文档格式。

extraction

Metadata Extraction

除了内容之外,Tika 还通过与内容提取中相同的方法提取文档的元数据。对于某些类型的文档,Tika 具有提取元数据的类。

extraction1

Language Detection

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

detection1