JAVA提取纯文本_从常见文档中提取纯文本内容 | IT人生录

要想使用Lucene检索office文档(word、excel、ppt等)、PDF、HTML文档,通常的处理策略是先从这些文档中提取出纯文本,然后再进行相关索引处理等。

一、从office中提取纯文本

从office文件中提取纯文本,可以使用POI(http://poi.apache.org/),最新版本为3.8。从office文件中提取纯文本方法很简单。只需要两行代码即可。

POITextExtractor extractor = ExtractorFactory.createExtractor(is);

String contents = extractor.getText();

第一行中传入的is参数为office文件的inputstream。这里不分word、excle还是ppt,不区分03版还是07版,只需要将文件的inputStream传入此方法中。再使用extractor.getText()。得到的即为office文件的纯文本数据。

注意:有时候可能由于文件的源访问,导致提取的纯文本里面有一些特殊字符,可以使用下面的方法过滤掉。

/**

* 过滤特殊字符

*

* @param contents

* @return

*/

public static String filterSpecialChar(String contents) {

contents = contents.replace('\u0003', '\u0000');

contents = contents.replace('\u0004', '\u0000');

contents = contents.replace('\u000b', '\u0000');

contents = contents.replace('\u000c', '\u0000');

contents = contents.replace('\u0007', '\u0000');

contents = contents.replace('\u0008', '\u0000');

contents = contents.replace('\u0013', '\u0000');

contents = contents.replace('\u0014', '\u0000');

contents = contents.replace('\u0015', '\u0000');

contents = contents.replace('\u0016', '\u0000');

contents = contents.replace('\u0020', '\u0000');

return contents;

}

二、从PDF中提取纯文本

从PDF中提取纯文本,可以使用PDFBox组件(http://pdfbox.apache.org/),最新版本为1.7.1。需要的jar包为:pdfbox、fontbox、jempbox等,最好再加上pdfbox-lucene。

如果使用了pdfbox-lucene的包,则不用自己写pdfbox的处理方法,直接调用相关方法(LucenePDFDocument类里面)就行了,这里介绍,如何手写实现,也很简单。

PDDocument pdfDocument = PDDocument.load(is);

if (pdfDocument.isEncrypted()) {

// 仅仅尝试使用默认密码打开加密的PDF

pdfDocument.decrypt("");

}

// 创建一个writer用来作来存储文件正文

StringWriter writer = new StringWriter();

if (stripper == null) {

stripper = new PDFTextStripper();

} else {

stripper.resetEngine();

}

stripper.writeText(pdfDocument, writer);

String contents = writer.getBuffer().toString();

上面is同样为PDF文件的inputStream。下面的contents为提取到的PDF的纯文本内容。

三、从HTML文件中提取正文

从HTML文件中提取正文,简单说就是去除HTML文件中的HTML标签,这处常用的方法有许多,如使用正则表达式、html parse等。这里我们使用JSOUP,这个更方便快捷。可以参考我以前写的一篇文章:使用JSOUP处理HTML文档

在获取到Document之后,使用String text = document.text(); 即可获取到纯文本数据。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值