2024年5月4日发(作者:)
.net 下如何将文档文件(Word, Pdf等) 中的文本提取出来 - eaglet - 博客园
经常有人问我怎么将类似word,pdf这样的文档转换为文本然后索引,.net 这方面的解决
方案不是很多,为了方便大家,我花了一天时间自己做了一个。
Java 版本的 lucence 提供了一个 tika 的工具用于将 word, excel, pdf 等文档转换为文本,
然后进行索引。但这个工具没有 .net 版本,要在 .net 下用,需要用 ,很麻烦。而且
这个工具实际上底层是调用 POI 和 PDFParse 来转换的。从网上搜索到的信息看,POI 对 office
2007 以上版本的文档处理有问题,不知道最新版本是否解决了,我没有试过。 PDFParse 这个
东西,我用过 .net 版本,对中文不支持,不知道 Java 版本是否支持。
其实 .net 下完全不需要用这些开源解决方案来解决,因为微软提供了一个官方的解决方
案,这个解决方案叫 IFilter,这个过滤器是为 SQL SERVER 的全文索引设计的,但第三方软件
可以调用API来完成文档的提取工作。
为了方便大家,我把 IFilter 转换的功能封装到了一个开源的组件中去,大家可以到下面地
址去下载源码:HBTextParse.
调用很简单:
这个是提取文件中的文本到字符串的代码
if (alog() == ) { //要转换的文件
= me; //实例化 TextParse ,传入要转换的
文件路径 TextParse textParse = new TextParse(); //提取文件中
的文本,并输出 = tToString(); }
这个是将文件转换为文本文件的代码:
if (alog() == ) { try { //实例化
TextParse,传入要转换的文件的路径 TextParse textParse = new
TextParse(); //将文件转换到 me 指定
的文本文件中 tToFile(me); } catch
(Exception ex) { (e, "Error", ,
); } }
要注意的问题是提取 Pdf 文档,如果机器是 64为操作系统,必须要安装Adobe PDF
iFilter 9 for 64-bit platforms. 否则会报异常。这个问题我搞了将近一天才搞定。
支持的文档类型:
目前这个组件可以支持所有 Microsoft office 提供的文档类型,包括 *.rtf, *.doc, *.docx,
*.xls, *.xlsx, *.ppt, *.pptx 等等
除了微软Office的文档外,还可以转换
• html 文档:可以把html文档中的文本提取出来(不包含标签)
• Pdf 文档:我测试过,对中文支持没有问题
• Txt 文档
这个代码的核心部分是一个叫 FilterCode 的类。这个类是从/
发布者:admin,转转请注明出处:http://www.yc00.com/web/1714753354a2508953.html
评论列表(0条)