apache Tika介绍及使用
1、Tika应用层架构
应用程序员可以很容易地在他们的应用程序集成Tika。Tika提供了一个命令行界面和图形用户界面,使它比较人性化。
在本章中,我们将讨论构成Tika架构的四个重要模块。下图显示了Tika的四个模块的体系结构:
- 语言检测机制。
- MIME检测机制。
- Parser接口。
- Tika Facade 类.
1.1 语言检测机制
每当一个文本文件被传递到Tika,它将检测在其中的语言。它接受没有语言的注释文件和通过检测该语言添加在该文件的元数据信息。
支持语言识别,Tika 有一类叫做语言标识符在包org.apache.tika.language及语言识别资料库里面包含了语言检测从给定文本的算法。Tika 内部使用N-gram算法语言检测。
1.2 MIME检测机制
Tika可以根据MIME标准检测文档类型。Tika默认MIME类型检测是使用org.apache.tika.mime.mimeTypes。它使用org.apache.tika.detect.Detector 接口大部分内容类型检测。
内部Tika使用多种技术,如文件匹配替换,内容类型提示,魔术字节,字符编码,以及其他一些技术。
1.3 解析器接口
org.apache.tika.parser 解析器接口是Tika解析文档的主要接口。该接口从提取文档中的文本和元数据,并总结了其对外部用户愿意写解析器插件。
采用不同的具体解析器类,具体为各个文档类型,Tika 支持大量的文件格式。这些格式的具体类不同的文件格式提供支持,无论是通过直接实现逻辑分析器或使用外部解析器库。
1.4 Tika Facade 类
使用的Tika facade类是从Java调用Tika的最简单和直接的方式,而且也沿用了外观的设计模式。可以在 Tika API的org.apache.tika包Tika 找到外观facade类。
通过实现基本用例,Tika作为facade的代理。它抽象了的Tika库的底层复杂性,例如MIME检测机制,解析器接口和语言检测机制,并提供给用户一个简单的接口来使用。
2、Tika的特点
- 统一解析器接口:Tika封装在一个单一的解析器接口的第三方解析器库。由于这个特征,用户逸出从选择合适的解析器库的负担,并使用它,根据所遇到的文件类型。
- 低内存占用:Tika因此消耗更少的内存资源也很容易嵌入Java应用程序。也可以用Tika平台像移动那样PDA资源少,运行该应用程序。
- 快速处理:从应用连结内容检测和提取可以预期的。
- 灵活元数据:Tika理解所有这些都用来描述文件的元数据模型。
- 解析器集成:Tika可以使用可在单一应用程序中每个文件类型的各种解析器库。
- MIME类型检测:Tika可以检测并从所有包括在MIME标准的媒体类型中提取内容。
- 语言检测:Tika包括语言识别功能,因此可以在一个多语种网站基于语言类型的文档中使用。
3、Tika的功能
Tika支持多种功能:
- 文档类型检测
- 内容提取
- 元数据提取
- 语言检测
3.1 文件类型检测
Tika使用不同的检测技术,检测给它的文件的类型。
3.2 内容提取
Tika有一个解析器库,可以分析各种文档格式的内容,并提取它们。然后检测所述文档的类型,它从解析器库选择的适当的分析器,并传递该文档。不同类别的Tika方法来解析不同的文件格式。
3.3 元数据提取
随着内容,Tika提取具有相同的程序的文件的元数据中的内容的提取。对于某些文件类型,Tika有接口类提取元数据。
3.4 语言检测
在内部,Tika如下像一个n-gram算法来检测所述内容的语言的给定文档中。Tika取决于类,如语言识别和Profiler的语言识别。
4、Tika环境配置
4.1 系统要求
JDK |
Java SE 2 JDK 1.6 或以上 |
内存 |
1 GB RAM (推荐) |
硬盘空间 |
无最小要求 |
操作系统版本 |
Windows XP 或以上, Linux |
- Maven依赖
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>1.17</version>
</dependency>
- Tika图形操作界面
下载 tika-app-1.21.jar
下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/tika/tika-app-1.21.jar
运行 java -jar tika-app-1.21.jar ,如下图
在GUI上,点击open打开,浏览并选择一个文件,该文件将被提取,或将其拖动到窗口的空白。
Tika 提取的文件的内容,并在五个不同的格式显示出来,即。元数据,格式化文本,纯文本,主要内容和结构化文本。可以选择任何想要的格式。
5、Tika支持的文件格式
下面的表显示了Tika支持的文件格式。
文件格式 |
类库 |
Tika中的类 |
XML |
org.apache.tika.parser.xml |
XMLParser |
HTML |
org.apache.tika.parser.htmll and it uses Tagsoup Library |
HtmlParser |
MS-Office compound document Ole2 till 2007 ooxml 2007 onwards |
org.apache.tika.parser.microsoft org.apache.tika.parser.microsoft.ooxml and it uses Apache Poi library |
OfficeParser(ole2) OOXMLParser(ooxml) |
OpenDocument Format openoffice |
org.apache.tika.parser.odf |
OpenOfficeParser |
portable Document Format(PDF) |
org.apache.tika.parser.pdf and this package uses Apache PdfBox library |
PDFParser |
Electronic Publication Format (digital books) |
org.apache.tika.parser.epub |
EpubParser |
Rich Text format |
org.apache.tika.parser.rtf |
RTFParser |
Compression and packaging formats |
org.apache.tika.parser.pkg and this package uses Common compress library |
PackageParser and CompressorParser and its sub-classes |
Text format |
org.apache.tika.parser.txt |
TXTParser |
Feed and syndication formats |
org.apache.tika.parser.feed |
FeedParser |
Audio formats |
org.apache.tika.parser.audio and org.apache.tika.parser.mp3 |
AudioParser MidiParser Mp3- for mp3parser |
Imageparsers |
org.apache.tika.parser.jpeg |
JpegParser-for jpeg images |
Videoformats |
org.apache.tika.parser.mp4 and org.apache.tika.parser.video this parser internally uses Simple Algorithm to parse flash video formats |
Mp4parser FlvParser |
java class files and jar files |
org.apache.tika.parser.asm |
ClassParser CompressorParser |
Mobxformat (email messages) |
org.apache.tika.parser.mbox |
MobXParser |
Cad formats |
org.apache.tika.parser.dwg |
DWGParser |
FontFormats |
org.apache.tika.parser.font |
TrueTypeParser |
executable programs and libraries |
org.apache.tika.parser.executable |
ExecutableParser |
6、java整合Tika实现文件解析
6.1 Tika文件类型检测
public static String getFileType(){
try {
File file = new File("D:\\111.zip");
Tika tika = new Tika();
String fileType = tika.detect(file);
if (fileType != null && fileType.contains("/")) {
fileType = fileType.substring(fileType.indexOf("/") +1);
}
return fileType;
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
6.2 Tika内容提取
public static String getContext(){try {File file = new File("sample.txt");Tika tika = new Tika();String filecontent = tika.parseToString(file);System.out.println("Extracted Content: " + filecontent);return filecontent;} catch (Exception e) {e.printStackTrace();}return "";}
6.3 Tika元数据提取
public static String parsePdf(){try {BodyContentHandler handler = new BodyContentHandler();Metadata metadata = new Metadata();FileInputStream inputstream = new FileInputStream(new File("D:\\111.pdf"));ParseContext pcontext = new ParseContext();//parsing the document using PDF parserPDFParser pdfparser = new PDFParser();pdfparser.parse(inputstream, handler, metadata,pcontext);//getting the content of the documentSystem.out.println("Contents of the PDF :" + handler.toString());// 元数据提取System.out.println("Metadata of the PDF:");String[] metadataNames = metadata.names();for(String name : metadataNames) {System.out.println(name+ " : " + metadata.get(name));}} catch (Exception e) {e.printStackTrace();}return "";}
6.4 Tika语言检测
public static String LanguageDetection() {try {Parser parser = new AutoDetectParser();BodyContentHandler handler = new BodyContentHandler();Metadata metadata = new Metadata();FileInputStream content = new FileInputStream(new File("D:\\111.zip"));//Parsing the given documentparser.parse(content, handler, metadata, new ParseContext());LanguageIdentifier object = new LanguageIdentifier(handler.toString());System.out.println("Language name :" + object.getLanguage());return object.getLanguage();} catch (Exception e) {e.printStackTrace();}return "";}
6.5 Tika提取pdf文件
public static String parsePdf(){try {BodyContentHandler handler = new BodyContentHandler();Metadata metadata = new Metadata();FileInputStream inputstream = new FileInputStream(new File("D:\\1111.pdf"));ParseContext pcontext = new ParseContext();//parsing the document using PDF parserPDFParser pdfparser = new PDFParser();pdfparser.parse(inputstream, handler, metadata,pcontext);//getting the content of the documentSystem.out.println("Contents of the PDF :" + handler.toString());// 元数据提取System.out.println("Metadata of the PDF:");String[] metadataNames = metadata.names();for(String name : metadataNames) {System.out.println(name+ " : " + metadata.get(name));}} catch (Exception e) {e.printStackTrace();}return "";}
6.6 Tika提取文本文档
public static String parseTxt(){try {BodyContentHandler handler = new BodyContentHandler();Metadata metadata = new Metadata();FileInputStream inputstream = new FileInputStream(new File("D:\\example.txt"));ParseContext pcontext=new ParseContext();//Text document parserTXTParser TexTParser = new TXTParser();TexTParser.parse(inputstream, handler, metadata,pcontext);System.out.println("Contents of the document:" + handler.toString());return handler.toString();} catch (Exception e) {e.printStackTrace();}return "";}
6.7 Tika提取excel内容
public static String parseExcel(){try {BodyContentHandler handler = new BodyContentHandler();Metadata metadata = new Metadata();FileInputStream inputstream = new FileInputStream(new File("D:\\111.xlsx"));ParseContext pcontext=new ParseContext();OOXMLParser msofficeparser = new OOXMLParser ();msofficeparser.parse(inputstream, handler, metadata,pcontext);System.out.println("Contents of the document:" + handler.toString());return handler.toString();} catch (Exception e) {e.printStackTrace();}return "";}
6.8 Tika提取word内容
Tika-1.*最高支持2007及更低版本的Office Word文档,如果是高于2007版本的Word文档需要使用POI处理(Tika会报错)
apache Tika介绍及使用相关推荐
- Apache Tika:通用的内容分析工具
项目介绍 Tika是一个内容分析工具,自带全面的parser工具类,能解析基本所有常见格式的文件,得到文件的metadata,content等内容,返回格式化信息.总的来说可以作为一个通用的解析工具. ...
- Apache Tika入门
文章目录 1.基本介绍 2.Tika使用 2.1.解析器接口(The Parser interface) 2.1.1.自定义Parser类 2.2.检测器接口 2.3.Tika配置 1.基本介绍 Ap ...
- Apache Spark 介绍的演讲ppt (slice),全英文
这里是本人制作的Apache Spark 介绍的演讲ppt,全英文.这里粘贴部分截图,具体可到相应的链接下载ppt文件,ppt文件中有动画: 下载地址:https://download.csdn.ne ...
- 1.6.3 Uploading Data with Solr Cell using Apache Tika
1. Uploading Data with Solr Cell using Apache Tika solr使用Apache Tika工程的代码提供了一个框架,用于合并所有不同格式的文件解析器为so ...
- Apache Tez介绍,术语,安装,监控等
目录 1 Apache Tez 1 1.1 Apache Tez介绍 1 1.2 术语介绍 1 1.3 软件准备 2 1.4 设置tez-ui 3 1.4.1 找到war包 3 1.4.2 将tez- ...
- 《从0到1学习Flink》—— Apache Flink 介绍
前言 Flink 是一种流式计算框架,为什么我会接触到 Flink 呢?因为我目前在负责的是监控平台的告警部分,负责采集到的监控数据会直接往 kafka 里塞,然后告警这边需要从 kafka topi ...
- Apache Tika源码研究(七)
tika怎样加载Parser实现类的,怎样根据文档的mime类型调用相应的Parser实现类,本文接着分析 先熟悉一下tika的解析类的相关接口和类的UML模型: Parser接口的源码如下: /** ...
- 开源性能测试工具 - Apache ab 介绍
开源性能测试工具 - Apache ab 介绍 简介 ab的全称是ApacheBench,是 Apache 附带的一个小工具,专门用于 HTTP Server 的benchmark testing,可 ...
- Apache Cordova介绍
分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow Apache Co ...
最新文章
- (转载)Struts2源码粗略分析四:理解xwork工作原理
- 可以下载Microsoft ISA Server 2006 试用版了,网管需要关注
- 远程桌面连接时显示密码已过期
- 一天1个机器学习知识点(三)
- 关于能否命令Scrum团队的对话
- OpenGL水波纹效果
- 【期望】守卫挑战(金牌导航 期望-9)
- 查看Oracle表中的指定记录在数据文件中的位置
- 工作流任务的权限问题
- 免费数据集 公开数据集下载 网站
- 介绍一下xgb_珍藏版 | 20道XGBoost面试题,你会几个?(上篇)
- android极光富媒体推送,极光推送如何在android客户端接收富媒体
- JAVA中如何解决超卖,Redis解决库存超卖问题实例讲解
- 共模信号 差模信号 差动放大器
- Python爬虫实例之淘宝商品比价定向爬取!爬虫还是很有意思的!
- js--动态生成表格
- Web前端基础知识总结
- 地质勘查项目管理困难重重,需要专业软件来解决
- viewpro.php是啥意思,海信 Hi-View Pro系列 画质引擎芯片简介
- 论苹果与安卓系统争霸
热门文章
- 企业数字化转型战略完整指南!
- html中图片切割视频,canvas与html5实现视频截图功能示例
- 【年度福利】聚宽2019年度评选+精选文章合集
- [Err] 1115 - Unknown character set 报错原因及解决方法
- 如何建立产品属性管理规范,提升元器件采购报价效率?
- c语言中判断字符串s1大于s2 应当使用,湖北省计算机二级C语言考试
- C语言 计算1+22+333+444+…+999999999的值
- JAVA练习89-把数字翻译成字符串
- 网口 激光雷达配置
- Map集合(HashMap,TreeMap)