当前位置:首页 » 《我的小黑屋》 » 正文

Apache Tika 实现Pdf、docx、xml等文件内容提取

16 人参与  2024年11月05日 12:02  分类 : 《我的小黑屋》  评论

点击全文阅读


什么是Apache Tika?

Apache Tika是一个用于从各种文件格式中检索文档类型和内容的库。在内部,Tika使用现有的各种文档解析器和文档类型检测技术来检测和提取数据。使用Tika,可以开发通用类型检测器和内容提取器,以在一定程度上提取结构化文本以及来自不同类型文档的元数据,例如电子表格,文本文档,图像,PDF甚至多媒体输入格式。Tika提供了一个通用的API来解析不同的文件格式。 它为每种文档类型使用现有的专用解析器库。

支持得格式

文件格式

包库

蒂卡班

XML

org.apache.tika.parser.xml

XMLParser

HTML

org.apache.tika.parser.html它使用了Tagsoup Library

HtmlParser

MS-Office复合文档Ole2到2007年ooxml 2007年起

org.apache.tika.parser.microsoft

org.apache.tika.parser.microsoft.ooxml,它使用Apache Poi库

OfficeParser(OLE2)

OOXMLParser(ooxml)

OpenDocument格式openoffice

org.apache.tika.parser.odf

OpenOfficeParser

便携式文件格式(PDF)

org.apache.tika.parser.pdf和这个包使用Apache PdfBox库

PDFParser

电子出版物格式(数字图书)

org.apache.tika.parser.epub

EpubParser

富文本格式

org.apache.tika.parser.rtf

RTFParser

压缩和包装格式

org.apache.tika.parser.pkg和这个包使用Common压缩库

PackageParser和CompressorParser及其子类

文字格式

org.apache.tika.parser.txt

TXTParser

Feed和联合格式

org.apache.tika.parser.feed

FeedParser

音频格式

org.apache.tika.parser.audio和org.apache.tika.parser.mp3

AudioParser MidiParser Mp3-适用于mp3parser

Imageparsers

org.apache.tika.parser.jpeg

JpegParser-用于jpeg图像

Videoformats

org.apache.tika.parser.mp4和org.apache.tika.parser.video这个解析器在内部使用简单算法来解析flash视频格式

Mp4parser FlvParser

java类文件和jar文件

org.apache.tika.parser.asm

ClassParser CompressorParser

Mobxformat(电子邮件)

org.apache.tika.parser.mbox

MobXParser

Cad格式

org.apache.tika.parser.dwg

DWGParser

FontFormats

org.apache.tika.parser.font

TrueTypeParser

可执行程序和库

org.apache.tika.parser.executable

ExecutableParser

解析器

public interface Parser extends Serializable {    Set<MediaType> getSupportedTypes(ParseContext var1);    void parse(InputStream var1, ContentHandler var2, Metadata var3, ParseContext var4) throws IOException, SAXException, TikaException;}

接口说明

参数

说明

InputStream

待解析的文档,以字节流形式传入,可以避免tika占用太多内存

ContentHandler

内容处理器,用来收集结果,Tika会将解析结果包装成XHTML SAX event进行分发,通过ContentHandler处理这些event就可以得到文本内容和其他有用的信息

Metadata

元数据,既是输入也是输出,可以将文件名或者可能的文件类型传入,tika解析时可以根据这些信息判断文件类型,再调用相应的解析器进行处理;另外,tika也会将一些额外的信息保存到Metadata中,如文件修改日期,作者,编辑工具等

ParseContext

解析上下文,用来控制解析过程,比如是否提取Office文档里面的宏等

tika的解析类的相关接口和类的UML模型

SpringBoot集成简单使用

添加依赖

        <dependency>            <groupId>org.apache.tika</groupId>            <artifactId>tika-core</artifactId>            <version>2.8.0</version>        </dependency>        <dependency>            <groupId>org.apache.tika</groupId>            <artifactId>tika-parsers-standard-package</artifactId>            <version>2.8.0</version>        </dependency>        <dependency>            <groupId>commons-io</groupId>            <artifactId>commons-io</artifactId>            <version>2.11.0</version> <!-- 请根据需要选择合适的版本 -->        </dependency>

简单使用

public class TikiService {    public static void main(String[] args) throws Exception {        //创建解析器--在不确定文档类型时候可以选择使用AutoDetectParser可以自动检测一个最合适的解析器        //如果确定可以使用确定的一个        //PDFParser pdfParser = new PDFParser();        //XMLParser xmlParser = new XMLParser();        //OfficeParser officeParser = new OfficeParser();        //........................        Parser parser = new AutoDetectParser();        //用于捕获文档提取的文本内容。-1 参数表示使用无限缓冲区,解析到的内容通过此hander获取        BodyContentHandler bodyContentHandler = new BodyContentHandler(-1);        //元数据对象,它在解析器中传递元数据属性---可以获取文档属性        Metadata metadata = new Metadata();        //带有上下文相关信息的ParseContext实例,用于自定义解析过程。        ParseContext parseContext = new ParseContext();                File file = new File("C:\\Users\\cc\\study\\12.docx");        FileInputStream fileInputStream = new FileInputStream(file);        parser.parse(fileInputStream,bodyContentHandler,metadata,parseContext);        //获取文本        System.out.println(bodyContentHandler.toString());        //元数据信息        String[] names = metadata.names();        for (String name : names) {            System.out.println(name);        }    }}

支持解析模块


点击全文阅读


本文链接:http://zhangshiyu.com/post/182707.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1