2010-01-15 44 views
1

在.Net中,从多种二进制文件格式中提取所有文本的最佳方式是:PDF,Word,Excel和PowerPoint。如何从特定的二进制文件格式中提取文本?

它不需要格式化,只是文件中文本的大转储。

代码会很好,但我真的只需要指出一些最佳实践或模式就可以了。

+2

我怀疑有一个单一的方法,从所有的提取文本 - 他们是非常不同的格式。只是一个想法。 – 2010-01-15 16:20:35

+5

使用多个第三方库,并添加一个很好的包装。 – 2010-01-15 16:21:38

回答

1

好吧,就像在任何其他语言/环境中一样:理解足以提取字符串的文件格式。

是的,对于许多文件格式,这意味着您应该至少为该格式编写一半的解析器。由于本身没有空格,因此PDF尤其恶心。这只是一个约定字形有多大的距离;此外,PDF可以包含压缩流,因此只需在文件中搜索可打印的字符串就不会产生任何有价值的内容。

当然,你可以寻找一个库或其他已经这样做的工具。我见过一个文档仓库,它只是通过pdf2ascii传递PDF文件,并将结果文本提供给Lucene。

1

您可能需要实现不同的方式来处理每种文件类型。有很多示例代码可以读取这些格式,使用office interop等。然后,您可以编写一个方法,查看前几个字节以确定文档的格式或扩展名,并将其发送到特定这种类型的文件的阅读器。

0

调查办公室的Office Interop using .Net。有关PDF,请参见here

+0

Office Interop是否意味着用于服务器端。我知道MS过去对此不以为然。 – Deane 2010-01-15 16:32:03

3

我很惊讶没有人提到IFilters。 IFilters是Microsoft用来在Windows中索引文档的东西。您必须执行一些搜索以查找您要查找的特定格式的IFilters,但您应该找到所需的大部分内容。尽管如此,IFilters并不完美。他们有问题.....

这里有一个CodProject文章,让你开始:http://www.codeproject.com/KB/cs/IFilter.aspx

+0

旧帖子,但谢谢!我找不到从二进制PDF中提取文本的有效方法,但IFilter完美地完成了这个技巧。非常感谢!!!!!! – Farray 2010-10-28 19:53:22

1

退房Apache Tika

它支持:

  1. Microsoft Excel中
  2. Microsoft Word中
  3. 的Microsoft PowerPoint
  4. 的Microsoft Visio
  5. 的Microsoft Outlook
  6. 可移植文档格式(PDF)
  7. OpenDocument的
  8. 纯文本
  9. RTF格式
  10. gzip压缩
  11. 的bzip2压缩
  12. MP3音频
  13. MIDI音频
  14. 波形音频
  15. XML
  16. HTML
  17. Java类文件
  18. J AVA JAR档案
  19. tar归档
  20. ZIP档案
相关问题