TIKA-クイックガイド

Apache Tikaとは何ですか?

  • Apache Tikaは、さまざまなファイル形式からのドキュメントタイプの検出とコンテンツの抽出に使用されるライブラリです。

  • 内部的には、Tikaは既存のさまざまなドキュメントパーサーとドキュメントタイプ検出技術を使用してデータを検出および抽出します。

  • Tikaを使用すると、ユニバーサルタイプの検出器とコンテンツ抽出機能を開発して、構造化テキストと、スプレッドシート、テキストドキュメント、画像、PDF、さらにはマルチメディア入力形式などのさまざまなタイプのドキュメントからメタデータをある程度抽出できます。

  • Tikaは、さまざまなファイル形式を解析するための単一の汎用APIを提供します。ドキュメントタイプごとに既存の専用パーサーライブラリを使用します。

  • これらのパーサーライブラリはすべて、と呼ばれる単一のインターフェイスの下にカプセル化されています。 Parser interface

なぜティカ?

filext.comによると、約15,000から51,000のコンテンツタイプがあり、この数は日々増加しています。データは、テキストドキュメント、Excelスプレッドシート、PDF、画像、マルチメディアファイルなどのさまざまな形式で保存されています。したがって、検索エンジンやコンテンツ管理システムなどのアプリケーションでは、これらのドキュメントタイプからデータを簡単に抽出するための追加のサポートが必要です。Apache Tikaは、複数のファイル形式からデータを検索して抽出するための汎用APIを提供することにより、この目的を果たします。

ApacheTikaアプリケーション

ApacheTikaを利用するさまざまなアプリケーションがあります。ここでは、ApacheTikaに大きく依存するいくつかの著名なアプリケーションについて説明します。

サーチエンジン

Tikaは、デジタルドキュメントのテキストコンテンツにインデックスを付ける検索エンジンの開発中に広く使用されています。

  • 検索エンジンは、Webから情報や索引付きドキュメントを検索するように設計された情報処理システムです。

  • クローラーは検索エンジンの重要なコンポーネントであり、Webをクロールして、何らかのインデックス作成手法を使用してインデックス付けされるドキュメントをフェッチします。その後、クローラーはこれらのインデックス付きドキュメントを抽出コンポーネントに転送します。

  • 抽出コンポーネントの役割は、ドキュメントからテキストとメタデータを抽出することです。このような抽出されたコンテンツとメタデータは、検索エンジンにとって非常に役立ちます。この抽出コンポーネントにはTikaが含まれています。

  • 抽出されたコンテンツは、検索エンジンのインデクサーに渡され、検索エンジンはそれを使用して検索インデックスを作成します。これとは別に、検索エンジンは抽出されたコンテンツを他の多くの方法でも使用します。

ドキュメント分析

  • 人工知能の分野では、セマンティックレベルでドキュメントを自動的に分析し、そこからあらゆる種類のデータを抽出するための特定のツールがあります。

  • このようなアプリケーションでは、ドキュメントは、ドキュメントの抽出されたコンテンツの目立つ用語に基づいて分類されます。

  • これらのツールは、プレーンテキストからデジタルドキュメントまでさまざまなドキュメントを分析するためのコンテンツ抽出にTikaを利用します。

デジタル資産管理

  • 一部の組織は、デジタル資産管理(DAM)と呼ばれる特別なアプリケーションを使用して、写真、電子書籍、図面、音楽、ビデオなどのデジタル資産を管理しています。

  • このようなアプリケーションは、ドキュメントタイプ検出器とメタデータ抽出機能を利用して、さまざまなドキュメントを分類します。

内容分析

  • アマゾンのようなウェブサイトは、彼らの興味に応じて、彼らのウェブサイトの新しくリリースされたコンテンツを個々のユーザーに推薦します。そうするために、これらのウェブサイトは続きますmachine learning techniques、またはFacebookなどのソーシャルメディアWebサイトの助けを借りて、ユーザーのいいねや興味などの必要な情報を抽出します。この収集された情報は、htmlタグまたはその他の形式で、コンテンツタイプの検出と抽出がさらに必要になります。

  • ドキュメントの内容分析には、次のような機械学習技術を実装するテクノロジーがあります。 UIMA そして Mahout。これらのテクノロジーは、ドキュメント内のデータをクラスタリングおよび分析するのに役立ちます。

  • Apache Mahoutは、クラウドコンピューティングプラットフォームであるApacheHadoopでMLアルゴリズムを提供するフレームワークです。Mahoutは、特定のクラスタリングおよびフィルタリング技術に従うことによってアーキテクチャを提供します。このアーキテクチャに従うことで、プログラマーは独自のMLアルゴリズムを記述して、さまざまなテキストとメタデータの組み合わせを使用して推奨事項を作成できます。これらのアルゴリズムへの入力を提供するために、Mahoutの最近のバージョンでは、Tikaを使用してバイナリコンテンツからテキストとメタデータを抽出しています。

  • Apache UIMAさまざまなプログラミング言語を分析および処理し、UIMA注釈を生成します。内部的には、TikaAnnotatorを使用してドキュメントのテキストとメタデータを抽出します。

歴史

開発
2006年 Tikaのアイデアは、Luceneプロジェクト管理委員会の前に投影されました。
2006年 Tikaの概念とJackrabbitプロジェクトでのその有用性が議論されました。
2007年 TikaはApacheインキュベーターに入りました。
2008年 バージョン0.1と0.2がリリースされ、TikaはインキュベーターからLuceneサブプロジェクトに卒業しました。
2009年 バージョン0.3、0.4、および0.5がリリースされました。
2010年 バージョン0.6と0.7がリリースされ、TikaはトップレベルのApacheプロジェクトに卒業しました。
2011 Tika 1.0がリリースされ、Tikaに関する本「TikainAction」も同じ年にリリースされました。

Tikaのアプリケーションレベルのアーキテクチャ

アプリケーションプログラマーは、Tikaをアプリケーションに簡単に統合できます。Tikaは、ユーザーフレンドリーにするためのコマンドラインインターフェイスとGUIを提供します。

この章では、Tikaアーキテクチャを構成する4つの重要なモジュールについて説明します。次の図は、Tikaのアーキテクチャとその4つのモジュールを示しています-

  • 言語検出メカニズム。
  • MIME検出メカニズム。
  • パーサーインターフェイス。
  • ティカファサードクラス。

言語検出メカニズム

テキストドキュメントがTikaに渡されるときはいつでも、それが書かれた言語を検出します。言語注釈のないドキュメントを受け入れ、言語を検出することでその情報をドキュメントのメタデータに追加します。

言語識別をサポートするために、Tikaには次のクラスがあります。 Language Identifier パッケージに org.apache.tika.language、および特定のテキストからの言語検出のアルゴリズムを含む言語識別リポジトリ。Tikaは、言語検出にN-gramアルゴリズムを内部的に使用しています。

MIME検出メカニズム

Tikaは、MIME標準に従ってドキュメントタイプを検出できます。TikaでのデフォルトのMIMEタイプの検出は、org.apache.tika.mime.mimeTypesを使用して行われます。ほとんどのコンテンツタイプの検出にorg.apache.tika.detect.Detectorインターフェースを使用します。

内部的には、Tikaは、ファイルグロブ、コンテンツタイプのヒント、マジックバイト、文字エンコード、およびその他のいくつかの手法など、いくつかの手法を使用しています。

パーサーインターフェース

org.apache.tika.parserのパーサーインターフェースは、Tikaでドキュメントを解析するための主要なインターフェースです。このインターフェイスは、ドキュメントからテキストとメタデータを抽出し、パーサープラグインを作成する意思のある外部ユーザー向けに要約します。

Tikaは、個々のドキュメントタイプに固有のさまざまな具象パーサークラスを使用して、多くのドキュメント形式をサポートしています。これらのフォーマット固有のクラスは、パーサーロジックを直接実装するか、外部パーサーライブラリを使用することにより、さまざまなドキュメントフォーマットのサポートを提供します。

ティカファサードクラス

Tikaファサードクラスの使用は、JavaからTikaを呼び出す最も簡単で直接的な方法であり、ファサードデザインパターンに従います。Tikaファサードクラスは、TikaAPIのorg.apache.tikaパッケージにあります。

基本的なユースケースを実装することにより、Tikaはランドスケープのブローカーとして機能します。MIME検出メカニズム、パーサーインターフェイス、言語検出メカニズムなど、Tikaライブラリの根本的な複雑さを抽象化し、ユーザーが使用できるシンプルなインターフェイスを提供します。

ティカの特徴

  • Unified parser Interface− Tikaは、すべてのサードパーティパーサーライブラリを単一のパーサーインターフェイス内にカプセル化します。この機能により、ユーザーは適切なパーサーライブラリを選択する負担から解放され、検出されたファイルタイプに応じてそれを使用できます。

  • Low memory usage− Tikaはメモリリソースの消費が少ないため、Javaアプリケーションに簡単に埋め込むことができます。モバイルPDAのようなリソースの少ないプラットフォームで実行されるアプリケーション内でTikaを使用することもできます。

  • Fast processing −アプリケーションからの迅速なコンテンツ検出と抽出が期待できます。

  • Flexible metadata − Tikaは、ファイルの記述に使用されるすべてのメタデータモデルを理解しています。

  • Parser integration − Tikaは、単一のアプリケーションで各ドキュメントタイプに使用できるさまざまなパーサーライブラリを使用できます。

  • MIME type detection − Tikaは、MIME標準に含まれるすべてのメディアタイプからコンテンツを検出して抽出できます。

  • Language detection − Tikaには言語識別機能が含まれているため、多言語Webサイトの言語タイプに基づいたドキュメントで使用できます。

ティカの機能

Tikaはさまざまな機能をサポートしています-

  • ドキュメントタイプの検出
  • コンテンツの抽出
  • メタデータ抽出
  • 言語検出

ドキュメントタイプの検出

Tikaはさまざまな検出技術を使用して、与えられたドキュメントの種類を検出します。

コンテンツの抽出

Tikaには、さまざまなドキュメント形式のコンテンツを解析して抽出できるパーサーライブラリがあります。ドキュメントのタイプを検出した後、パーサーリポジトリから適切なパーサーを選択し、ドキュメントを渡します。Tikaのさまざまなクラスには、さまざまなドキュメント形式を解析するメソッドがあります。

メタデータ抽出

Tikaは、コンテンツとともに、コンテンツ抽出と同じ手順でドキュメントのメタデータを抽出します。一部のドキュメントタイプでは、Tikaにメタデータを抽出するクラスがあります。

言語検出

内部的には、Tikaは次のようなアルゴリズムに従います n-gram特定のドキュメントのコンテンツの言語を検出します。ティカは次のようなクラスに依存していますLanguageidentifier そして Profiler 言語識別用。

この章では、WindowsおよびLinuxでApacheTikaをセットアップするプロセスについて説明します。Apache Tikaのインストール中は、ユーザー管理が必要です。

システム要求

JDK Java SE 2 JDK1.6以降
記憶 1 GB RAM(推奨)
ディスクスペース 最小要件はありません
オペレーティングシステムのバージョン Windows XP以降、Linux

ステップ1:Javaインストールの確認

Javaのインストールを確認するには、コンソールを開いて以下を実行します java コマンド。

OS 仕事 コマンド
ウィンドウズ コマンドコンソールを開く \> java –version
Linux コマンドターミナルを開く $ java –version

Javaがシステムに正しくインストールされている場合は、作業しているプラ​​ットフォームに応じて、次のいずれかの出力が得られるはずです。

OS 出力
ウィンドウズ

Javaバージョン「1.7.0_60」

Java(TM)SEランタイム環境(ビルド1.7.0_60-b19)

Java Hotspot(TM)64ビットサーバーVM(ビルド24.60-b09、混合モード)

ルニックス

Javaバージョン「1.7.0_25」

JDKランタイム環境を開きます(rhel-2.3.10.4.el6_4-x86_64)

JDK 64ビットサーバーVMを開きます(ビルド23.7-b01、混合モード)

  • このチュートリアルの読者は、このチュートリアルに進む前に、システムにJava1.7.0_60がインストールされていることを前提としています。

  • Java SDKをお持ちでない場合は、現在のバージョンをからダウンロードしてください。 https://www.oracle.com/technetwork/java/javase/downloads/index.html and have it installed。

ステップ2:Java環境を設定する

Javaがマシンにインストールされているベースディレクトリの場所を指すように、JAVA_HOME環境変数を設定します。例えば、

OS 出力
ウィンドウズ 環境変数JAVA_HOMEをC:\ ProgramFiles \ java \ jdk1.7.0_60に設定します
Linux export JAVA_HOME = / usr / local / java-current

Javaコンパイラの場所のフルパスをシステムパスに追加します。

OS 出力
ウィンドウズ 文字列を追加します。C:\ Program Files \ Java \ jdk1.7.0_60 \ binをシステム変数PATHの最後に追加します。
Linux export PATH = $ PATH:$ JAVA_HOME / bin /

上で説明したように、コマンドプロンプトからコマンドjava-versionを確認します。

ステップ3:ApacheTika環境をセットアップする

プログラマーは、以下を使用して、ApacheTikaを環境に統合できます。

  • コマンドライン、
  • Tika API、
  • Tikaのコマンドラインインターフェイス(CLI)、
  • Tikaのグラフィカルユーザーインターフェイス(GUI)、または
  • ソースコード。

これらのアプローチのいずれについても、まず、Tikaのソースコードをダウンロードする必要があります。

Tikaのソースコードは次の場所にあります。 https://Tika.apache.org/download.html, 2つのリンクがあります-

  • apache-tika-1.6-src.zip − Tikaのソースコードが含まれており、

  • Tika -app-1.6.jar −Tikaアプリケーションを含むjarファイルです。

これらの2つのファイルをダウンロードします。ティカの公式サイトのスナップショットを以下に示します。

ファイルをダウンロードした後、jarファイルのクラスパスを設定します tika-app-1.6.jar。次の表に示すように、jarファイルの完全なパスを追加します。

OS 出力
ウィンドウズ 文字列「C:\ jars \ Tika-app-1.6.jar」をユーザー環境変数CLASSPATHに追加します
Linux

エクスポートCLASSPATH = $ CLASSPATH −

/usr/share/jars/Tika-app-1.6.tar −

Apacheは、Eclipseを使用したグラフィカルユーザーインターフェイス(GUI)アプリケーションであるTikaアプリケーションを提供します。

Eclipseを使用したTika-Mavenビルド

  • Eclipseを開き、新しいプロジェクトを作成します。

  • EclipseにMavenがない場合は、所定の手順に従って設定してください。

    • リンクhttps://wiki.eclipse.org/M2E_updatesite_and_gittagsを開きます。そこには、表形式のm2eプラグインリリースがあります。

  • 最新バージョンを選択し、URLのパスをp2url列に保存します。

  • 今度は日食に戻り、メニューバーでクリックします Help、を選択します Install New Software ドロップダウンメニューから

  • クリック Addボタンをクリックし、オプションであるため、任意の名前を入力します。保存したURLをに貼り付けますLocation フィールド。

  • 前の手順で選択した名前の新しいプラグインが追加されます。その前にあるチェックボックスをオンにして、[ Next

  • インストールを続行します。完了したら、Eclipseを再起動します。

  • 次に、プロジェクトを右クリックし、 configure オプション、選択 convert to maven project

  • 新しいpomを作成するための新しいウィザードが表示されます。グループIDをorg.apache.tikaとして入力し、Tikaの最新バージョンを入力して、packaging jarとして、クリックします Finish

Mavenプロジェクトが正常にインストールされ、プロジェクトがMavenに変換されます。次に、pom.xmlファイルを構成する必要があります。

XMLファイルを構成します

からTikaMavenの依存関係を取得しますhttps://mvnrepository.com/artifact/org.apache.tika

以下に示すのは、ApacheTikaの完全なMaven依存関係です。

<dependency>
   <groupId>org.apache.Tika</groupId>
   <artifactId>Tika-core</artifactId>
   <version>1.6</version>

   <groupId>org.apache.Tika</groupId>
   <artifactId> Tika-parsers</artifactId>
   <version> 1.6</version>

   <groupId> org.apache.Tika</groupId>
   <artifactId>Tika</artifactId>
   <version>1.6</version>

   <groupId>org.apache.Tika</groupId>
   < artifactId>Tika-serialization</artifactId>
   < version>1.6< /version>

   < groupId>org.apache.Tika< /groupId>
   < artifactId>Tika-app< /artifactId>
   < version>1.6< /version>

   <groupId>org.apache.Tika</groupId>
   <artifactId>Tika-bundle</artifactId>
   <version>1.6</version>
</dependency>

ユーザーは、Tikaファサードクラスを使用して、アプリケーションにTikaを埋め込むことができます。ティカのすべての機能を探索する方法があります。ファサードクラスであるため、Tikaはその機能の背後にある複雑さを抽象化します。これに加えて、ユーザーはアプリケーションでTikaのさまざまなクラスを使用することもできます。

ティカクラス(ファサード)

これはTikaライブラリの最も著名なクラスであり、ファサードデザインパターンに従います。したがって、すべての内部実装を抽象化し、Tika機能にアクセスするための簡単なメソッドを提供します。次の表に、このクラスのコンストラクターとその説明を示します。

package − org.apache.tika

class −ティカ

シニア番号 コンストラクターと説明
1

Tika ()

デフォルト構成を使用して、Tikaクラスを構築します。

2

Tika (Detector detector)

検出器インスタンスをパラメーターとして受け入れることにより、Tikaファサードを作成します

3

Tika (Detector detector, Parser parser)

検出器とパーサーのインスタンスをパラメーターとして受け入れることにより、Tikaファサードを作成します。

4

Tika (Detector detector, Parser parser, Translator translator)

検出器、パーサー、およびトランスレーターインスタンスをパラメーターとして受け入れることにより、Tikaファサードを作成します。

5

Tika (TikaConfig config)

TikaConfigクラスのオブジェクトをパラメーターとして受け入れることにより、Tikaファサードを作成します。

メソッドと説明

以下はTikaファサードクラスの重要なメソッドです-

シニア番号 方法と説明
1

解析するToString ((File ファイル)

このメソッドとそのすべてのバリアントは、パラメーターとして渡されたファイルを解析し、抽出されたテキストコンテンツを文字列形式で返します。デフォルトでは、この文字列パラメーターの長さは制限されています。

2

int getMaxStringLength ()

parseToStringメソッドによって返される文字列の最大長を返します。

3

ボイド setMaxStringLength (int maxStringLength)

parseToStringメソッドによって返される文字列の最大長を設定します。

4

読者 parse ((File ファイル)

このメソッドとそのすべてのバリアントは、パラメーターとして渡されたファイルを解析し、抽出されたテキストコンテンツをjava.io.readerオブジェクトの形式で返します。

5

ストリング detect ((InputStream ストリーム、 Metadata メタデータ)

このメソッドとそのすべてのバリアントは、InputStreamオブジェクトとMetadataオブジェクトをパラメーターとして受け入れ、指定されたドキュメントのタイプを検出し、ドキュメントタイプ名をStringオブジェクトとして返します。このメソッドは、Tikaが使用する検出メカニズムを抽象化します。

6

ストリング translate ((InputStream テキスト、 String 目標とする言語)

このメソッドとそのすべてのバリアントは、InputStreamオブジェクトと、テキストを翻訳する言語を表す文字列を受け入れ、指定されたテキストを目的の言語に翻訳して、ソース言語を自動検出しようとします。

パーサーインターフェース

これは、Tikaパッケージのすべてのパーサークラスによって実装されるインターフェイスです。

package − org.apache.tika.parser

Interface −パーサー

メソッドと説明

以下は、Tikaパーサーインターフェースの重要な方法です。

シニア番号 方法と説明
1

parse (InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context)

このメソッドは、指定されたドキュメントを一連のXHTMLおよびSAXイベントに解析します。解析後、抽出されたドキュメントコンテンツをContentHandlerクラスのオブジェクトに配置し、メタデータをメタデータクラスのオブジェクトに配置します。

メタデータクラス

このクラスは、CreativeCommons、Geographic、HttpHeaders、Message、MSOffice、ClimateForcast、TIFF、TikaMetadataKeys、TikaMimeKeys、Serializableなどのさまざまなインターフェイスを実装して、さまざまなデータモデルをサポートします。次の表に、このクラスのコンストラクターとメソッド、およびそれらの説明を示します。

package − org.apache.tika.metadata

class −メタデータ

シニア番号 コンストラクターと説明
1

Metadata()

新しい空のメタデータを作成します。

シニア番号 方法と説明
1

add (Property property, String value)

指定されたドキュメントにメタデータプロパティ/値のマッピングを追加します。この関数を使用して、値をプロパティに設定できます。

2

add (String name, String value)

指定されたドキュメントにメタデータプロパティ/値のマッピングを追加します。この方法を使用すると、ドキュメントの既存のメタデータに新しい名前の値を設定できます。

3

String get (Property property)

指定されたメタデータプロパティの値(存在する場合)を返します。

4

String get (String name)

指定されたメタデータ名の値(存在する場合)を返します。

5

Date getDate (Property property)

Dateメタデータプロパティの値を返します。

6

String[] getValues (Property property)

メタデータプロパティのすべての値を返します。

7

String[] getValues (String name)

指定されたメタデータ名のすべての値を返します。

8

String[] names()

メタデータオブジェクト内のメタデータ要素のすべての名前を返します。

9

set (Property property, Date date)

指定されたメタデータプロパティの日付値を設定します

10

set(Property property, String[] values)

メタデータプロパティに複数の値を設定します。

言語識別子クラス

このクラスは、指定されたコンテンツの言語を識別します。次の表に、このクラスのコンストラクターとその説明を示します。

package − org.apache.tika.language

class −言語識別子

シニア番号 コンストラクターと説明
1

LanguageIdentifier (LanguageProfile profile)

言語識別子をインスタンス化します。ここでは、LanguageProfileオブジェクトをパラメーターとして渡す必要があります。

2

LanguageIdentifier (String content)

このコンストラクターは、テキストコンテンツから文字列を渡すことにより、言語識別子をインスタンス化できます。

シニア番号 方法と説明
1

String getLanguage ()

現在のLanguageIdentifierオブジェクトに指定されている言語を返します。

Tikaでサポートされているファイル形式

次の表に、Tikaがサポートするファイル形式を示します。

ファイル形式 パッケージライブラリ ティカのクラス
XML org.apache.tika.parser.xml XMLParser
HTML org.apache.tika.parser.htmlであり、Tagsoupライブラリを使用します HtmlParser
MS-Office複合ドキュメントOle2から2007ooxml2007以降

org.apache.tika.parser.microsoft

org.apache.tika.parser.microsoft.ooxmlであり、ApachePoiライブラリを使用します

OfficeParser(ole2)

OOXMLParser(ooxml)

OpenDocument形式のopenoffice org.apache.tika.parser.odf OpenOfficeParser
ポータブルドキュメントフォーマット(PDF) org.apache.tika.parser.pdfおよびこのパッケージはApachePdfBoxライブラリを使用します PDFParser
電子出版フォーマット(デジタルブック) org.apache.tika.parser.epub EpubParser
リッチテキスト形式 org.apache.tika.parser.rtf RTFParser
圧縮およびパッケージ形式 org.apache.tika.parser.pkgおよびこのパッケージは共通の圧縮ライブラリを使用します PackageParserとCompressorParserおよびそのサブクラス
テキスト形式 org.apache.tika.parser.txt TXTParser
フィードおよびシンジケーション形式 org.apache.tika.parser.feed FeedParser
オーディオフォーマット org.apache.tika.parser.audioおよびorg.apache.tika.parser.mp3 AudioParser MidiParser Mp3-mp3parser用
イメージパーサー org.apache.tika.parser.jpeg JpegParser-jpeg画像用
ビデオフォーマット org.apache.tika.parser.mp4およびorg.apache.tika.parser.videoこのパーサーは、内部でSimpleAlgorithmを使用してFlashビデオ形式を解析します Mp4parser FlvParser
javaクラスファイルとjarファイル org.apache.tika.parser.asm ClassParser CompressorParser
Mobxformat(電子メールメッセージ) org.apache.tika.parser.mbox MobXParser
CADフォーマット org.apache.tika.parser.dwg DWGParser
FontFormats org.apache.tika.parser.font TrueTypeParser
実行可能プログラムとライブラリ org.apache.tika.parser.executable ExecutableParser

MIME標準

多目的インターネットメール拡張機能(MIME)標準は、ドキュメントタイプを識別するために利用できる最良の標準です。これらの標準の知識は、内部対話中にブラウザを支援します。

ブラウザがメディアファイルに遭遇するたびに、ブラウザはそのコンテンツを表示するために利用可能な互換性のあるソフトウェアを選択します。特定のメディアファイルを実行するための適切なアプリケーションがない場合は、適切なプラグインソフトウェアを入手することをお勧めします。

Tikaでのタイプ検出

Tikaは、MIMEで提供されるすべてのインターネットメディアドキュメントタイプをサポートします。ファイルがTikaを通過するたびに、ファイルとそのドキュメントタイプが検出されます。メディアタイプを検出するために、Tikaは内部で次のメカニズムを使用します。

ファイル拡張子

ファイル拡張子のチェックは、ファイルの形式を検出するための最も簡単で最も広く使用されている方法です。多くのアプリケーションとオペレーティングシステムは、これらの拡張機能をサポートしています。以下に示すのは、いくつかの既知のファイルタイプの拡張子です。

ファイル名 延長
画像 .jpg
オーディオ .mp3
javaアーカイブファイル .jar
Javaクラスファイル 。クラス

コンテンツタイプのヒント

データベースからファイルを取得したり、別のドキュメントに添付したりすると、ファイルの名前や拡張子が失われる可能性があります。このような場合、ファイルで提供されるメタデータは、ファイル拡張子を検出するために使用されます。

マジックバイト

ファイルの生のバイトを観察すると、各ファイルに固有の文字パターンを見つけることができます。一部のファイルには、と呼ばれる特別なバイトプレフィックスがありますmagic bytes ファイルタイプを識別するために特別に作成され、ファイルに含まれているもの

たとえば、CA FE BA BE(16進形式)はJavaファイルで、%PDF(ASCII形式)はPDFファイルで見つけることができます。Tikaはこの情報を使用して、ファイルのメディアタイプを識別します。

文字エンコード

プレーンテキストのファイルは、さまざまな種類の文字エンコードを使用してエンコードされます。ここでの主な課題は、ファイルで使用されている文字エンコードのタイプを特定することです。Tikaは、次のような文字エンコード技術に従います。Bom markers そして Byte Frequencies プレーンテキストコンテンツで使用されるエンコーディングシステムを識別するため。

XMLルート文字

XMLドキュメントを検出するために、Tikaはxmlドキュメントを解析し、ルート要素、名前空間、参照スキーマなどの情報を抽出します。そこから、ファイルの実際のメディアタイプを見つけることができます。

ファサードクラスを使用したタイプ検出

ザ・ detect()ファサードクラスのメソッドは、ドキュメントタイプを検出するために使用されます。このメソッドは、ファイルを入力として受け入れます。以下に示すのは、Tikaファサードクラスを使用したドキュメントタイプ検出のプログラム例です。

import java.io.File;

import org.apache.tika.Tika;

public class Typedetection {

   public static void main(String[] args) throws Exception {

      //assume example.mp3 is in your current directory
      File file = new File("example.mp3");//
      
      //Instantiating tika facade class 
      Tika tika = new Tika();
      
      //detecting the file type using detect method
      String filetype = tika.detect(file);
      System.out.println(filetype);
   }
}

上記のコードをTypeDetection.javaとして保存し、次のコマンドを使用してコマンドプロンプトから実行します-

javac TypeDetection.java
java TypeDetection 

audio/mpeg

Tikaは、さまざまなパーサーライブラリを使用して、特定のパーサーからコンテンツを抽出します。指定されたドキュメントタイプを抽出するための適切なパーサーを選択します。

ドキュメントの解析には、TikaファサードクラスのparseToString()メソッドが一般的に使用されます。以下に示すのは、解析プロセスに関連するステップであり、これらはTika ParsertoString()メソッドによって抽象化されています。

構文解析プロセスの抽象化-

  • 最初にドキュメントをTikaに渡すと、Tikaで使用可能な適切なタイプ検出メカニズムを使用して、ドキュメントタイプを検出します。

  • ドキュメントタイプがわかると、パーサーリポジトリから適切なパーサーを選択します。パーサーリポジトリには、外部ライブラリを利用するクラスが含まれています。

  • 次に、ドキュメントが渡されて、コンテンツを解析し、テキストを抽出し、読み取り不可能な形式の例外をスローするパーサーが選択されます。

Tikaを使用したコンテンツ抽出

以下に示すのは、Tikaファサードクラスを使用してファイルからテキストを抽出するためのプログラムです。

import java.io.File;
import java.io.IOException;

import org.apache.tika.Tika;
import org.apache.tika.exception.TikaException;

import org.xml.sax.SAXException;

public class TikaExtraction {
	
   public static void main(final String[] args) throws IOException, TikaException {

      //Assume sample.txt is in your current directory		        
      File file = new File("sample.txt");
      
      //Instantiating Tika facade class
      Tika tika = new Tika();
      String filecontent = tika.parseToString(file);
      System.out.println("Extracted Content: " + filecontent);
   }		 
}

上記のコードをTikaExtraction.javaとして保存し、コマンドプロンプトから実行します-

javac TikaExtraction.java 
java TikaExtraction

以下に、sample.txtの内容を示します。

Hi students welcome to tutorialspoint

次の出力が得られます-

Extracted Content: Hi students welcome to tutorialspoint

パーサーインターフェースを使用したコンテンツ抽出

Tikaのパーサーパッケージは、テキストドキュメントを解析するために使用できるいくつかのインターフェイスとクラスを提供します。以下に、のブロック図を示します。org.apache.tika.parser パッケージ。

それぞれのドキュメントを個別に解析するために、pdfパーサー、Mp3Passer、OfficeParserなどのいくつかのパーサークラスを利用できます。これらのクラスはすべて、パーサーインターフェイスを実装しています。

CompositeParser

与えられた図は、Tikaの汎用パーサークラスを示しています。 CompositeParser そして AutoDetectParser。CompositeParserクラスは複合デザインパターンに従うため、パーサーインスタンスのグループを単一のパーサーとして使用できます。CompositeParserクラスを使用すると、パーサーインターフェイスを実装するすべてのクラスにアクセスすることもできます。

AutoDetectParser

これはCompositeParserのサブクラスであり、自動型検出を提供します。この機能を使用すると、AutoDetectParserは、複合手法を使用して、受信ドキュメントを適切なパーサークラスに自動的に送信します。

parse()メソッド

parseToString()に加えて、パーサーインターフェイスのparse()メソッドを使用することもできます。この方法のプロトタイプを以下に示します。

parse(InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context)

次の表に、パラメーターとして受け入れる4つのオブジェクトを示します。

シニア番号 オブジェクトと説明
1

InputStream stream

ファイルのコンテンツを含むすべてのInputstreamオブジェクト

2

ContentHandler handler

TikaはドキュメントをXHTMLコンテンツとしてこのハンドラーに渡し、その後、ドキュメントはSAXAPIを使用して処理されます。ドキュメントの内容を効率的に後処理します。

3

Metadata metadata

メタデータオブジェクトは、ドキュメントメタデータのソースとターゲットの両方として使用されます。

4

ParseContext context

このオブジェクトは、クライアントアプリケーションが解析プロセスをカスタマイズする場合に使用されます。

以下に示すのは、parse()メソッドの使用方法を示す例です。

Step 1

パーサーインターフェイスのparse()メソッドを使用するには、このインターフェイスの実装を提供するクラスのいずれかをインスタンス化します。

PDFParser、OfficeParser、XMLParserなどの個別のパーサークラスがあります。これらの個別のドキュメントパーサーのいずれかを使用できます。または、すべてのパーサークラスを内部で使用し、適切なパーサーを使用してドキュメントのコンテンツを抽出するCompositeParserまたはAutoDetectParserのいずれかを使用できます。

Parser parser = new AutoDetectParser();
   (or)
Parser parser = new CompositeParser();  
   (or)        
object of any individual parsers given in Tika Library

Step 2

ハンドラークラスオブジェクトを作成します。以下に3つのコンテンツハンドラーを示します-

シニア番号 クラスと説明
1

BodyContentHandler

このクラスは、XHTML出力の本文部分を選択し、そのコンテンツを出力ライターまたは出力ストリームに書き込みます。次に、XHTMLコンテンツを別のコンテンツハンドラーインスタンスにリダイレクトします。

2

LinkContentHandler

このクラスは、XHTMLドキュメントのすべてのH-Refタグを検出して選択し、Webクローラーなどのツールを使用するためにそれらを転送します。

3

TeeContentHandler

このクラスは、複数のツールを同時に使用するのに役立ちます。

私たちの目標はドキュメントからテキストコンテンツを抽出することなので、以下に示すようにBodyContentHandlerをインスタンス化します-

BodyContentHandler handler = new BodyContentHandler( );

Step 3

以下に示すようにメタデータオブジェクトを作成します-

Metadata metadata = new Metadata();

Step 4

入力ストリームオブジェクトのいずれかを作成し、そこに抽出する必要のあるファイルを渡します。

FileInputstream

ファイルパスをパラメーターとして渡してファイルオブジェクトをインスタンス化し、このオブジェクトをFileInputStreamクラスコンストラクターに渡します。

Note −ファイルオブジェクトに渡されるパスにスペースを含めることはできません。

これらの入力ストリームクラスの問題は、一部のファイル形式を効率的に処理するために必要なランダムアクセス読み取りをサポートしていないことです。この問題を解決するために、TikaはTikaInputStreamを提供しています。

File  file = new File(filepath)
FileInputStream inputstream = new FileInputStream(file);
   (or)
InputStream stream = TikaInputStream.get(new File(filename));

Step 5

以下に示すように、解析コンテキストオブジェクトを作成します-

ParseContext context =new ParseContext();

Step 6

以下のプロトタイプに示すように、パーサーオブジェクトをインスタンス化し、parseメソッドを呼び出し、必要なすべてのオブジェクトを渡します。

parser.parse(inputstream, handler, metadata, context);

以下に示すのは、パーサーインターフェイスを使用したコンテンツ抽出のプログラムです。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class ParserExtraction {
	
   public static void main(final String[] args) throws IOException,SAXException, TikaException {

      //Assume sample.txt is in your current directory
      File file = new File("sample.txt");
      
      //parse method parameters
      Parser parser = new AutoDetectParser();
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(file);
      ParseContext context = new ParseContext();
      
      //parsing the file
      parser.parse(inputstream, handler, metadata, context);
      System.out.println("File content : " + Handler.toString());
   }
}

上記のコードをParserExtraction.javaとして保存し、コマンドプロンプトから実行します-

javac  ParserExtraction.java 
java  ParserExtraction

以下はsample.txtの内容です

Hi students welcome to tutorialspoint

上記のプログラムを実行すると、次の出力が得られます-

File content : Hi students welcome to tutorialspoint

コンテンツに加えて、Tikaはファイルからメタデータも抽出します。メタデータは、ファイルで提供される追加情報に他なりません。オーディオファイルを考えると、アーティスト名、アルバム名、タイトルはメタデータの下にあります。

XMP標準

Extensible Metadata Platform(XMP)は、ファイルのコンテンツに関連する情報を処理および保存するための標準です。これは、Adobe SystemsIncによって作成されました。XMPは、メタデータを定義、作成、および処理するための標準を提供します。この標準は、PDF、JPEG、JPEG、GIF、jpg、HTMLなどのいくつかのファイル形式に埋め込むことができます。

プロパティクラス

Tikaは、Propertyクラスを使用してXMPプロパティ定義に従います。メタデータの名前と値をキャプチャするためのPropertyType列挙型とValueType列挙型を提供します。

メタデータクラス

このクラスは、ClimateForcast、CativeCommons、Geographic、TIFFなどのさまざまなインターフェイスを実装して、さまざまなメタデータモデルのサポートを提供します。さらに、このクラスは、ファイルからコンテンツを抽出するためのさまざまなメソッドを提供します。

メタデータ名

メソッドnames()を使用して、メタデータオブジェクトからファイルのすべてのメタデータ名のリストを抽出できます。すべての名前を文字列配列として返します。メタデータの名前を使用して、を使用して値を取得できますget()方法。メタデータ名を受け取り、それに関連付けられた値を返します。

String[] metadaNames = metadata.names();

String value = metadata.get(name);

解析メソッドを使用したメタデータの抽出

parse()を使用してファイルを解析するときは常に、パラメーターの1つとして空のメタデータオブジェクトを渡します。このメソッドは、指定されたファイルのメタデータを抽出し(そのファイルにメタデータが含まれている場合)、それらをメタデータオブジェクトに配置します。したがって、parse()を使用してファイルを解析した後、そのオブジェクトからメタデータを抽出できます。

Parser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();   //empty metadata object 
FileInputStream inputstream = new FileInputStream(file);
ParseContext context = new ParseContext();
parser.parse(inputstream, handler, metadata, context);

// now this metadata object contains the extracted metadata of the given file.
metadata.metadata.names();

以下に示すのは、テキストファイルからメタデータを抽出するための完全なプログラムです。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class GetMetadata {
	
   public static void main(final String[] args) throws IOException, TikaException {
	
      //Assume that boy.jpg is in your current directory
      File file = new File("boy.jpg");

      //Parser method parameters
      Parser parser = new AutoDetectParser();
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(file);
      ParseContext context = new ParseContext();
      
      parser.parse(inputstream, handler, metadata, context);
      System.out.println(handler.toString());

      //getting the list of all meta data elements 
      String[] metadataNames = metadata.names();

      for(String name : metadataNames) {		        
         System.out.println(name + ": " + metadata.get(name));
      }
   }
}

上記のコードをGetMetadata.javaとして保存し、次のコマンドを使用してコマンドプロンプトから実行します-

javac  GetMetadata .java
java  GetMetadata

以下はboy.jpgのスナップショットです。

上記のプログラムを実行すると、次の出力が得られます-

X-Parsed-By: org.apache.tika.parser.DefaultParser
Resolution Units: inch
Compression Type: Baseline
Data Precision: 8 bits
Number of Components: 3
tiff:ImageLength: 3000
Component 2: Cb component: Quantization table 1, Sampling factors 1 horiz/1 vert
Component 1: Y component: Quantization table 0, Sampling factors 2 horiz/2 vert
Image Height: 3000 pixels
X Resolution: 300 dots
Original Transmission Reference:
   53616c7465645f5f2368da84ca932841b336ac1a49edb1a93fae938b8db2cb3ec9cc4dc28d7383f1
Image Width: 4000 pixels
IPTC-NAA record: 92 bytes binary data
Component 3: Cr component: Quantization table 1, Sampling factors 1 horiz/1 vert
tiff:BitsPerSample: 8
Application Record Version: 4
tiff:ImageWidth: 4000
Content-Type: image/jpeg
Y Resolution: 300 dots

必要なメタデータ値を取得することもできます。

新しいメタデータ値の追加

メタデータクラスのadd()メソッドを使用して、新しいメタデータ値を追加できます。このメソッドの構文は次のとおりです。ここに著者名を追加します。

metadata.add(“author”,”Tutorials point”);

メタデータクラスには、さまざまなデータモデルをサポートするために、ClimateForcast、CativeCommons、Geographicなどのクラスから継承されたプロパティを含む事前定義されたプロパティがあります。以下に示すのは、TIFF画像形式のXMPメタデータ標準に従うためにTikaによって実装されたTIFFインターフェイスから継承されたソフトウェアデータ型の使用法です。

metadata.add(Metadata.SOFTWARE,"ms paint");

以下に示すのは、特定のファイルにメタデータ値を追加する方法を示す完全なプログラムです。ここでは、メタデータ要素のリストが出力に表示されるため、新しい値を追加した後のリストの変更を確認できます。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class AddMetadata {

   public static void main(final String[] args) throws IOException, SAXException, TikaException {

      //create a file object and assume sample.txt is in your current directory
      File file = new File("Example.txt");

      //Parser method parameters
      Parser parser = new AutoDetectParser();
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(file);
      ParseContext context = new ParseContext();

      //parsing the document
      parser.parse(inputstream, handler, metadata, context);

      //list of meta data elements before adding new elements
      System.out.println( " metadata elements :"  +Arrays.toString(metadata.names()));

      //adding new meta data name value pair
      metadata.add("Author","Tutorials Point");
      System.out.println(" metadata name value pair is successfully added");
      
      //printing all the meta data elements after adding new elements
      System.out.println("Here is the list of all the metadata 
         elements after adding new elements");
      System.out.println( Arrays.toString(metadata.names()));
   }
}

上記のコードをAddMetadata.javaクラスとして保存し、コマンドプロンプトから実行します-

javac  AddMetadata .java 
java  AddMetadata

以下にExample.txtの内容を示します。

Hi students welcome to tutorialspoint

上記のプログラムを実行すると、次の出力が得られます-

metadata elements of the given file :
[Content-Encoding, Content-Type] 
enter the number of metadata name value pairs to be added 1
enter metadata1name: 
Author enter metadata1value: 
Tutorials point metadata name value pair is successfully added
Here is the list of all the metadata elements  after adding new elements
[Content-Encoding, Author, Content-Type]

既存のメタデータ要素への値の設定

set()メソッドを使用して、既存のメタデータ要素に値を設定できます。set()メソッドを使用してdateプロパティを設定する構文は次のとおりです。

metadata.set(Metadata.DATE, new Date());

set()メソッドを使用して、プロパティに複数の値を設定することもできます。set()メソッドを使用してAuthorプロパティに複数の値を設定する構文は次のとおりです。

metadata.set(Metadata.AUTHOR, "ram ,raheem ,robin ");

以下に示すのは、set()メソッドを示す完全なプログラムです。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import java.util.Date;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class SetMetadata {

   public static void main(final String[] args) throws IOException,SAXException, TikaException {
   
      //Create a file object and assume example.txt is in your current directory
      File file = new File("example.txt");
      
      //parameters of parse() method
      Parser parser = new AutoDetectParser();
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(file);
      ParseContext context = new ParseContext();
      
      //Parsing the given file
      parser.parse(inputstream, handler, metadata, context);
     
      //list of meta data elements elements
      System.out.println( " metadata elements and values of the given file :");
      String[] metadataNamesb4 = metadata.names();
      
      for(String name : metadataNamesb4) {
    	  System.out.println(name + ": " + metadata.get(name));
      }
      
      //setting date meta data 
      metadata.set(Metadata.DATE, new Date());
      
      //setting multiple values to author property
      metadata.set(Metadata.AUTHOR, "ram ,raheem ,robin ");
      
      //printing all the meta data elements with new elements
      System.out.println("List of all the metadata elements  after adding new elements ");
      String[] metadataNamesafter = metadata.names();
      
      for(String name : metadataNamesafter) {
         System.out.println(name + ": " + metadata.get(name));
      }
   }
}

上記のコードをSetMetadata.javaとして保存し、コマンドプロンプトから実行します-

javac  SetMetadata.java 
java  SetMetadata

以下にexample.txtの内容を示します。

Hi students welcome to tutorialspoint

上記のプログラムを実行すると、次の出力が得られます。出力では、新しく追加されたメタデータ要素を確認できます。

metadata elements and values of the given file :
Content-Encoding: ISO-8859-1
Content-Type: text/plain; charset = ISO-8859-1
Here is the list of all the metadata elements  after adding new elements 
date: 2014-09-24T07:01:32Z
Content-Encoding: ISO-8859-1
Author: ram, raheem, robin 
Content-Type: text/plain; charset = ISO-8859-1

言語検出の必要性

多言語サイトで書かれている言語に基づいてドキュメントを分類するには、言語検出ツールが必要です。このツールは、言語注釈(メタデータ)のないドキュメントを受け入れ、言語を検出することによってその情報をドキュメントのメタデータに追加する必要があります。

コーパスをプロファイリングするためのアルゴリズム

コーパスとは何ですか?

ドキュメントの言語を検出するために、言語プロファイルが作成され、既知の言語のプロファイルと比較されます。これらの既知の言語のテキストセットは、corpus

コーパスは、実際の状況で言語がどのように使用されるかを説明する、書かれた言語のテキストのコレクションです。

コーパスは、本、成績証明書、およびインターネットなどの他のデータリソースから開発されています。コーパスの精度は、コーパスのフレーム化に使用するプロファイリングアルゴリズムによって異なります。

プロファイリングアルゴリズムとは何ですか?

言語を検出する一般的な方法は、辞書を使用することです。特定のテキストで使用されている単語は、辞書にある単語と一致します。

言語で使用される一般的な単語のリストは、特定の言語、たとえば冠詞を検出するための最も単純で効果的なコーパスになります aanthe 英語で。

コーパスとしての単語セットの使用

単語セットを使用して、2つのコーパス間の距離を見つけるための単純なアルゴリズムが組み立てられます。これは、一致する単語の頻度間の差の合計に等しくなります。

このようなアルゴリズムには、次の問題があります。

  • 一致する単語の頻度が非常に少ないため、アルゴリズムは、文が少ない小さなテキストを効率的に処理できません。正確に一致させるには、多くのテキストが必要です。

  • 複合文のある言語や、スペースや句読点などの単語の区切りがない言語の単語境界は検出できません。

単語セットをコーパスとして使用することはこれらの困難さのため、個々の文字または文字グループが考慮されます。

コーパスとしての文字セットの使用

言語で一般的に使用される文字の数は有限であるため、文字ではなく単語の頻度に基づいたアルゴリズムを適用するのは簡単です。このアルゴリズムは、1つまたはごく少数の言語で使用される特定の文字セットの場合にさらにうまく機能します。

このアルゴリズムには、次の欠点があります。

  • 文字の頻度が似ている2つの言語を区別することは困難です。

  • 複数の言語で使用される文字セットを(コーパスとして)使用して言語を具体的に識別するための特定のツールやアルゴリズムはありません。

Nグラムアルゴリズム

上記の欠点は、コーパスのプロファイリングに特定の長さの文字シーケンスを使用する新しいアプローチを生み出しました。このような文字シーケンスは、一般にNグラムと呼ばれます。ここで、Nは文字シーケンスの長さを表します。

  • N-gramアルゴリズムは、特に英語などのヨーロッパ言語の場合、言語検出に効果的なアプローチです。

  • このアルゴリズムは、短いテキストで正常に機能します。

  • より魅力的な機能を備えた多言語ドキュメント内の複数の言語を検出するための高度な言語プロファイリングアルゴリズムがありますが、Tikaは、ほとんどの実際的な状況に適しているため、3グラムアルゴリズムを使用します。

Tikaでの言語検出

ISO 639-1によって標準化された184の標準言語すべての中で、Tikaは18の言語を検出できます。Tikaでの言語検出は、getLanguage() の方法 LanguageIdentifierクラス。このメソッドは、言語のコード名を文字列形式で返します。以下に示すのは、Tikaによって検出された18の言語コードペアのリストです。

da-デンマーク語 de-ドイツ語 et-エストニア語 el-ギリシャ語
en-英語 es-スペイン語 fi-フィンランド語 fr-フランス語
hu-ハンガリー語 は—アイスランド語 それ—イタリア語 nl-オランダ語
いいえ-ノルウェー語 pl-ポーランド語 pt-ポルトガル語 ru-ロシア語
sv-スウェーデン語 th-タイ語

インスタンス化中 LanguageIdentifier クラスの場合、抽出するコンテンツの文字列形式を渡すか、 LanguageProfile クラスオブジェクト。

LanguageIdentifier object = new LanguageIdentifier(“this is english”);

以下に、Tikaでの言語検出のサンプルプログラムを示します。

import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.language.LanguageIdentifier;

import org.xml.sax.SAXException;

public class LanguageDetection {

   public static void main(String args[])throws IOException, SAXException, TikaException {

      LanguageIdentifier identifier = new LanguageIdentifier("this is english ");
      String language = identifier.getLanguage();
      System.out.println("Language of the given content is : " + language);
   }
}

上記のコードを次のように保存します LanguageDetection.java 次のコマンドを使用して、コマンドプロンプトから実行します-

javac  LanguageDetection.java 
java  LanguageDetection

上記のプログラムを実行すると、次の出力が得られます。

Language of the given content is : en

ドキュメントの言語検出

特定のドキュメントの言語を検出するには、parse()メソッドを使用してドキュメントを解析する必要があります。parse()メソッドはコンテンツを解析し、引数の1つとして渡されたハンドラーオブジェクトに格納します。ハンドラオブジェクトの文字列形式をのコンストラクタに渡しますLanguageIdentifier 以下に示すクラス-

parser.parse(inputstream, handler, metadata, context);
LanguageIdentifier object = new LanguageIdentifier(handler.toString());

以下に示すのは、特定のドキュメントの言語を検出する方法を示す完全なプログラムです。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;
import org.apache.tika.language.*;

import org.xml.sax.SAXException;

public class DocumentLanguageDetection {

   public static void main(final String[] args) throws IOException, SAXException, TikaException {

      //Instantiating a file object
      File file = new File("Example.txt");

      //Parser method parameters
      Parser parser = new AutoDetectParser();
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream content = new FileInputStream(file);

      //Parsing the given document
      parser.parse(content, handler, metadata, new ParseContext());

      LanguageIdentifier object = new LanguageIdentifier(handler.toString());
      System.out.println("Language name :" + object.getLanguage());
   }
}

上記のコードをSetMetadata.javaとして保存し、コマンドプロンプトから実行します-

javac  SetMetadata.java 
java  SetMetadata

以下にExample.txtの内容を示します。

Hi students welcome to tutorialspoint

上記のプログラムを実行すると、次の出力が得られます-

Language name :en

Tikaは、Tika jarに加えて、グラフィカルユーザーインターフェイスアプリケーション(GUI)とコマンドラインインターフェイス(CLI)アプリケーションを提供します。他のJavaアプリケーションと同様に、コマンドプロンプトからTikaアプリケーションを実行することもできます。

グラフィカルユーザーインターフェイス(GUI)

  • Tikaは、次のリンクでjarファイルとそのソースコードを提供しています。 https://tika.apache.org/download.html.

  • 両方のファイルをダウンロードし、jarファイルのクラスパスを設定します。

  • ソースコードのzipフォルダーを抽出し、tika-appフォルダーを開きます。

  • 「tika-1.6 \ tika-app \ src \ main \ java \ org \ apache \ Tika \ gui」にある抽出されたフォルダーには、2つのクラスファイルがあります。 ParsingTransferHandler.java そして TikaGUI.java

  • 両方のクラスファイルをコンパイルし、TikaGUI.javaクラスファイルを実行すると、次のウィンドウが開きます。

ここで、TikaGUIの使用方法を見てみましょう。

GUIで、[開く]をクリックし、抽出するファイルを参照して選択するか、ウィンドウの空白にドラッグします。

Tikaはファイルの内容を抽出し、5つの異なる形式で表示します。メタデータ、フォーマットされたテキスト、プレーンテキスト、メインコンテンツ、および構造化テキスト。必要な形式を選択できます。

同様に、CLIクラスも「tika-1.6 \ tikaapp \ src \ main \ java \ org \ apache \ tika \ cli」フォルダーにあります。

次の図は、Tikaができることを示しています。GUIに画像をドロップすると、Tikaはそのメタデータを抽出して表示します。

以下に示すのは、PDFからコンテンツとメタデータを抽出するプログラムです。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.pdf.PDFParser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class PdfParse {

   public static void main(final String[] args) throws IOException,TikaException {

      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("Example.pdf"));
      ParseContext pcontext = new ParseContext();
      
      //parsing the document using PDF parser
      PDFParser pdfparser = new PDFParser(); 
      pdfparser.parse(inputstream, handler, metadata,pcontext);
      
      //getting the content of the document
      System.out.println("Contents of the PDF :" + handler.toString());
      
      //getting metadata of the document
      System.out.println("Metadata of the PDF:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) {
         System.out.println(name+ " : " + metadata.get(name));
      }
   }
}

上記のコードを次のように保存します PdfParse.java、および次のコマンドを使用してコマンドプロンプトからコンパイルします-

javac PdfParse.java
java PdfParse

以下はexample.pdfのスナップショットです

渡すPDFには次のプロパティがあります-

プログラムをコンパイルすると、次のような出力が得られます。

Output

Contents of the PDF:

Apache Tika is a framework for content type detection and content extraction 
which was designed by Apache software foundation. It detects and extracts metadata 
and structured text content from different types of documents such as spreadsheets, 
text documents, images or PDFs including audio or video input formats to certain extent.

Metadata of the PDF:

dcterms:modified :     2014-09-28T12:31:16Z
meta:creation-date :     2014-09-28T12:31:16Z
meta:save-date :     2014-09-28T12:31:16Z
dc:creator :     Krishna Kasyap
pdf:PDFVersion :     1.5
Last-Modified :     2014-09-28T12:31:16Z
Author :     Krishna Kasyap
dcterms:created :     2014-09-28T12:31:16Z
date :     2014-09-28T12:31:16Z
modified :     2014-09-28T12:31:16Z
creator :     Krishna Kasyap
xmpTPg:NPages :     1
Creation-Date :     2014-09-28T12:31:16Z
pdf:encrypted :     false
meta:author :     Krishna Kasyap
created :     Sun Sep 28 05:31:16 PDT 2014
dc:format :     application/pdf; version = 1.5
producer :     Microsoft® Word 2013
Content-Type :     application/pdf
xmp:CreatorTool :     Microsoft® Word 2013
Last-Save-Date :     2014-09-28T12:31:16Z

以下に示すのは、Open Office Document Format(ODF)からコンテンツとメタデータを抽出するプログラムです。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.odf.OpenDocumentParser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class OpenDocumentParse {

   public static void main(final String[] args) throws IOException,SAXException, TikaException {

      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("example_open_document_presentation.odp"));
      ParseContext pcontext = new ParseContext();
      
      //Open Document Parser
      OpenDocumentParser openofficeparser = new OpenDocumentParser (); 
      openofficeparser.parse(inputstream, handler, metadata,pcontext); 
      System.out.println("Contents of the document:" + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) {		        
         System.out.println(name + " :  " + metadata.get(name)); 
      }
   }
}

上記のコードを次のように保存します OpenDocumentParse.java、および次のコマンドを使用してコマンドプロンプトでコンパイルします-

javac OpenDocumentParse.java
java OpenDocumentParse

以下に、example_open_document_presentation.odpファイルのスナップショットを示します。

このドキュメントには次のプロパティがあります-

プログラムをコンパイルすると、次の出力が得られます。

Output

Contents of the document:

Apache Tika
Apache Tika is a framework for content type detection and content extraction which was designed 
by Apache software foundation. It detects and extracts metadata and structured text content from 
different types of documents such as spreadsheets, text documents, images or PDFs including audio 
or video input formats to certain extent. 

Metadata of the document:

editing-cycles:   4
meta:creation-date:   2009-04-16T11:32:32.86
dcterms:modified:   2014-09-28T07:46:13.03
meta:save-date:   2014-09-28T07:46:13.03
Last-Modified:   2014-09-28T07:46:13.03
dcterms:created:   2009-04-16T11:32:32.86
date:   2014-09-28T07:46:13.03
modified:   2014-09-28T07:46:13.03
nbObject:   36
Edit-Time:   PT32M6S
Creation-Date:   2009-04-16T11:32:32.86
Object-Count:   36
meta:object-count:   36
generator:   OpenOffice/4.1.0$Win32 OpenOffice.org_project/410m18$Build-9764
Content-Type:   application/vnd.oasis.opendocument.presentation
Last-Save-Date:   2014-09-28T07:46:13.03

以下に示すのは、MicrosoftOfficeドキュメントからコンテンツとメタデータを抽出するプログラムです。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.microsoft.ooxml.OOXMLParser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class MSExcelParse {

   public static void main(final String[] args) throws IOException, TikaException {
      
      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("example_msExcel.xlsx"));
      ParseContext pcontext = new ParseContext();
      
      //OOXml parser
      OOXMLParser  msofficeparser = new OOXMLParser (); 
      msofficeparser.parse(inputstream, handler, metadata,pcontext);
      System.out.println("Contents of the document:" + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) {
         System.out.println(name + ": " + metadata.get(name));
      }
   }
}

上記のコードを次のように保存します MSExelParse.java、および次のコマンドを使用してコマンドプロンプトからコンパイルします-

javac MSExcelParse.java
java MSExcelParse

ここでは、次のサンプルExcelファイルを渡します。

指定されたExcelファイルには次のプロパティがあります-

上記のプログラムを実行すると、次の出力が得られます。

Output

Contents of the document:

Sheet1
Name	Age	Designation		Salary
Ramu	50	Manager			50,000
Raheem	40	Assistant manager	40,000
Robert	30	Superviser		30,000
sita	25	Clerk			25,000
sameer	25	Section in-charge	20,000

Metadata of the document:

meta:creation-date:    2006-09-16T00:00:00Z
dcterms:modified:    2014-09-28T15:18:41Z
meta:save-date:    2014-09-28T15:18:41Z
Application-Name:    Microsoft Excel
extended-properties:Company:    
dcterms:created:    2006-09-16T00:00:00Z
Last-Modified:    2014-09-28T15:18:41Z
Application-Version:    15.0300
date:    2014-09-28T15:18:41Z
publisher:    
modified:    2014-09-28T15:18:41Z
Creation-Date:    2006-09-16T00:00:00Z
extended-properties:AppVersion:    15.0300
protected:    false
dc:publisher:    
extended-properties:Application:    Microsoft Excel
Content-Type:    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Last-Save-Date:    2014-09-28T15:18:41Z

以下に示すのは、テキストドキュメントからコンテンツとメタデータを抽出するプログラムです-

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.sax.BodyContentHandler;
import org.apache.tika.parser.txt.TXTParser;

import org.xml.sax.SAXException;

public class TextParser {

   public static void main(final String[] args) throws IOException,SAXException, TikaException {

      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("example.txt"));
      ParseContext pcontext=new ParseContext();
      
      //Text document parser
      TXTParser  TexTParser = new TXTParser();
      TexTParser.parse(inputstream, handler, metadata,pcontext);
      System.out.println("Contents of the document:" + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) {
         System.out.println(name + " : " + metadata.get(name));
      }
   }
}

上記のコードを次のように保存します TextParser.java、および次のコマンドを使用してコマンドプロンプトからコンパイルします-

javac TextParser.java
java TextParser

以下に、sample.txtファイルのスナップショットを示します-

テキストドキュメントには次のプロパティがあります-

上記のプログラムを実行すると、次の出力が得られます。

Output

Contents of the document:

At tutorialspoint.com, we strive hard to provide quality tutorials for self-learning 
purpose in the domains of Academics, Information Technology, Management and Computer 
Programming Languages.
The endeavour started by Mohtashim, an AMU alumni, who is the founder and the managing 
director of Tutorials Point (I) Pvt. Ltd. He came up with the website tutorialspoint.com 
in year 2006 with the help of handpicked freelancers, with an array of tutorials for 
computer programming languages.

Metadata of the document:

Content-Encoding:   windows-1252
Content-Type:   text/plain; charset = windows-1252

以下に示すのは、HTMLドキュメントからコンテンツとメタデータを抽出するプログラムです。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.html.HtmlParser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class HtmlParse {

   public static void main(final String[] args) throws IOException,SAXException, TikaException {

      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("example.html"));
      ParseContext pcontext = new ParseContext();
      
      //Html parser 
      HtmlParser htmlparser = new HtmlParser();
      htmlparser.parse(inputstream, handler, metadata,pcontext);
      System.out.println("Contents of the document:" + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) {
         System.out.println(name + ":   " + metadata.get(name));  
      }
   }
}

上記のコードを次のように保存します HtmlParse.java、および次のコマンドを使用してコマンドプロンプトからコンパイルします-

javac HtmlParse.java
java HtmlParse

以下に、example.txtファイルのスナップショットを示します。

HTMLドキュメントには次のプロパティがあります-

上記のプログラムを実行すると、次の出力が得られます。

Output

Contents of the document:

	Name	                     Salary	    age
	Ramesh Raman	             50000	    20
	Shabbir Hussein	             70000          25
	Umesh Raman	             50000	    30
	Somesh	                     50000	    35

Metadata of the document:

title:   HTML Table Header
Content-Encoding:   windows-1252
Content-Type:   text/html; charset = windows-1252
dc:title:   HTML Table Header

以下に示すのは、XMLドキュメントからコンテンツとメタデータを抽出するプログラムです。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.xml.XMLParser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class XmlParse {

   public static void main(final String[] args) throws IOException,SAXException, TikaException {

      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("pom.xml"));
      ParseContext pcontext = new ParseContext();
      
      //Xml parser
      XMLParser xmlparser = new XMLParser(); 
      xmlparser.parse(inputstream, handler, metadata, pcontext);
      System.out.println("Contents of the document:" + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) {
         System.out.println(name + ": " + metadata.get(name));
      }
   }
}

上記のコードを次のように保存します XmlParse.java、および次のコマンドを使用してコマンドプロンプトからコンパイルします-

javac XmlParse.java
java XmlParse

以下に、example.xmlファイルのスナップショットを示します。

このドキュメントには次のプロパティがあります-

上記のプログラムを実行すると、次の出力が得られます-

Output

Contents of the document:
  
4.0.0
org.apache.tika
tika
1.6
org.apache.tika
tika-core
1.6
org.apache.tika
tika-parsers
1.6
src
maven-compiler-plugin
3.1
1.7
1.7

Metadata of the document:

Content-Type:   application/xml

以下に示すのは、.classファイルからコンテンツとメタデータを抽出するプログラムです。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.asm.ClassParser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class JavaClassParse {

   public static void main(final String[] args) throws IOException,SAXException, TikaException {

      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("Example.class"));
      ParseContext pcontext = new ParseContext();

      //Html parser
      ClassParser  ClassParser = new  ClassParser();
      ClassParser.parse(inputstream, handler, metadata,pcontext);
      System.out.println("Contents of the document:" + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) {		        
         System.out.println(name + " :  " + metadata.get(name));  
      }
   }
}

上記のコードを次のように保存します JavaClassParse.java、および次のコマンドを使用してコマンドプロンプトからコンパイルします-

javac JavaClassParse.java
java JavaClassParse

以下はのスナップショットです Example.java これにより、コンパイル後にExample.classが生成されます。

Example.class ファイルには次のプロパティがあります-

上記のプログラムを実行すると、次の出力が得られます。

Output

Contents of the document:

package tutorialspoint.tika.examples;
public synchronized class Example {
   public void Example();
   public static void main(String[]);
}

Metadata of the document:

title: Example
resourceName: Example.class
dc:title: Example

以下に示すのは、Javaアーカイブ(jar)ファイルからコンテンツとメタデータを抽出するプログラムです。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.sax.BodyContentHandler;
import org.apache.tika.parser.pkg.PackageParser;

import org.xml.sax.SAXException;

public class PackageParse {

   public static void main(final String[] args) throws IOException,SAXException, TikaException {

      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("Example.jar"));
      ParseContext pcontext = new ParseContext();
      
      //Package parser
      PackageParser packageparser = new PackageParser();
      packageparser.parse(inputstream, handler, metadata,pcontext);
      System.out.println("Contents of the document: " + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) {
         System.out.println(name + ":   " + metadata.get(name));
      }
   }
}

上記のコードを次のように保存します PackageParse.java、および次のコマンドを使用してコマンドプロンプトからコンパイルします-

javac PackageParse.java
java PackageParse

以下に示すのは、パッケージ内にあるExample.javaのスナップショットです。

jarファイルには次のプロパティがあります-

上記のプログラムを実行すると、次の出力が得られます-

Output

Contents of the document:

META-INF/MANIFEST.MF
tutorialspoint/tika/examples/Example.class

Metadata of the document:

Content-Type:   application/zip

以下に示すのは、JPEG画像からコンテンツとメタデータを抽出するプログラムです。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.jpeg.JpegParser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class JpegParse {

   public static void main(final String[] args) throws IOException,SAXException, TikaException {

      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("boy.jpg"));
      ParseContext pcontext = new ParseContext();
      
      //Jpeg Parse
      JpegParser  JpegParser = new JpegParser();
      JpegParser.parse(inputstream, handler, metadata,pcontext);
      System.out.println("Contents of the document:" + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) { 		        
         System.out.println(name + ": " + metadata.get(name));
      }
   }
}

上記のコードを次のように保存します JpegParse.java、および次のコマンドを使用してコマンドプロンプトからコンパイルします-

javac JpegParse.java
java JpegParse

以下にExample.jpegのスナップショットを示します-

JPEGファイルには次のプロパティがあります-

プログラムを実行すると、次の出力が得られます。

Output −

Contents of the document:

Meta data of the document:

Resolution Units: inch
Compression Type: Baseline
Data Precision: 8 bits
Number of Components: 3
tiff:ImageLength: 3000
Component 2: Cb component: Quantization table 1, Sampling factors 1 horiz/1 vert
Component 1: Y component: Quantization table 0, Sampling factors 2 horiz/2 vert
Image Height: 3000 pixels
X Resolution: 300 dots
Original Transmission Reference: 53616c7465645f5f2368da84ca932841b336ac1a49edb1a93fae938b8db2cb3ec9cc4dc28d7383f1
Image Width: 4000 pixels
IPTC-NAA record: 92 bytes binary data
Component 3: Cr component: Quantization table 1, Sampling factors 1 horiz/1 vert
tiff:BitsPerSample: 8
Application Record Version: 4
tiff:ImageWidth: 4000
Y Resolution: 300 dots

以下に示すのは、mp4ファイルからコンテンツとメタデータを抽出するプログラムです-

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.mp4.MP4Parser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class Mp4Parse {

   public static void main(final String[] args) throws IOException,SAXException, TikaException {

      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("example.mp4"));
      ParseContext pcontext = new ParseContext();
      
      //Html parser
      MP4Parser MP4Parser = new MP4Parser();
      MP4Parser.parse(inputstream, handler, metadata,pcontext);
      System.out.println("Contents of the document:  :" + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) {
         System.out.println(name + ": " + metadata.get(name));
      }
   }  
}

上記のコードをJpegParse.javaとして保存し、次のコマンドを使用してコマンドプロンプトからコンパイルします-

javac Mp4Parse.java
java Mp4Parse

以下に、Example.mp4ファイルのプロパティのスナップショットを示します。

上記のプログラムを実行すると、次の出力が得られます。

Output

Contents of the document:

Metadata of the document:

dcterms:modified: 2014-01-06T12:10:27Z
meta:creation-date: 1904-01-01T00:00:00Z
meta:save-date: 2014-01-06T12:10:27Z
Last-Modified: 2014-01-06T12:10:27Z
dcterms:created: 1904-01-01T00:00:00Z
date: 2014-01-06T12:10:27Z
tiff:ImageLength: 360
modified: 2014-01-06T12:10:27Z
Creation-Date: 1904-01-01T00:00:00Z
tiff:ImageWidth: 640
Content-Type: video/mp4
Last-Save-Date: 2014-01-06T12:10:27Z

以下に示すのは、mp3ファイルからコンテンツとメタデータを抽出するプログラムです-

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.mp3.LyricsHandler;
import org.apache.tika.parser.mp3.Mp3Parser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class Mp3Parse {

   public static void main(final String[] args) throws Exception, IOException, SAXException, TikaException {

      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("example.mp3"));
      ParseContext pcontext = new ParseContext();
      
      //Mp3 parser
      Mp3Parser  Mp3Parser = new  Mp3Parser();
      Mp3Parser.parse(inputstream, handler, metadata, pcontext);
      LyricsHandler lyrics = new LyricsHandler(inputstream,handler);
      
      while(lyrics.hasLyrics()) {
    	  System.out.println(lyrics.toString());
      }
      
      System.out.println("Contents of the document:" + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();

      for(String name : metadataNames) {		        
    	  System.out.println(name + ": " + metadata.get(name));
      }
   }
}

上記のコードを次のように保存します JpegParse.java、および次のコマンドを使用してコマンドプロンプトからコンパイルします-

javac Mp3Parse.java
java Mp3Parse

Example.mp3ファイルには次のプロパティがあります-

プログラムを実行すると、次の出力が得られます。指定されたファイルに歌詞がある場合、アプリケーションはそれをキャプチャして出力とともに表示します。

Output

Contents of the document:

Kanulanu Thaake
Arijit Singh
Manam (2014), track 01/06
2014
Soundtrack
30171.65
eng - 
DRGM
Arijit Singh
Manam (2014), track 01/06
2014
Soundtrack
30171.65
eng - 
DRGM

Metadata of the document:

xmpDM:releaseDate: 2014
xmpDM:duration: 30171.650390625
xmpDM:audioChannelType: Stereo
dc:creator: Arijit Singh
xmpDM:album: Manam (2014)
Author: Arijit Singh
xmpDM:artist: Arijit Singh
channels: 2
xmpDM:audioSampleRate: 44100
xmpDM:logComment: eng - 
DRGM
xmpDM:trackNumber: 01/06
version: MPEG 3 Layer III Version 1
creator: Arijit Singh
xmpDM:composer: Music : Anoop Rubens | Lyrics : Vanamali
xmpDM:audioCompressor: MP3
title: Kanulanu Thaake
samplerate: 44100
meta:author: Arijit Singh
xmpDM:genre: Soundtrack
Content-Type: audio/mpeg
xmpDM:albumArtist: Manam (2014)
dc:title: Kanulanu Thaake