Fichier texte corrompu : Différence entre versions
Ligne 63 : | Ligne 63 : | ||
À partir de maintenant il s'agit de pouvoir récupérer dans ce qui ressemble à ça : | À 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 ! | 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 ! |
Version du 24 janvier 2017 à 19:49
réparation fichier corrompu
Contributeur·ice·s
Statut du projet
fonctionnel
Statut de la publication
License
GPL
Inspiration
Fichiers source
Machines
Matériaux
Lien
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.
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."
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.
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 ?)