Кой е най-добрият начин за анализиране на Microsoft Office и PDF документи?

Разработвам търсачка за настолен компютър, използвайки VB9 (VS2008) и Lucene.NET. Индексаторът в Lucene.NET приема само необработени текстови данни и не е възможно директно извличане на необработен текст от Microsoft Office (DOC, DOCX, PPT, PPTX) и PDF документи. Кой е най-добрият начин за извличане на необработени текстови данни от такива файлове?


person user57175    schedule 21.01.2009    source източник


Отговори (3)


Можете, подобно на Windows Desktop Search, да използвате компоненти, внедряващи интерфейса IFilter.

person David Tischler    schedule 21.01.2009
comment
Ако мога само да добавя към това - за любовта към всичко свято, използвайте FoxIt PDF IFilter. 32-битовата версия е безплатна. Той е много по-бърз и по-стабилен от този на Adobe. foxitsoftware.com/pdf/ifilter/index.html. - person Ryan Ische; 09.04.2009

Тук мога да говоря само за MS Office документи. Има няколко начина да направите това:

  • Използване на COM автоматизация
  • Използване на конвертори, които извеждат документа в по-достъпен формат
  • Използване на библиотеки на трети страни
  • Използване на OpenXML SDK на Microsoft

COM автоматизацията има недостатъка, че не винаги е надеждна, главно защото приложенията са склонни да висят поради модални изскачащи диалогови прозорци.

Налични са конвертори за Word. Можете да проверите SDK за преобразуване на текст, наличен от Microsoft, който ще ви позволи да използвате преобразувателите на документи, идващи с Word, в самостоятелно приложение. Изисква малко C кодиране, но тъй като използвате същите машини за преобразуване като Office, ще получите резултати с висока точност. SDK може да бъде получен от http://support.microsoft.com/kb/111716.

За третата опция, използваща библиотеки на трети страни, може да искате да погледнете Apache POI или проекта b2xtranslator на SourceForge. Последният предоставя C# библиотека, която ви позволява да извличате текста от двоични документи на Word. Разработката на PowerPoint все още е в ранен стадий, но извличането на текст трябва вече да работи.

Последната опция би била да използвате OpenXML SDK на Microsoft. Това може да е предпочитаният/най-лесният начин. Потърсете мостри в Google. Можете също така да обработвате двоични документи, като първо ги конвертирате с помощта на Office Compatibility Pack (изтеглете и инсталирайте от Microsoft):

дума:

"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>
person Dirk Vollmar    schedule 21.01.2009

За PDF можете да използвате компонента .NET PDF Reader на моята компания, който включва извличане на текст.

Това е точно кодът, който пишете, за да извлечете текста от PDF:

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