2009-01-21 125 views
7

我正在開發一個使用VB9(VS2008)和Lucene.NET的桌面搜索引擎。 Lucene.NET中的索引器只接受原始文本數據,不可能直接從Microsoft Office(DOC,DOCX,PPT,PPTX)和PDF文檔中提取原始文本。 從這些文件中提取原始文本數據的最佳方式是什麼?什麼是解析Microsoft Office和PDF文檔的最佳方式?

回答

2

我只能說說這裏MS Office文檔。有幾種方法可以做到這一點:

  • 使用COM自動化
  • 使用轉換器,輸出的文檔更易於使用的格式
  • 使用第三方庫
  • 使用微軟的OpenXML的SDK

COM自動化的缺點是不總是可靠的,主要是因爲應用程序往往會因模態彈出對話框而掛起。

轉換器可用於Word。您可以查看Microsoft提供的文本轉換器SDK,這將允許您在獨立應用程序中使用隨Word附帶的文檔轉換器。需要一些C編碼,但由於您使用的是與Office相同的轉換引擎,因此您將獲得高保真度的結果。該SDK可以從http://support.microsoft.com/kb/111716獲得。

對於使用第三方庫的第三種選擇,您可能想看看Apache POI或SourceForge上的b2xtranslator project。後者提供了一個C#庫,它允許您從二進制Word文檔中提取文本。 PowerPoint的開發仍然處於早期的體育場,但文本提取應該已經有效。

最後一個選擇是使用微軟的OpenXML SDK。這可能是首選/最簡單的方法。搜索Google樣本。

字:

"C:\Program Files\Microsoft Office\Office12\wordconv.exe" -oice -nme <input file> <output file> 

Excel中:

"C:\Program Files\Microsoft Office\Office12\excelcnv.exe" -oice <input file> <output file> 

PowerPoint演示:

您還可以通過使用Office兼容包(下載並安裝Microsoft)首先把它們處理二進制文件
"C:\Program Files\Microsoft Office\Office12\ppcnvcom.exe" -oice <input file> <output file> 
2

對於PDF,您可以使用我公司的.NET PDF Reader組件fe atures文本提取。

這就是你寫的提取從PDF文本代碼:

public String ReadTextFromPages(Stream s) 
{ 
    using (PdfTextDocument doc = new PdfTextDocument(s)) 
    { 
     PdfTextReader rdr = doc.GetPdfTextReader(); 
     return rdr.ReadToEnd(); 
    } 
} 
相關問題