Как лучше всего анализировать документы Microsoft Office и PDF? - PullRequest
7 голосов
/ 21 января 2009

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

Ответы [ 3 ]

6 голосов
/ 21 января 2009

Вы, как и Windows Desktop Search, можете использовать компоненты, реализующие интерфейс IFilter.

2 голосов
/ 21 января 2009

Для PDF вы можете использовать компонент .NET PDF Reader моей компании с функцией извлечения текста.

Это именно тот код, который вы пишете для извлечения текста из PDF:

public String ReadTextFromPages(Stream s)
{
    using (PdfTextDocument doc = new PdfTextDocument(s))
    {
        PdfTextReader rdr = doc.GetPdfTextReader();
        return rdr.ReadToEnd();
     }
}
2 голосов
/ 21 января 2009

Я могу говорить только о документах MS Office здесь. Есть несколько способов сделать это:

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

Недостатком автоматизации COM является то, что она не всегда надежна, главным образом потому, что приложения обычно зависают из-за модальных всплывающих диалогов.

Конвертеры доступны для Word. Вы можете ознакомиться с пакетом Text Converter SDK от Microsoft, который позволит вам использовать конвертеры документов, поставляемые с Word, в автономном приложении. Требует некоторого C-кодирования, но поскольку вы используете те же механизмы преобразования, что и Office, вы получите высококачественные результаты. SDK можно получить из http://support.microsoft.com/kb/111716.

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

Последний вариант - использовать Microsoft OpenXML SDK. Это может быть предпочтительным / самым простым способом. Ищите в Google образцы. Вы также можете обрабатывать двоичные документы, предварительно преобразовав их с помощью пакета обеспечения совместимости Office (загрузить и установить из 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>
...