`
houzhaowei
  • 浏览: 497930 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Apache tika -- 解析多种类型(word、pdf、txt 等)文件!

阅读更多

apache 是个伟大的组织。

在lucene 检索 如火如荼时, apache不忘继续努力,近期提供了对各种格式文件进行解析的解决方案 -- apache旗下的tika. 虽然还没有1.0版  , 但已经很好用:

/**
	 * 解析各种类型文件
	 * @param 文件路径
	 * @return 文件内容字符串
	 */
	public static String parse(String path) {
		String result = "";
		TikaConfig tikaConfig = TikaConfig.getDefaultConfig();
		try {
			result = ParseUtils.getStringContent(new File(path), tikaConfig);
		}catch (Exception e) {
			log.debug("[by ninja.hzw]" + e);
		}
		return result;
	}

 

很简单,可以解析各种文件,返回文档内容字符串, word2003/2007 、 pdf  、 txt 都经过测试,均能解析且无乱码问题。  

 

oh, Great Apach

 

Tika 的下载和打包:

下载不用多说,google 一下“apache tika” 找到其官网下载即可。

To build Tika from sources you first need to either download a source release or checkout the latest sources from version control.

Once you have the sources, you can build them using the Maven 2 build system. Executing the following command in the base directory will build the sources and install the resulting artifacts in your local Maven repository.

mvn install

 

apache 已经说得很清楚,进入下载后的tika 目录 ,然后执行maven install 即可。(当然这里需要您懂得maven2的使用。当然不会的朋友可以联系我^^ . 还需注意,必须为jdk1.5 + 才能成功编译打包。)

打包完后产生以下 jar:

tika-core/target/tika-core-0.7.jar
Tika core library. Contains the core interfaces and classes of Tika, but none of the parser implementations. Depends only on Java 5.
tika-parsers/target/tika-parsers-0.7.jar
Tika parsers. Collection of classes that implement the Tika Parser interface based on various external parser libraries.
tika-app/target/tika-app-0.7.jar
Tika application. Combines the above libraries and all the external parser libraries into a single runnable jar with a GUI and a command line interface.
tika-bundle/target/tika-bundle-0.7.jar
Tika bundle. An OSGi bundle that includes everything you need to use all Tika functionality in an OSGi environment.

 

 我们要想做文档解析,只需引入tika-core 和 tika-parsers 即可。

 

当然如果您的项目是maven 构建的,那更好了。在pom里加上依赖:

  <dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-core</artifactId>
    <version>0.7</version>
  </dependency>

 

以及

  <dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-parsers</artifactId>
    <version>0.7</version>
  </dependency>

 

maven 会自动下载。(感谢maven官方的支持。)

分享到:
评论
2 楼 海底的乌鸦 2013-08-20  
麻烦问下  这个是需要在maven环境下使用吗? 能不能用到java环境下   可以的话能不能帮忙整个包 实在不知道maven是什么东东
1 楼 eidolonprince 2011-04-13  
您好,我按照您给出的方法在lucene里使用了tika,现在有个问题,就是每次在解析pdf的时候,不报错,但是会给出一大堆信息,解析其他格式的时候都不存在这个问题,能否给我一些建议:
2011-04-13 19:50:22,984 DEBUG [http-9080-2] org.apache.pdfbox.pdfparser.PDFObjectStreamParser: parsed=COSObject{16, 0}
2011-04-13 19:50:22,984 DEBUG [http-9080-2] org.apache.pdfbox.pdfparser.PDFObjectStreamParser: parsed=COSObject{15, 0}
2011-04-13 19:50:22,984 DEBUG [http-9080-2] org.apache.pdfbox.pdfparser.PDFObjectStreamParser: parsed=COSObject{13, 0}
2011-04-13 19:50:22,984 DEBUG [http-9080-2] org.apache.pdfbox.pdfparser.PDFObjectStreamParser: parsed=COSObject{14, 0}
2011-04-13 19:50:22,984 DEBUG [http-9080-2] org.apache.pdfbox.pdfparser.PDFObjectStreamParser: parsed=COSObject{17, 0}
2011-04-13 19:50:23,275 DEBUG [http-9080-2] org.apache.pdfbox.pdmodel.font.PDSimpleFont: Debug: Could not find encoding for COSName{Identity-H}
2011-04-13 19:50:23,318 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSName{P}
2011-04-13 19:50:23,318 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSDictionary{(COSName{MCID}:COSInt{0}) }
2011-04-13 19:50:23,318 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: PDFOperator{BDC}
2011-04-13 19:50:23,318 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: PDFOperator{BT}
2011-04-13 19:50:23,318 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSName{F1}
2011-04-13 19:50:23,318 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSFloat{10.56}
2011-04-13 19:50:23,320 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: PDFOperator{Tf}
2011-04-13 19:50:23,320 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSInt{1}
2011-04-13 19:50:23,320 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSInt{0}
2011-04-13 19:50:23,320 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSInt{0}
2011-04-13 19:50:23,320 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSInt{1}
2011-04-13 19:50:23,320 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSFloat{90.024}
2011-04-13 19:50:23,320 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSFloat{758.28}
2011-04-13 19:50:23,320 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: PDFOperator{Tm}
2011-04-13 19:50:23,320 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSInt{0}
2011-04-13 19:50:23,320 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: PDFOperator{g}
2011-04-13 19:50:23,320 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSInt{0}
2011-04-13 19:50:23,320 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: PDFOperator{G}
2011-04-13 19:50:23,320 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSArray{[COSString{08?}, COSInt{11}, COSString{-;-;}, COSInt{11}, COSString{??}, COSInt{11}, COSString{7-
V}, COSInt{11}, COSString{>?L}, COSInt{11}, COSString{*?}]}
2011-04-13 19:50:23,320 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: PDFOperator{TJ}
2011-04-13 19:50:23,323 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: PDFOperator{ET}
2011-04-13 19:50:23,323 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: PDFOperator{EMC}
2011-04-13 19:50:23,323 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSName{P}
2011-04-13 19:50:23,323 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSDictionary{(COSName{MCID}:COSInt{1}) }
2011-04-13 19:50:23,323 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: PDFOperator{BDC}
2011-04-13 19:50:23,323 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: PDFOperator{BT}
2011-04-13 19:50:23,323 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSName{F2}
2011-04-13 19:50:23,323 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSFloat{10.56}
2011-04-13 19:50:23,325 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: PDFOperator{Tf}
2011-04-13 19:50:23,325 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSInt{1}
2011-04-13 19:50:23,325 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSInt{0}
2011-04-13 19:50:23,325 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSInt{0}
2011-04-13 19:50:23,325 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSInt{1}
2011-04-13 19:50:23,325 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSFloat{226.61}
2011-04-13 19:50:23,325 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSFloat{758.28}
2011-04-13 19:50:23,325 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: PDFOperator{Tm}
2011-04-13 19:50:23,325 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: COSArray{[COSString{ }]}
2011-04-13 19:50:23,325 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: PDFOperator{TJ}
2011-04-13 19:50:23,325 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: PDFOperator{ET}
2011-04-13 19:50:23,325 DEBUG [http-9080-2] org.apache.pdfbox.util.PDFStreamEngine: processing substream token: PDFOperator{EMC}

相关推荐

    apache-tika-1.2-src.zip_ tika-app-1.2_java poi word_tika-app-1.2

    "tika-app-1.2"是Tika的可执行JAR文件,它集成了所有必需的依赖项,可以直接运行,用于处理和解析多种文件类型。 Tika的核心部分是"Tika-Core",它提供了基础的文件类型检测和内容提取功能。而"Poi"是Apache的一个...

    apache-tika-0.8-src.jar

    4. **支持多种解析器(Parser Support)**:Tika集成了多种解析器,如Apache POI(用于处理Microsoft Office文档)、Apache PDFBox(处理PDF文件)和Apache JAF(Java Activation Framework,用于识别MIME类型)等。...

    apache-tika-0.1-incubating-src.tar.gz_垂直搜索引擎

    1. **内容提取**:Tika能够解析多种文件类型,包括PDF、Word文档、Excel表格、图片、音频和视频等,从中提取出纯文本内容。这对于构建搜索引擎或数据分析系统非常有用,因为它们需要能够处理不同格式的数据。 2. **...

    tika读取文件专用包

    这个"tika读取文件专用包"显然包含了Tika项目所需要的各种jar包,这些jar包支持处理多种文件类型,如PDF、DOC、XLS、PPT、HTML、图像等。下面将详细介绍Tika及其在处理不同文件类型时的关键知识点。 1. **Apache ...

    apache中的tika包

    1. **文件解析**:Tika能够处理多种文件格式,如PDF、Microsoft Office文档(Word、Excel、PowerPoint)、HTML、XML、图片、音频和视频等。它通过集成多种解析器库来实现这一点,如Apache POI用于处理Microsoft ...

    Python库 | tika-1.13.tar.gz

    Apache Tika是一个内容分析引擎,主要负责从各种文件中提取结构化信息,如文本、元数据以及文件类型识别。它支持众多文件格式,包括常见的文档(如PDF、Word、Excel)、图像、音频和视频等。Tika的核心在于其解析器...

    tika提取文本内容

    Tika利用Apache的MIME类型识别系统来识别文件类型,并且能够处理大量的文档格式,如PDF、Word、Excel、HTML、XML、图片等。 Tika的核心功能是内容提取,这意味着它可以从不同类型的文件中抽取纯文本,这对于搜索...

    tika0.5基本jar包

    在Java环境中,Tika提供了丰富的API,使得开发者能够轻松地处理各种类型的文件,包括但不限于文档、图片、音频和视频等。"tika0.5基本jar包"就是这个版本的Tika库的集合,包含了运行Tika所需的基本组件。 Tika的...

    springboot+es实现对word,pdf,txt等文件的非结构化数据全文内容检索

    这可能涉及到第三方库,如Apache Tika或PDFBox,它们能解析这些文件并提取文本。 7. **索引数据**:将提取出的文本内容作为`Document`对象的一部分,使用Repository将数据存入Elasticsearch。 8. **全文检索**:...

    java抽取word,pdf的四种武器

    Apache POI处理Word文档,PDFBox专攻PDF,iText则在PDF处理上表现出色,而Tika则作为通用的解析器,能够应对多种文件格式。了解并熟练掌握这些工具,将极大地提高你在文本处理和信息抽取项目中的效率。

    利用TikaAPI解析各种文档

    Tika通过POI解析器,可以从这些文件中提取文本、样式、表格和图像等信息。 在实际应用中,使用Tika API解析文档通常包括以下步骤: 1. 引入Tika库:在项目中添加Tika的依赖,例如在Maven项目中,可以在pom.xml文件...

    custom-detector-tika,.zip

    它使用各种解析器来处理不同类型的文件,如PDF、Word文档、图片等,并且支持XML、JSON和CSV等多种输出格式。 2. **自定义检测器**:在Tika中,用户可以创建自定义的检测器来处理特定的文件类型或数据格式。这可能是...

    Lucene---全文检索(文档pdf/txt/office/html)

    它提供了强大的文本分析和索引能力,支持多种格式的文档,如 PDF、TXT、Office 文件(Word、Excel、PowerPoint)以及 HTML 等。 ### 1. Lucene 的基本概念 - **索引(Index)**: Lucene 首先对文档内容进行分析和...

    gika:包装器 Apache Tika

    - Tika 由多个解析器组成,每个解析器负责处理特定类型的文件格式,如 PDF、Word、HTML、图像等。 - Tika 使用 MediaType 分类来确定哪种解析器最适合处理给定的文件。 - Tika 还集成了许多开放源代码库,如 ...

    lucence7.7.1+tika

    首先,通过Tika解析输入的文件,将非文本内容转化为可搜索的文本,然后利用Lucene建立索引,最后通过Lucene的查询接口进行检索。这样,用户就可以在大量文件中快速找到含有特定关键词的内容。 具体步骤如下: 1. *...

    ingest-attachment-7.16.2

    10. **tika-parsers-1.27.jar**:Apache Tika是一个内容分析工具,能够检测和提取多种文件格式的数据。Tika-Parsers模块包含了处理不同文件类型的具体解析器,如图像、音频、视频等,进一步增强了Elasticsearch处理...

    ingest-attachment-7.6.2.zip

    Ingest Attachment插件是Elasticsearch中用于处理文档附件的重要工具,它允许用户在索引文本之前解析和提取各种文件格式(如PDF、Word文档或图片)的内容。 描述中提到的"elasticsearch预处理器 数据预处理器 我...

    Attachment 实现 全文检索

    Attachment 插件是 Elasticsearch 中的一种插件,允许将各种二进制文件(如PDF、Word文档等)以及它们的内容索引到 Elasticsearch 中。插件使用 Apache Tika 库来解析和提取二进制文件的内容。通过使用 Attachment ...

    es插件之文件抽取插件ingest-attachment

    1. **文件解析**:`ingest-attachment`插件可以识别并解析多种文件类型,将非文本内容转换为可索引的文本格式。 2. **内容提取**:从解析后的文件中提取出关键的文本信息,包括正文、标题、作者等元数据。 3. **数据...

    Java读取文档时可能会用到的jar包

    10. **Apache Tika** - 用于检测和提取多种文件格式中的元数据和结构化文本内容。`tika-parsers.jar`和`tika-core.jar`是主要的jar包,可以解析包括PDF、Word、HTML等多种格式的文档。 在实际项目中,根据需要处理...

Global site tag (gtag.js) - Google Analytics