• SpringBoot和Apache tika 实现各种文档内容解析


    一、概述

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

    二、在spring boot 中引入tika的方式解析文档

    1. 引入依赖

      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>org.apache.tikagroupId>
            <artifactId>tika-bomartifactId>
            <version>2.8.0version>
            <type>pomtype>
            <scope>importscope>
          dependency>
        dependencies>
      dependencyManagement>
    
        <dependency>
          <groupId>org.apache.tikagroupId>
          <artifactId>tika-coreartifactId>
        dependency>
        <dependency>
          <groupId>org.apache.tikagroupId>
          <artifactId>tika-parsers-standard-packageartifactId>
        dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    2.创建配置

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

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

    创建配置类MyTikaConfig

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

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

    3.在项目使用

    配置完成后在项目中可以通过注入tika即可完成文档的解析。如下图所示:
    在这里插入图片描述

  • 相关阅读:
    关于webpack(v5.74.0)的钩子在插件中的应用
    java毕业设计人才招聘网源码+lw文档+mybatis+系统+mysql数据库+调试
    ElasticSearch:集群安装
    基础算法|快速排序|AcWing 785. 快速排序|2022-11-19
    Python笔记 · 私有方法、私有属性 & 单下划线、双下划线
    Hadoop的eclipse搭建(客观莫划走,留下来看一眼(适用人群学生初学,其他人看看就行))
    Python中property属性、with语句及上下文管理器使用方法代码
    Linux Shell字符串截取#与%使用
    Element Plus el-select选择框失去焦点blur
    【算法】spfa算法求最短路(没有负环)
  • 原文地址:https://blog.csdn.net/weixin_43114209/article/details/136532476