当前位置:   article > 正文

SpringBoot + Apache tika 轻松实现各种文档内容解析

SpringBoot + Apache tika 轻松实现各种文档内容解析

Apache tika是Apache开源的一个文档解析工具。Apache Tika可以解析和提取一千多种不同的文件类型(如PPT、XLS和PDF)的内容和格式,并且Apache Tika提供了多种使用方式,既可以使用图形化操作页面(tika-app),又可以独立部署(tika-server)通过接口调用,还可以引入到项目中使用。

本文演示在spring boot 中引入tika的方式解析文档。如下:

引入依赖

在spring boot 项目中引入如下依赖:

  1.   <dependencyManagement>
  2.     <dependencies>
  3.       <dependency>
  4.         <groupId>org.apache.tika</groupId>
  5.         <artifactId>tika-bom</artifactId>
  6.         <version>2.8.0</version>
  7.         <type>pom</type>
  8.         <scope>import</scope>
  9.       </dependency>
  10.     </dependencies>
  11.   </dependencyManagement>
  12.     <dependency>
  13.       <groupId>org.apache.tika</groupId>
  14.       <artifactId>tika-core</artifactId>
  15.     </dependency>
  16.     <dependency>
  17.       <groupId>org.apache.tika</groupId>
  18.       <artifactId>tika-parsers-standard-package</artifactId>
  19.     </dependency>

创建配置

将tika-config.xml文件放在resources目录下。tika-config.xml文件的内容如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <properties>
  3.     <encodingDetectors>
  4.         <encodingDetector class="org.apache.tika.parser.html.HtmlEncodingDetector">
  5.             <params>
  6.                 <param name="markLimit" type="int">64000</param>
  7.             </params>
  8.         </encodingDetector>
  9.         <encodingDetector class="org.apache.tika.parser.txt.UniversalEncodingDetector">
  10.             <params>
  11.                 <param name="markLimit" type="int">64001</param>
  12.             </params>
  13.         </encodingDetector>
  14.         <encodingDetector class="org.apache.tika.parser.txt.Icu4jEncodingDetector">
  15.             <params>
  16.                 <param name="markLimit" type="int">64002</param>
  17.             </params>
  18.         </encodingDetector>
  19.     </encodingDetectors>
  20. </properties>

创建配置类MyTikaConfig

  1. import java.io.IOException;
  2. import java.io.InputStream;
  3. import org.apache.tika.Tika;
  4. import org.apache.tika.config.TikaConfig;
  5. import org.apache.tika.detect.Detector;
  6. import org.apache.tika.exception.TikaException;
  7. import org.apache.tika.parser.AutoDetectParser;
  8. import org.apache.tika.parser.Parser;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.context.annotation.Bean;
  11. import org.springframework.context.annotation.Configuration;
  12. import org.springframework.core.io.Resource;
  13. import org.springframework.core.io.ResourceLoader;
  14. import org.xml.sax.SAXException;
  15. /**
  16.  * tika配置类
  17.  */
  18. @Configuration
  19. public class MyTikaConfig {
  20.     @Autowired
  21.     private ResourceLoader resourceLoader;
  22.     @Bean
  23.     public Tika tika() throws TikaException, IOException, SAXException {
  24.         Resource resource = resourceLoader.getResource("classpath:tika-config.xml");
  25.         InputStream inputStream = resource.getInputStream();
  26.         TikaConfig config = new TikaConfig(inputStream);
  27.         Detector detector = config.getDetector();
  28.         Parser autoDetectParser = new AutoDetectParser(config);
  29.         return new Tika(detector, autoDetectParser);
  30.     }
  31. }

Tika类中提供了文芳detect、translate和parse功能, 在项目中通过注入TIka, 就可以使用了

在项目使用

配置完成后在项目中可以通过注入TIka即可完成文档的解析。如下图所示:

图片

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/199222
推荐阅读
相关标签
  

闽ICP备14008679号