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(); 即可獲取到純文本數據。
總結
以上是生活随笔為你收集整理的JAVA提取纯文本_从常见文档中提取纯文本内容 | IT人生录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2010年计算语言学分词作业——采用二元
- 下一篇: 前端实现视频录制功能