要想使用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人生录相关推荐

  1. Java使用 PDFBox 2.0 从 PDF 文档中读取所有文本

    在本教程中,我们将学习在 Java 程序中使用 PDFBox 2.0 库从 pdf 文档中读取所有文本. PDF 文档可能包含文本.嵌入图像等作为其内容.PDFBox 中的 PDFTextStripp ...

  2. java中用流提取文档中的文字,语言实现从word文档中提取文本

    word中提取中文 打开Word,CTRL+F打开"查找替换"对话框. 点击下方的"查找替换"对话框的"高级"按钮. 点击"特殊字 ...

  3. Word处理控件Aspose.Words功能演示:用Java从Word文档中提取文本

    Aspose.Words For .NET是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsof ...

  4. java imageio删除图片_Java 提取、替换、删除PDF文档中的图片

    在一篇文章里,配有与文本信息相得益彰的图片,不仅能够活跃与美化版面,同时也有利于提高文章的可读性和阅读效果,从而增强其吸引力.同时,对文档中已存在图片的处理也尤为重要.本文将通过使用Java程序来演示 ...

  5. Word处理控件Aspose.Words功能演示:从 Java 中的 Word 文档中提取图像

    图像通常用于表示 Word 文档中的重要信息.在文本旁边包含图像使内容更具吸引力.在某些情况下,您可能需要以编程方式提取嵌入在 Word 文档中的图像.为此,本文介绍了如何使用 Java 从 Word ...

  6. php 提取文字,如何使用PHP从word文档中提取文本内容?

    我想用PHP从word文档中提取文本内容. 我在Microsoft Word for Mac 2011中创建了一个新的单词文档. 编辑:也通过在Windows 7中的Microsoft Word中创建 ...

  7. Word处理控件Aspose.Words功能演示:在 C# 中从 Word 文档中提取文本

    从 Word 文档中提取文本通常在不同的场景中执行.例如,分析文本,提取文档的特定部分并将它们组合成单个文档,等等.在本文中,您将学习如何使用 C# 以编程方式从 Word 文档中提取文本.此外,我们 ...

  8. [翻译] DTCoreText 从HTML文档中创建富文本

    DTCoreText 从HTML文档中创建富文本 https://github.com/Cocoanetics/DTCoreText 注意哦亲,DTRichTextEditor 这个组件是收费的,不贵 ...

  9. 如何(以及为什么)在Word文档中使用隐藏文本

    Word lets you hide text so you can read or print your document as if the text isn't there. This migh ...

  10. 9款免费的OCR工具,从扫描的PDF文档中提取文字

    Windows 10有OCR吗? Windows 10 具有适用于所有应用程序的内置OCR服务. 令人惊讶的是,这是Windows搜索工具. 查看如何使用它: 步骤 1. 打开您要扫描的照片.PDF或 ...

最新文章

  1. 启动mysql服务是报错找不到pid_mysql报错 The server quit without updating PID file
  2. numpy中的matrix矩阵处理
  3. HTMLTestRunner加入logging输出
  4. Shiro的Base64和MD5加密的使用
  5. python定时器5秒执行一次_PLC编程之“自切断”定时器
  6. pl/sql developer 安装svn插件 64位
  7. 60-10-040-命令-数据的路径间迁移kafka-reassign-partitions.sh
  8. eclipse ADT
  9. Javaweb安装教程
  10. 计算机字体库位置,电脑cad软件字体库的路径怎么添加
  11. RetinaFace论文解读 --- RetinaFace: Single-stage Dense Face Localisation in the Wild
  12. 关于解决windows10和ubuntu18.04.2 双系统时win10时间不对的问题
  13. Java 程序员常用资源网站集合
  14. 【成功解决】运行qt生成的.exe文件报“无法找到入口”的问题
  15. Masm 如何调试汇编代码
  16. 中关村硬科技孵化器首次合作建科技成果转化创新平台
  17. 64位电脑安装32位系统不能引导启动
  18. Java web实现百度地图导航
  19. 用bridge创建虚拟网桥
  20. CSS鼠标滑过div上移效果

热门文章

  1. linux下Unison安装
  2. linux格式化后恢复 vmdk恢复,根据flat.vmdk文件恢复磁盘(完善版)
  3. 上班可明目张胆摸鱼玩的游戏(这谁能看出是在玩游戏)
  4. 六十星系之03廉贞天府坐辰戌
  5. ME525 刷机历险记
  6. VMware下如何虚拟软盘启动
  7. 王者荣耀战区在线查询_王者战力查询工具
  8. c# wpf 利用截屏键实现截屏功能
  9. win7快捷方式去箭头_学会WIN+R,你的桌面再不需要快捷方式!
  10. POM 标签大全详解