2010-10-20 21 views
2

Je dois extraire des métadonnées d'un lot (mon petit échantillon de travail a des centaines, le total sera probablement des milliers) de fichiers Microsoft Office, principalement Word.Extraire les métadonnées à partir de vieux fichiers Word (à partir de 2.0)

Ces fichiers Word versions de Word 2.0 vont vers Word 2007.

je dois le faire dans .NET 3.5 (en utilisant C#) et il est une application WinForms locale.

Je peux extraire les métadonnées des plus récentes avec OLE Automation (DsoFile.dll), je pense. Je l'ai fait avec succès avec certains d'entre eux.

Le problème est que les anciens formats ne sont pas supportés par DsoFile. Ils n'utilisent pas OLE, probablement. J'ai fait beaucoup de googling et j'ai trouvé que le meilleur moyen (probablement le seul) d'obtenir les données que je voulais était d'utiliser antiword (http://www.winfield.demon.nl/). Avec antiword je peux invoquer son processus et collecter sa sortie. Il peut extraire certaines des données mais pas tout ce dont j'ai besoin. Exemple: antiword me donne seulement une des dates stockées et j'en ai besoin de deux.

Il y a aussi wvware mais je suppose que c'est linux seulement.

Une autre option serait gnu libextractor mais je ne peux pas trouver un moyen d'utiliser dans le .net

Bureau Interop serait un dernier recours désespéré. Je n'ai pas testé cette option, mais je suppose que ce n'est pas une option quand on veut traiter une énorme quantité de fichiers avec des performances décentes.

Quelqu'un peut-il aider? Si vous avez besoin de plus de données, il suffit de demander.

Désolé pour mon anglais, je ne suis pas de langue maternelle.

Répondre

2

Je travaillais sur un outil d'extraction et de génération de métadonnées pour les bureaux commerciaux. Ce n'est pas une tâche facile, surtout si vous voulez également supprimer une de ces métadonnées. D'après ce que vous dites, vous voulez simplement en rendre compte, alors c'est mieux. À partir de Word2000, les fichiers Word ont été stockés dans des documents composés OLE. Il y a beaucoup de documents en ligne sur la lecture de ces fichiers, mais gardez à l'esprit que cela ne vous donnera qu'un petit sous-ensemble de métadonnées. La majeure partie de la "viande" d'un doc de mot est stockée sous forme de gros blobs binaires dans le fichier doc composé et le format de ces blobs est propriétaire.

Il existe une documentation sur le Web pour le format de fichier DOC.

http://msdn.microsoft.com/en-us/library/cc313118.aspx

Mais il est une spécification MASSIVE et incroyablement compliqué. Pourtant, vous pourriez être en mesure de dénicher les pièces dont vous avez besoin de traiter.

Les fichiers DOCX les plus récents sont beaucoup plus faciles à traiter (et contiennent beaucoup moins de métadonnées).

+0

+1 Merci pour l'aide. Pour les anciennes versions de mot, j'ai fini par utiliser antiword sur Linux avec un petit hack pour extraire la date manquante dont j'avais besoin dans un fichier xml et l'analyser avec le C# aussi que je construisais. Pour les nouveaux formats j'ai utilisé l'outil (OLE) DsoFile.dll Microsoft disponible. Les métadonnées que j'extrayais étaient des choses simples: Auteur, certaines dates, etc Sidenote: je ne peux pas upvote votre réponse, je n'ai pas assez de repo. :( – osiris

+0

Ah, ouais, cet outil de profilage.C'est assez pratique, mais je devais faire beaucoup plus que d'extraire les éléments composés (des trucs fous comme détecter du texte caché et blanc sur blanc, des en-têtes morts, des styles nommés, etc.). Pas de soucis à propos de l'upvote. – DarinH