[PC] TikaOnDotNetでテキスト抽出〜Apache Tikaを.NET Frameworkで使ってみる〜

TikaOnDotNet

FlexLuceneの活用方法を探してLuceneのホームページを見ていたらTikaという文書テキスト抽出ソフトがあることに気づきました。どうやらTikaは、Luceneを使っている人には有名のようです。検索するといろいろ出てきます。私は、現在、xdoc2txtというソフトを使ってテキスト抽出をしていますが、少し気になったので試してみました。

TikaOnDotNet

TikaOnDotNetは、名前からおわかりのようにTikaの.NETへの移植版です。Tikaは、Javaで記載されたプログラムなのですが、それをC# (.NET Framework)で使えるようにIKVMを使って移植されたものです。Tika及びTikaOnDotNetは、Lucene及びFlexLuceneの関係と同じです。

環境設定(nuget)

使い方は簡単です。セットアップしてみます。まずは、.NET Frameworkのプロジェクトを作成します。試すだけなのでコンソールアプリケーションにしました。

Create Project

次は、nugetを使ったTikaOnDotNetの組み込みです。Visual Studio 2017の[ツール] > [Nugetパッケージマネージャー] > [ソリューションのNugetパッケージ管理]からNugetの管理画面にいきます。

Nuget

Install TikaOnDotNet

TikaOnDotNetと入力して検索します。すると、TikaOnDotNetとTikaOnDotNet.TextExtractorというのが引っかかりますので、後者を選択し、パッケージをインストールします。

Install TikaOnDotNet

Javaの仮想環境のIKVMとTikaOnDotNetとを含めますかと確認画面が表示されるので[OK]をクリックして進みます。

C#での実装

実装というほどのものではないのですが、数行でテストができるのでやってみました。usingでTikaOnDotNetを宣言します。

using System;
using TikaOnDotNet.TextExtraction;

namespace TestExtract
{
    class Program
    {
        static void Main(string[] args)
        {
            TextExtractor txtExt = new TextExtractor();

            var wordDocContents = txtExt.Extract(@"c:\temp\文書1.docx");
            System.Console.WriteLine(wordDocContents.Text);

            var webPageContents = txtExt.Extract(new Uri("https://ichigo.hopto.org"));
            System.Console.WriteLine(webPageContents.Text);
        }
    }
}

Coding C#

あとは、実行するだけです。参考に以下のようなWord文書を用意してみました。表もどのように抽出されるのか気になったので、作ってみました。

Word Text

抽出結果は、以下のような感じ。表も改行されて、しかもインデックスされて表示されていました。

Extracted Text

まとめ

非常に簡単ではありますが、C#でテキスト抽出が簡単にできました。所感としては、若干動作が遅い気がします。Javaからの移植版だからかもしれません。今後ちょっとスピードを測っていきたいと思います。現状だとxdoc2txtのまま使用するかもしれません。

Translate »