2009-01-21 17 views
7

Estoy desarrollando un motor de búsqueda de escritorio usando VB9 (VS2008) y Lucene.NET. El indexador en Lucene.NET solo acepta datos de texto sin formato y no es posible extraer directamente el texto sin formato de un documento de Microsoft Office (DOC, DOCX, PPT, PPTX) y PDF. ¿Cuál es la mejor forma de extraer datos de texto sin formato de dichos archivos?¿Cuál es la mejor manera de analizar documentos de Microsoft Office y PDF?

Respuesta

2

sólo puedo hablar de documentos de MS Office aquí. Hay varias maneras de hacer esto:

  • El uso de la automatización COM
  • El uso de convertidores que la producción del documento en un formato más accesible
  • El uso de las bibliotecas 3 ª parte
  • El uso de OpenXML SDK de Microsoft

La automatización COM tiene la desventaja de que no siempre es confiable, principalmente porque las aplicaciones tienden a bloquearse debido a los diálogos emergentes modales.

Los convertidores están disponibles para Word. Puede consultar el Text Converter SDK disponible de Microsoft que le permitiría usar los convertidores de documentos que vienen con Word en una aplicación independiente. Requiere un poco de código C, pero ya que está utilizando los mismos motores de conversión que Office obtendrá resultados de alta fidelidad. El SDK se puede obtener de http://support.microsoft.com/kb/111716.

Para la tercera opción que utiliza bibliotecas de terceros es posible que desee echar un vistazo a Apache POI o b2xtranslator project en SourceForge. Este último proporciona una biblioteca C# que le permite extraer el texto de documentos binarios de Word. El desarrollo de PowerPoint todavía está en un estadio temprano, pero la extracción de texto ya debería estar funcionando.

La última opción sería utilizar el SDK OpenXML de Microsoft. Esta podría ser la forma preferida/más fácil. Busque muestras en Google. También podría manejar documentos binarios convirtiendo en primer lugar utilizando el paquete de compatibilidad de Office (descargar e instalar desde Microsoft):

Palabra:

"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

Para PDF puede usar el componente .NET PDF Reader de mi compañía que fe atures extracción de texto.

Este es exactamente el código que escriba para extraer el texto de un PDF:

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