サイトアイコン CAD日記

Office系アプリのデータからテキスト抽出する

Office系アプリとは言わずと知れたWordやExcelなわけで、doc/docx/xls/xlsx/ppt/pptxとあいなる。こいつらはバイナリなので、テキストを抽出するためのやり口はいくつかある。

【独自解析系】
xdoc2txtなるフリーソフト。Office系のみならず、一太郎やOpenOfficeなど様々な商用アプリのデータに対応しており、またPDFやhtmlまで対応しているってんだからスゲー。惜しむらくは、2020年6月に更新されて以来、約2年半更新がストップしていること。VCランタイムを2010から新しいものに更新して、もうやるべきことはやったという感じなのだろうか。2002年から開発を始めていて20年の月日が経過しているので、作者としてはそろそろいい年齢で、気力と体力が低下しているのかもしれない。
作者のhishidaさんは、EBシリーズという名の電子書籍・電子辞書を作成するためのツール集の開発も行っており、こっちがメインのようにも感じる。
話をxdoc2txtに戻す。ファイル比較ソフトのWinMergeのプラグインとしてxdoc2diffがあり、おいらも重宝して使っていた。WinMergeの64bit版ではxdoc2diffが動作しないらしく、この点は残念なこと。じゃーどうするのかってことで次の話に移る。

【COMでアプリにやらせる系】
WinMergeの標準プラグインとして存在するのがCompareMSExcelFilesなど(他にWord用、PowerPoint用もあり)。拡張子sctでコードを確認したところ、CreateObject(“Excel.Application”)という記載があったため、COMでアプリを起動してテキストアウトしていることがわかった。つまりWordやExcelがインストールされている必要があるということで、独自解析系に比べると処理に時間がかかるはず。ただ、アプリにやらせているから抽出結果の正確性が高い。WinMergeの用途から言って、COMでやらせることは妥当であり、リッチクライアントで閉じた世界でやるから問題ない。サーバーで高速に処理する必要があって、サーバーにWordやExcelなんて入ってねぇぜという環境においては、独自解析系になるだろう。

【MicrosoftのIFilter】
本家が提供しているテキスト抽出エンジン。本家なんで安定していてサポートもしっかりしているのだろう。ビジネス用途ならこれの一択。ただ、本流の製品でもなくサーバー側の地味なものなので、頻繁な更新はされておらず、サポート期限が切れるの切れないのという話がある模様。クラウド利用がうんちゃら。。このあたりはよくわからん。そのうち調べてみるかも。

モバイルバージョンを終了