在.Net中,从多种二进制文件格式中提取所有文本的最佳方式是:PDF,Word,Excel和PowerPoint。如何从特定的二进制文件格式中提取文本?
它不需要格式化,只是文件中文本的大转储。
代码会很好,但我真的只需要指出一些最佳实践或模式就可以了。
在.Net中,从多种二进制文件格式中提取所有文本的最佳方式是:PDF,Word,Excel和PowerPoint。如何从特定的二进制文件格式中提取文本?
它不需要格式化,只是文件中文本的大转储。
代码会很好,但我真的只需要指出一些最佳实践或模式就可以了。
好吧,就像在任何其他语言/环境中一样:理解足以提取字符串的文件格式。
是的,对于许多文件格式,这意味着您应该至少为该格式编写一半的解析器。由于本身没有空格,因此PDF尤其恶心。这只是一个约定字形有多大的距离;此外,PDF可以包含压缩流,因此只需在文件中搜索可打印的字符串就不会产生任何有价值的内容。
当然,你可以寻找一个库或其他已经这样做的工具。我见过一个文档仓库,它只是通过pdf2ascii传递PDF文件,并将结果文本提供给Lucene。
您可能需要实现不同的方式来处理每种文件类型。有很多示例代码可以读取这些格式,使用office interop等。然后,您可以编写一个方法,查看前几个字节以确定文档的格式或扩展名,并将其发送到特定这种类型的文件的阅读器。
调查办公室的Office Interop using .Net。有关PDF,请参见here。
Office Interop是否意味着用于服务器端。我知道MS过去对此不以为然。 – Deane 2010-01-15 16:32:03
我很惊讶没有人提到IFilters。 IFilters是Microsoft用来在Windows中索引文档的东西。您必须执行一些搜索以查找您要查找的特定格式的IFilters,但您应该找到所需的大部分内容。尽管如此,IFilters并不完美。他们有问题.....
这里有一个CodProject文章,让你开始:http://www.codeproject.com/KB/cs/IFilter.aspx
旧帖子,但谢谢!我找不到从二进制PDF中提取文本的有效方法,但IFilter完美地完成了这个技巧。非常感谢!!!!!! – Farray 2010-10-28 19:53:22
退房Apache Tika。
它支持:
我怀疑有一个单一的方法,从所有的提取文本 - 他们是非常不同的格式。只是一个想法。 – 2010-01-15 16:20:35
使用多个第三方库,并添加一个很好的包装。 – 2010-01-15 16:21:38