2010-11-24 30 views
8

que reciben documentos de texto con formateo específico correspondiente a los datos que hay en ellos. Por ejemplo, todos los encabezados tienen exactamente el mismo formato (Times New Roman-Font 14-Bold).mejor manera de procesar un documento de Word

¿Cuál es la mejor manera de procesar dichos documentos de MS Word (.doc o .docx) en documentos xml? El lenguaje no es un problema (¡usaré Lisp/Boost.Spirit si tengo que hacerlo!).

+0

Podría explicar cómo se generan los elementos XML de los documentos de Word? Si se basa exclusivamente en texto, trataría primero de convertirlos en texto sin formato. –

+0

Ver http://bytes.com/topic/python/answers/24103-parsing-ms-word-document –

+0

Ver http: // stackoverflow.com/questions/125222/extracting-text-from-ms-word-files-in-python – fmark

Respuesta

1

Usó una búsqueda condicional muy ineficiente en VBA para copiar literalmente el documento en un segundo documento. El segundo documento se guardó con una extensión .xml. Hice el trabajo, pero es feo.

2

Creo que está diciendo que la estructura del documento está codificada en el formato y que desea producir archivos XML que capturen esa estructura, manteniendo el contenido en texto sin formato.

Si es así, deberá analizar los documentos y crear una estructura de datos que pueda procesarse y luego descartar como XML.

Para el análisis sintáctico, hay algunas opciones. Microsoft have published las especificaciones para su formato .doc binario, la lectura de las cuales será esencial para escribir un analizador para ello. En el caso de .docx tiene un poco más de suerte, ya que está en formato XML, por lo que podría usar cualquier biblioteca de análisis XML para leer en el archivo, luego buscar en el árbol resultante los datos que le interesan. XML los analizadores están disponibles para casi cualquier idioma, uno fácil de usar que viene a la mente es MiniDom para Python.

Para generar su salida XML, una vez más, una representación de objetos a la biblioteca XML parece ser el camino a seguir, MiniDom, por ejemplo, también lo hace.

Si no quiere tratar con la escritura de su propio analizador .doc, podría ejecutar los documentos a través de un convertidor que produzca un formato más accesible primero, como usar Word para convertir los archivos .doc a .docx , o una herramienta que produce RDF desde .docs, o puede usar un analizador de palabras existente como el de OpenOffice.

+0

Hay un buen módulo de python para controlar de forma remota OpenOffice para convertir formatos de documentos, incluido convertir .doc en .ODT que contiene un archivo XML comprimido que es fácil de analizar. http://www.artofsolving.com/opensource/pyodconverter – jsbueno

+3

Por cierto, tratar de escribir un analizador .doc de las especificaciones MS sería suicida en el mejor de los casos (había una razón por la cual las especificaciones .docx iniciales tenían 6000 páginas) o bien usa un módulo eso ya lo hace, o convierta el .doc a otra cosa con OOo. – jsbueno

0

Realmente depende exactamente de lo que está tratando de hacer.

El enfoque más simple sería guardar el documento como XML plano de OPC (en Word, "Guardar como ..." XML), y luego aplicar un XSLT.

Este enfoque es más simple, ya que le da toda la docx como un único archivo XML, por lo que no tiene que descomprimirlo etc.

Si sus necesidades son más complejas, por ejemplo, analizando el formato o estilos, o haciendo algo con hipervínculos, entonces un modelo de objetos como docx4j (Java) o Open XML SDK (C#), y sin duda hay otros, puede ayudar.

Cuestiones relacionadas