如何从特定的二进制文件格式中提取文本?

时间:2010-01-15 16:17:08

标签: c# pdf

在.Net中,从几种二进制文件格式中提取所有文本的最佳方法是:PDF,Word,Excel和PowerPoint。

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

代码会很棒,但我真的需要指出一些最佳实践或模式。

5 个答案:

答案 0 :(得分:3)

我很惊讶没有人提到IFilters。 IFilters是Microsoft用于索引Windows中的文档的内容。您需要使用Google搜索来查找您正在寻找的特定格式的IFilter,但您应该找到您需要的大部分内容。但需要注意的是,IFilters并不完美。他们有问题......

这是一篇让你入门的CodProject文章:http://www.codeproject.com/KB/cs/IFilter.aspx

答案 1 :(得分:1)

嗯,和任何其他语言/环境一样:理解文件格式足以提取字符串。

是的,对于许多文件格式,这意味着您应该为该格式编写至少一半的解析器。 PDF特别icky,因为本身没有空格;这只是字形分开多远的惯例;此外,PDF可以包含压缩流,因此只需在文件中搜索可打印的字符串就不会产生任何有价值的内容。

当然,您可以查找已经执行此操作的库或其他工具。我见过一个文档存储库,它只是通过pdf2ascii传递PDF文件并将生成的文本提供给Lucene。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

结帐Apache Tika

它支持:

  1. Microsoft Excel
  2. Microsoft Word
  3. Microsoft PowerPoint
  4. Microsoft Visio
  5. Microsoft Outlook
  6. 可移植文档格式(PDF)
  7. 开放文档
  8. 纯文字
  9. 富文本格式
  10. gzip compression
  11. bzip2压缩
  12. MP3音频
  13. MIDI音频
  14. Wave audio
  15. XML
  16. HTML
  17. Java类文件
  18. Java jar档案
  19. tar archive
  20. ZIP存档

答案 4 :(得分:0)

查看Office Interop using .Net的Office。对于PDF,请参阅here