2010-01-15 41 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檔案
相關問題