分类:
java服务端 分布式服务架构 JavaScript生态体系 大数据与人工智能 数据库 服务器运维 全文搜索 Python 移动互联网 W3C&前端开发 项目构建管理 php 编程语言 常用软件 软件测试 综合教程

Tika教程

Apache Tika 是什么?

  • Apache Tika用于文件类型检测和从各种格式的文件内容提取的库。

  • 在内部,Tika使用现有的各种文件解析器和文档类型的检测技术来检测和提取数据。

  • 使用Tika,人们可以开发出通用型检测器和内容提取到的不同类型的文件,如电子表格,文本文件,图像,PDF文件甚至多媒体输入格式,在一定程度上提取结构化文本以及元数据。

  • Tika提供用于解析不同文件格式的一个通用API。它采用83个现有的专业解析器库,为每个文档类型。

  • 所有这些解析器库是根据一个叫做Parser接口单一接口封装。

Appache Tika

为什么用Tika?

据filext.com网站统计,大约有1.5万至51K的内容类型,并且这个数字还在与日俱增。数据被存储在不同的格式,如文本文档,excel表格,PDF,图像和多媒体文件,仅举几例。因此,应用程序如搜索引擎和内容管理系统需要从这些文档类型容易提取数据的额外的支持。Apache Tika 通过提供一个通用的API来检测并提取多种文件格式的数据服务达到这一目的。

Apache Tika 应用

有各种各样的应用程序使用Apache Tika。在这里,我们将讨论严重依赖Apache Tika几个突出的应用。

搜索引擎

开发搜索引擎索引的数字文档的文本内容使Tika被广泛使用。

  • 搜索引擎是用于搜索的网页信息和索引文件的信息处理系统。

  • 抓取工具是通过Web抓取获取使用一些索引技术被索引的文件搜索引擎的重要组成部分。此后,抓取工具传送这些索引文件提取成分。

  • 提取成分的职责是提取文档中的文本和元数据。这样提取的内容和元数据是对搜索引擎非常有用。该提取组件包含在Tika中。

  • 然后将提取的内容被传递到使用它来建立一个搜索索引搜索引擎的索引器。此外,该搜索引擎使用许多其它方式提取的内容也是如此。

Search Engine

文档分析

  • 在人工智能领域,有一定的工具来自动分析文件在语义层面,并提取各种数据来自他们。

  • 在这种应用中,这些文件是基于在文档的所提取的内容的突出方面进行分类。

  • 这些工具使用提Tika内容提取分析从纯文本到不同的数字文档文件。

数字资产管理

  • 有些组织管理他们的数字资产,如使用一种称为数字资产管理(DAM)的特殊应用程序的照片,电子书,绘图,音乐和视频。

  • 这样的应用程序采取的文件类型检测器和元数据提取器的帮助下到的各种文件进行分类。

内容分析

  • 像亚马逊网站建议根据自己的兴趣刚刚发布了他们的网站内容向个人用户。要做到这一点,这些网站遵循机器学习技术,或采取了类似Facebook的社交媒体网站的帮助下,以提取所需的信息,如喜欢和用户的利益。此收集到的信息将在HTML标签或其他格式需要另外的内容类型检测和提取的形式。

  • 为一个文件,内容分析,我们有实现,如UIMA和Mahout的机器学习技术的技术。这些技术是在聚类和分析中的文件中的数据是有用的。

  • Apache Mahout是一个框架,它提供基于Apache Hadoop的ML算法- 一个云计算平台。 Mahout 提供了下面的某个集群和过滤技术的架构。按照这个架构,程序员可以编写自己的ML算法,通过采取各种文本和元数据的组合来产生建议。提供输入这些算法,最近Mahout的版本使用Tika提取二进制内容的文本和元数据。

  • Apache UIMA 分析和处理各种编程语言,并产生UIMA注解。在内部,它使用提卡注解者抽取文档中的文本和元数据。

历史

年份开发
2006Tika的想法是在Lucene项目管理委员会之前设计的。
2006Tika及其在Jackrabbit项目有用的概念进行了讨论。
2007Tika进入Apache孵化器。
2008版本0.1和0.2发布,Tika从孵化器到Lucene子项目独立。
2009版本0.3,0.4,和0.5发布。
2010版本0.6和0.7发布,Tika进入Apache的顶级项目。
2011Tika1.0发布,并Tika的书籍“Tika in Action”也在同一年被发布。


Tika应用层架构

应用程序员可以很容易地在他们的应用程序集成Tika。Tika提供了一个命令行界面和图形用户界面,使它比较人性化。

在本章中,我们将讨论构成Tika架构的四个重要模块。下图显示了Tika的四个模块的体系结构:

  • 语言检测机制。

  • MIME检测机制。

  • Parser接口。

  • Tika Facade 类.

Tika Architecture

语言检测机制

每当一个文本文件被传递到Tika,它将检测在其中的语言。它接受没有语言的注释文件和通过检测该语言添加在该文件的元数据信息。

支持语言识别,Tika 有一类叫做语言标识符在包org.apache.tika.language及语言识别资料库里面包含了语言检测从给定文本的算法。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的最简单和直接的方式,而且也沿用了外观的设计模式。可以在 Tika API的org.apache.tika包Tika 找到外观facade类。

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

Tika的特点

  • 统一解析器接口:Tika封装在一个单一的解析器接口的第三方解析器库。由于这个特征,用户逸出从选择合适的解析器库的负担,并使用它,根据所遇到的文件类型。

  • 低内存占用:Tika因此消耗更少的内存资源也很容易嵌入Java应用程序。也可以用Tika平台像移动那样PDA资源少,运行该应用程序。

  • 快速处理:从应用连结内容检测和提取可以预期的。

  • 灵活元数据:Tika理解所有这些都用来描述文件的元数据模型。

  • 解析器集成:Tika可以使用可在单一应用程序中每个文件类型的各种解析器库。

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

  • 语言检测: Tika包括语言识别功能,因此可以在一个多语种网站基于语言类型的文档中使用。

Tika的功能

Tika支持多种功能:

  • 文档类型检测

  • 内容提取

  • 元数据提取

  • 语言检测

文件类型检测

Tika使用不同的检测技术,检测给它的文件的类型。

Detection

内容提取

Tika有一个解析器库,可以分析各种文档格式的内容,并提取它们。然后检测所述文档的类型,它从解析器库选择的适当的分析器,并传递该文档。不同类别的Tika方法来解析不同的文件格式。

Extraction

元数据提取

随着内容,Tika提取具有相同的程序的文件的元数据中的内容的提取。对于某些文件类型,Tika有接口类提取元数据。

Extraction1

语言检测

在内部,Tika如下像一个n-gram算法来检测所述内容的语言的给定文档中。Tika取决于类,如语言识别和Profiler的语言识别。

Detection1