LoginSignup
1
1

More than 3 years have passed since last update.

ごめんなさい。。。

というわけで、今更ですが、Apache Tika を使ってみました。

Apache Tika

前回は Groonga で全文検索データベースを構築しました。
で、テキストファイルだけなら別に問題ないのですが、世の中には「ワード」とか「エクセル」とか「PDF」とか全文検索したいデータが多くあります。

それぞれのファイル毎に解析するものがあれば、まあそれはそれで助かるのですが、特に「ワード」「エクセル」は xml になる前のタイプの解析ツールがなかなか見つからなくて、少し困っていました。

Google先生に聞いてみたところ、「Apache Tika」というものがある、ということを教えてくれたので、早速使ってみました。

Mac でチカチカ

Mac の場合は簡単でした。

$ brew install tika

使い方も簡単

$ tika --text hoge.doc > hoge.txt

これだけです。
そしてすごいのは、docだけでなくxlsとかpdfとかも同じ様に出来るのですよ!

はぁ、もうこれすごい。ありがとー Apache Software Foundation!

Linux でもチカチカ

Debian10 (buster) でインストールしてみました。

# apt install libtika-java

すると、/usr/share/java/ 以下に関連ファイルがインストールされます。( tika- で始まるファイルたち )

しかし、これらはコアなツールなので、Mac版と同じようにさらっと使いたい場合は、別途ツールをダウンロードする必要があるようです。

本家からダウンロード

便利ツールは、tika-app-x.xx.jar (x.xxはバージョン)で、これは本家からダウンロードします。
今回 apt でインストールされたのは、1.20 だったので、バージョンを合わせます。

https://tika.apache.org/download.html の Download Apache Tikaセクションの下の方にある、archives から目的のファイルをダウンロードしましょう。

$ curl -o tika-app-1.20.jar https://archive.apache.org/dist/tika/tika-app-1.20.jar

せっかくなので、先ほど apt でインストールしたところに移動させておきます。

# mv tika-app-1.20.jar /usr/share/java/

使い方は、Mac版と同じ感じです。
ただし、基本 Java なので、以下の感じになります。

$ java -jar /usr/share/java/tika-app-1.20.jar --text huge.doc > hoge.txt

はい、できました。
すごいですね。ありがたい。

画像も取得できるっぽい

なんか色々高機能な感じです。
文書内に埋め込まれた画像とかも抽出することができるみたいです。

Macの場合
$ tika --extract hoge.pdf

Linuxの場合
$ java -jar /usr/share/java/tika-app-1.20.jar --extract hoge.pdf

とすると、同じフォルダに、 hoge.pdf で使われている画像がずらっと取得できます。

Macの場合の実行結果例)

INFO  As a convenience, TikaCLI has turned on extraction of
inline images for the PDFParser (TIKA-2374).
Aside from the -z option, this is not the default behavior
in Tika generally or in tika-server.
9月 29, 2020 5:43:27 午後 org.apache.tika.config.InitializableProblemHandler$3 handleInitializableProblem
警告: J2KImageReader not loaded. JPEG2000 files will not be processed.
See https://pdfbox.apache.org/2.0/dependencies.html#jai-image-io
for optional dependencies.

9月 29, 2020 5:43:27 午後 org.apache.tika.config.InitializableProblemHandler$3 handleInitializableProblem
警告: org.xerial's sqlite-jdbc is not loaded.
Please provide the jar on your classpath to parse sqlite files.
See tika-parsers/pom.xml for the correct version.
Extracting 'image0.png' (image/png) to ./image0.png
Extracting 'image1.png' (image/png) to ./image1.png
Extracting 'image2.png' (image/png) to ./image2.png
Extracting 'image3.png' (image/png) to ./image3.png
Extracting 'image4.png' (image/png) to ./image4.png
Extracting 'image5.png' (image/png) to ./image5.png

まあなんか足りないって怒られますが、無事画像を取り出すことに成功しました。

いやすごい。

まとめ

Apacheさんは Solr とか自前で全文検索エンジンを開発してるから、Tika のようなものも付随して作っているのですよね。そしてそれをオープンソースとして公開されてて、本当すごいなって思います。ありがたいです。

みんなもチカチカしてみましょう。

#あ、Tika の読みは「ティカ」っぽいですが、まあいいでしょう。。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1