什么是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);
}
}
}
支持解析模块
版权归原作者 又是努力搬砖的一年 所有, 如有侵权,请联系我们删除。