2009-01-21 9 views
7

Je développe un moteur de recherche de bureau en utilisant VB9 (VS2008) et Lucene.NET. L'indexeur dans Lucene.NET accepte uniquement les données textuelles brutes et il n'est pas possible d'extraire directement du texte brut à partir d'un document Microsoft Office (DOC, DOCX, PPT, PPTX) et PDF. Quelle est la meilleure façon d'extraire des données de texte brutes à partir de ces fichiers?Quelle est la meilleure façon d'analyser les documents Microsoft Office et PDF?

Répondre

2

Je ne peux parler de documents MS Office ici. Il y a plusieurs façons de le faire:

  • Utiliser l'automatisation COM
  • En utilisant des convertisseurs dont la sortie le document dans un format plus accessible
  • Utilisation des bibliothèques 3e partie
  • Utilisation de Microsoft OpenXML SDK

L'automatisation COM présente l'inconvénient de ne pas toujours être fiable, principalement parce que les applications ont tendance à se bloquer en raison des boîtes de dialogue contextuelles modales.

Les convertisseurs sont disponibles pour Word. Vous pouvez consulter le SDK Text Converter disponible auprès de Microsoft, ce qui vous permettra d'utiliser les convertisseurs de documents fournis avec Word dans une application autonome. Nécessite un codage C mais puisque vous utilisez les mêmes moteurs de conversion qu'Office vous obtiendrez des résultats de haute fidélité. Le SDK peut être obtenu auprès de http://support.microsoft.com/kb/111716. Pour la troisième option utilisant des bibliothèques tierces, vous pouvez jeter un oeil à POI Apache ou b2xtranslator project sur SourceForge. Ce dernier fournit une bibliothèque C# qui vous permet d'extraire le texte à partir de documents Word binaires. Le développement PowerPoint est encore dans un stade précoce, mais l'extraction de texte devrait déjà fonctionner.

La dernière option serait d'utiliser Microsoft OpenXML SDK. Cela pourrait être le moyen préféré/le plus facile. Recherche Google pour des échantillons. Vous pouvez également gérer des documents binaires d'abord les convertir en utilisant le Pack de compatibilité Office (télécharger et installer à partir de Microsoft):

Mot:

"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

Pour PDF, vous pouvez utiliser le composant .NET PDF Reader de ma société extraction de texte atures.

C'est exactement le code que vous écrivez pour extraire le texte d'un PDF:

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