• 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即可完成文档的解析。如下图所示:

    图片

  • 相关阅读:
    DAC测试实验——FPGA学习笔记7
    最新消息!2022年全国大学生数学建模竞赛评阅要点发布
    mysql两阶段提交
    Python语言程序设计 习题7
    【算法题解】拓扑序计数+树形DP
    计算机毕业设计(附源码)python中小型企业工作日志管理系统APP
    Java8实战-总结37
    【Leetcode】链表排序(逐步提高时空复杂度)
    【操作系统笔记】进程和线程
    61-Java-分布式开发框架Dubbo
  • 原文地址:https://blog.csdn.net/m0_69632475/article/details/136476078