2009-01-21 15 views
7

Tôi đang phát triển Công cụ Tìm kiếm Máy tính để bàn bằng cách sử dụng VB9 (VS2008) và Lucene.NET. Chỉ mục trong Lucene.NET chỉ chấp nhận dữ liệu văn bản thô và không thể trích xuất trực tiếp văn bản thô từ tài liệu Microsoft Office (DOC, DOCX, PPT, PPTX) và PDF. Cách tốt nhất để trích xuất dữ liệu văn bản thô từ các tệp như vậy là gì?Cách tốt nhất để phân tích cú pháp tài liệu Microsoft Office và PDF là gì?

Trả lời

6

Bạn có thể, giống như Windows Desktop Search, sử dụng các thành phần triển khai giao diện IFilter.

+0

Nếu tôi chỉ có thể thêm vào này - cho tình yêu của tất cả những gì là thiêng liêng, sử dụng Foxit PDF IFilter. Phiên bản 32 bit là miễn phí. Nó nhanh hơn và ổn định hơn so với Adobe. http://www.foxitsoftware.com/pdf/ifilter/index.html. –

2

Tôi chỉ có thể nói về MS Office tài liệu ở đây. Có một số cách để làm điều này:

  • Sử dụng COM tự động hóa
  • Sử dụng bộ chuyển đổi đó sản lượng tài liệu trong một định dạng dễ tiếp cận hơn
  • Sử dụng thư viện của bên thứ 3
  • Sử dụng của Microsoft OpenXML SDK

Tự động hóa COM có những bất lợi khi không phải lúc nào cũng đáng tin cậy, chủ yếu là do các ứng dụng có xu hướng bị treo do các hộp thoại bật lên phương thức.

Trình chuyển đổi khả dụng cho Word. Bạn có thể kiểm tra SDK chuyển đổi văn bản có sẵn từ Microsoft, cho phép bạn sử dụng trình chuyển đổi tài liệu đi kèm với Word trong một ứng dụng độc lập. Yêu cầu một số mã hóa C nhưng vì bạn đang sử dụng các công cụ chuyển đổi giống như Office, bạn sẽ nhận được kết quả có độ trung thực cao. SDK có thể được lấy từ http://support.microsoft.com/kb/111716.

Đối với tùy chọn thứ ba sử dụng thư viện của bên thứ ba, bạn có thể muốn xem Apache POI hoặc b2xtranslator project trên SourceForge. Sau này cung cấp một thư viện C# cho phép bạn trích xuất văn bản từ các tài liệu Word nhị phân. PowerPoint phát triển vẫn còn trong một sân vận động đầu nhưng khai thác văn bản nên đã được làm việc.

Tùy chọn cuối cùng sẽ là sử dụng SDK OpenXML của Microsoft. Đây có thể là cách ưa thích/dễ dàng nhất. Tìm kiếm mẫu của Google. Bạn cũng có thể xử lý các văn bản nhị phân bằng cách đầu tiên chuyển đổi chúng bằng cách sử dụng Office Compatibility Pack (tải về và cài đặt từ Microsoft):

Lời:

"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:

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

Đối với PDF, bạn có thể sử dụng thành phần .NET PDF Reader của công ty tôi atures văn bản khai thác.

Đây chính là mã bạn viết để trích xuất văn bản từ PDF:

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