Fichier texte corrompu

Révision de 24 janvier 2017 à 19:49 par Vincent (discussion | contributions)


réparation fichier corrompu

Docx.jpg

Contributeur·ice·s

Statut du projet

fonctionnel

Statut de la publication

License

GPL

Inspiration

Fichiers source

Machines

Matériaux

Lien





Sommaire

Comment récupérer le texte d'un document .docx corrompu ?

Ça arrive à tous le monde, au moins une fois dans sa vie, parfois on bosse sur un mémoire, un rapport de stage, une thèse, une traduction, son autobiographie... Des milliers de caractères qui s'enchaînent les uns à la suite des autres.

On fait pas forcément attention à sauvegarder 20 versions différentes de son documents, dans 30 dossiers chiffrés afin de s'assurer de la pérennité de son travail... Et un beau jour (...) notre fichier maViemonOeuvre.docx ne veut plus s'ouvrir.

AHHHHHHHHH !!!!

Notre fichier est corrompu, c'est foutu, je t'avais bien dit de pas utiliser des logiciels libres, c'est vraiment pas fiable...Bref c'est la panade.

Tout d'abord il faut savoir que ce genre de problème n'est pas inhérent à l'utilisation de solutions libres (d'ailleurs .docx est la propriété de Microsoft ©©©), c'est également très présent dans des solutions propriétaires. Quant à l'origine du bug, ça reste un mystère (importation de données copier-coller depuis le web ? vérole envoyée par de vils personnages ?...)

Ouvrir le .docx avec le gestionnaire d'archive

Et maintenant une solution... :

Les documents textes "complexes" tels que ceux utilisés avec libreOffice, mais aussi openOffice, word etc. sont en fait des paquets contenant plusieurs types de fichiers. En somme un fichier .odt ou ici .docx s'apparentent plus à un dossier qu'à un fichier. C'est le syndrome des poupées russes.

Intéressons nous au format .docx : https://fr.wikipedia.org/wiki/Docx

Alors comment accéder au contenu disponible dans un fichier .docx ? Et bien tout simplement en utilisant un gestionnaire d'archives.

"Le format docx est en fait un fichier compressé au format ZIP qui contient un ensemble de fichiers (XML, images .jpg) décrivant le document."
Ce qu'il y a dans votre fichier .docx

Ouvrir le fichier document.xml

Une fois à ce stade, il faut se rendre dans le dossier "word", dans lequel on trouve tout un ensemble de fichier .xml.

Petit cachottier !

On y trouve le fichier document.xml, c'est celui ci qui contient l'ensemble du texte que vous avez pu rédiger durant de nombreuses heures de labeur (hormis les commentaires, notes et autres éléments graphiques). En tout cas l'essentiel de votre pensée féconde se trouve dans ce fichier.

Vous pouvez ouvrir document.xml avec un éditeur de texte type gedit, mousepad ou leafpad. Vous vous rendrez compte alors de la riche pensée complexe des types qui inventent les langages informatiques, en admirant toutes ces magnifiques balises et ce rigoureux rangement bien ordonné, mais malheureusement bien laborieux pour l’œil d'un humain.

Qu'est ce que le XML ?

On va pas réinventer la poudre :

https://fr.wikipedia.org/wiki/Extensible_Markup_Language

http://xml.chez.com/initiation/

http://www.commentcamarche.net/contents/1332-introduction-a-xml

Récupérer le contenu textuel depuis le fichier document.xml

À partir de maintenant il s'agit de pouvoir récupérer dans ce qui ressemble à ça :



LAAAAAAAA



Bon là c'est facile, on voit bien le texte, mais imaginez plein de petits bouts de textes tout éclaté dans le xml et qu'il faut récupérer patiemment à la main pendant des heures... non ce n'est pas diable possible ! Il faut utiliser un programme qui permette de trier dans toutes ces balises et d'extraire les données qui nous intéressent.

Comme je n'ai pas ça sous la main (si quelqu'un connaît ça sous GNU/Linux qu'il me fasse signe ! ) en faisant un bout de code on doit pouvoir arriver à nos fins.

Certains développeurs à l'éthique irréprochable me soutiendront qu'il vaudrait mieux faire ça avec python et d'autres avec Caml, mais voyez vous, j'y connait à peu près rien alors j'ai fais ça avec Processing. C'est sûrement peu performant mais on va dire que ici, Processing est mon couteau-suisse.

Processing ?

Alors pour extraire mes textes de mon fichier .xml j'ai utilisé Processing: http://www.processing.org/

C'est pas compliqué à installer, sur toutes les plateformes : https://www.processing.org/download/

Le code est disponible à cette adresse : https://gitorious.org/parse_texte_xml_processing/parse_texte_xml_processing/trees/master Vous avez un bouton download en bas à droite.

Sinon directement le code ici: ... En fait non car je n'ai pas trouvé comment insérer du code dans mediawiki (une âme charitable pour m'indiquer une solution ?)

C'est fini !