【问题标题】:How can I extract text from specific binary file formats?如何从特定的二进制文件格式中提取文本?
【发布时间】:2011-01-05 14:13:55
【问题描述】:

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

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

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

【问题讨论】:

  • 我怀疑只有一种方法可以从所有这些中提取文本 - 它们是非常不同的格式。只是一个想法。
  • 使用几个第三方库,并在其周围添加一个漂亮的包装器。

标签: c# pdf


【解决方案1】:

我很惊讶没有人提到IFilters。 IFilters 是 Microsoft 用来在 Windows 中索引文档的工具。您必须进行一些谷歌搜索才能找到您正在寻找的特定格式的 IFilter,但您应该找到大部分您需要的内容。不过需要注意的是,IFilters 并不完美。他们有问题.....

这里有一篇 CodProject 文章可以帮助您入门:http://www.codeproject.com/KB/cs/IFilter.aspx

【讨论】:

  • 旧帖,但谢谢!我找不到从二进制 PDF 中提取文本的有效方法,但 IFilter 可以完美地做到这一点。非常感谢!!!!!!
【解决方案2】:

嗯,与任何其他语言/环境相同:充分了解文件格式以提取字符串。

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      查看Apache Tika

      它支持:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • Office 互操作是否意味着在服务器端使用。我知道 MS 过去对此不以为然。
        猜你喜欢
        • 2016-10-04
        • 1970-01-01
        • 2021-05-09
        • 1970-01-01
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-14
        相关资源
        最近更新 更多