2008年7月21日

面倒くさがり屋のための旧版Wordファイル解読法

Samstag, Juni 26, 2010 追記:もっと簡単なやり方がありました。新しい記事をどうぞ。以下は古い記事ですが、お暇ならどうぞ。


前々項のおまけ。

旧版のMS-Word(Word 2004以前)のファイルはテキスト部分がUTF-16LEなので、iconvとGNU sedを使えば、こんな風にしてテキストが抽出できます。
$ iconv -f UTF-16LE hoge.doc | gsed -e 's/[^[:print:][:space:]]//g' > hoge.txt
ちょっとゴミは残りますがご勘弁。


一太郎ファイルの場合、iconvの-fオプション引数を「UTF-16」にすればできそうに思えるのですが、私の環境ではうまくいきませんでした。これでできれば、前項のようにテキストエディタでバイナリ部分も含めて開くより、多少は安全に作業できるはずなんですが。なんでできないのかな (?_?;;



なお、これも緊急避難的に「自己責任」でどうぞ。


☆ JULI 29 追記

Antiword」というものがありました。

これだとけっこうきれいにテキスト(UTF-8)が抜き出せます。
でも、名前が... 私は、アンチMS/アンチWordじゃなくて、ただ面倒くさがり屋なだけなんですけど。


★JANUAR 07, 2009 追記

な〜んだ! です。
MacOSXにもともと含まれているテキストエディット.app」で旧版MS-Wordファイルは読めますよ。
テキストエディタとしてはショボイんですが、旧版Wordファイル読みに、これけっこう使えますね。
これに気付かなかったのは迂闊でした :-}

2008年7月15日

面倒くさがり屋のための一太郎ファイル解読法

前項のついでに...
一太郎文書をたまに(というか役所や学校関係の人からの原稿が一太郎の場合が少なくないんです)もらいます。私の作業機はMacOSXなので、さてどうするかです。
実は、以前、*BSD機をメインにしているころ、「一太郎Ark」を買ってました。これはJAVAアプリなので、MacOSXでも動きます。
でも、短い文章に重たいJAVAアプリを立ち上げるのも面倒だな〜と思うときは、テキストエディタでむりやり読んでしまいます。
一太郎文書は、書式などのバイナリデータの中にUTF-16BEのテキストが埋め込んであるのです。しかも短い文書だとテキストはひとかたまりになってます。MS-Wordの旧版も同様なのでテキストエディタで読み出せます。(一太郎とはエンディアンが逆になっていたんじゃないかな?)
私は「CotEditor」http://www.aynimac.com/p_blog/index.php というテキストエディタを使ってます。これだとファイルを開く時に「UTF-16BE」が指定できるのです。
バイナリ部分が邪魔をして動きがちょっと鈍くなります。長い文書だとつらいかも。
ときどき、「あ〜ぁ、Arkで開ければよかった!」と後悔することしばしばです。
でも、一太郎Arkを持ってない人は、緊急避難的にお試しあれ。ただし、バイナリ部分が悪さをするかもしれませんから、自己責任」でお願いします。

2008年7月11日

面倒くさがり屋のためのMS-Word 2007ファイル解読法

Samstag, Juni 26, 2010 追記:MacOSX 10.6ならもっと簡単なやり方がありました。新しい記事をお読みください。下のは古い記事ですが、お暇ならどうぞ。


MS-Word2007文書(.docx)の実態は、ZIPでアーカイブされたXMLファイル群です。本文はその中のword/document.xmlにUTF-8テキストとして入っています。ただ、書式関係のタグがてんこもりなので、そのままでは読みにくくてしかたありません。そこで、sedを使ってじゃまものをどけようというわけです。

たとえば、デスクトップにある「hoge.docx」というファイルを読みたいとしますね。
moria:~ tac$ cd Desktop/
moria:~/Desktop tac$ mkdir docx
moria:~/Desktop tac$ cd docx/
moria:~/Desktop/docx tac$ unzip ../hoge.docx
Archive: ../hoge.docx
inflating: [Content_Types].xml
inflating: _rels/.rels
inflating: word/_rels/document.xml.rels
inflating: word/document.xml
inflating: word/theme/theme1.xml
extracting: docProps/thumbnail.jpeg
inflating: word/settings.xml
inflating: word/fontTable.xml
inflating: word/webSettings.xml
inflating: docProps/core.xml
inflating: word/styles.xml
inflating: docProps/app.xml

moria:~/Desktop/docx tac$ cd word/
moria:~/Desktop/docx/word tac$ gsed -e 's#</w:p>#\n#g; s#<[^>]*>##g' document.xml > document.txt
これでもとのWord文書のテキストが「document.txt」に書き出されているはず(UTF-8テキストです)。



あ〜... がっかりしました?

.docx文書ファイルが読めなくて、検索したら、このページたどり着いてしまったみなさん、すみません。unix系OSにさわったことのある人、sed遣い向けです。sedはMS-Windows版もあるんですけどね。

上のは、MacOSX10.4.11での実行例。ただし、sedはOS附属のじゃなくてGNU sed version 4.1.5です。


なお、GNU sed をインストールするのが面倒な人は、document.xmlをviまたはVimで読み出して、
:%s#</w:p>##^M#g
:%s#<[^>]*>##g
ってやってみてください。なお、「^M」は「Ctrl+V Ctrl+M」ですけど、vi遣いには言わずもがなですな (^_^)