Tika-metadata-extraction

提供:Dev Guides
移動先:案内検索

TIKA-メタデータ抽出

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

XMP標準

Extensible Metadata Platform(XMP)は、ファイルのコンテンツに関連する情報を処理および保存するための標準です。 Adobe Systems Incによって作成されました。 XMPは、https://en.wikipedia.org/wiki/Metadata [metadata]の定義、作成、および処理のための標準を提供します。 この標準は、https://en.wikipedia.org/wiki/Portable_Document_Format [PDF]、https://en.wikipedia.org/wiki/JPEG [JPEG]、https://enなどのいくつかのファイル形式に埋め込むことができます。 .wikipedia.org/wiki/JPEG_2000 [JPEG]、https://en.wikipedia.org/wiki/Graphics_Interchange_Format [GIF]、https://en.wikipedia.org/wiki/Portable_Network_Graphics [jpg]、https://en.wikipedia.org/wiki/HTML[HTML]など。

プロパティクラス

TikaはPropertyクラスを使用してXMPプロパティ定義に従います。 PropertyTypeおよびhttps://tika.apache.org/1.6/api/org/apache/を提供しますtika/metadata/Property.ValueTypel [ValueType]列挙型は、メタデータの名前と値をキャプチャします。

メタデータクラス

このクラスは、https://tika.apache.org/1.6/api/org/apache/tika/metadata/ClimateForcastl [ClimateForcast]、CativeCommons、https://tika.apache.org/1.6/api/などのさまざまなインターフェースを実装します。 org/apache/tika/metadata/Geographicl [Geographic]、TIFFなど さまざまなメタデータモデルのサポートを提供します。 さらに、このクラスは、ファイルからコンテンツを抽出するためのさまざまなメソッドを提供します。

メタデータ名

メソッドhttps://tika.apache.org/1.6/api/org/apache/tika/metadata/Metadatal [names()]を使用して、ファイルのすべてのメタデータ名のリストをメタデータオブジェクトから抽出できます。 すべての名前を文字列配列として返します。 メタデータの名前を使用して、* get()*メソッドを使用して値を取得できます。 メタデータ名を受け取り、それに関連付けられた値を返します。

String[] metadaNames = metadata.names();

String value = metadata.get(name);

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

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のスナップショットです。

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”);

Metadataクラスには、https://tika.apache.org/1.6/api/org/apache/tika/metadata/ClimateForcastl [ClimateForcast]、CativeCommons、https://tika.apacheなどのクラスから継承されたプロパティを含む事前定義されたプロパティがあります。 org/1.6/api/org/apache/tika/metadata/Geographicl [Geographic]など。さまざまなデータモデルをサポートします。 以下に示すのは、TIFFによって実装されたTIFFインターフェイスから継承されたSOFTWAREデータ型の使用法で、TIFF画像形式のXMPメタデータ標準に従います。

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 finddevguides

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

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()メソッドを使用して日付プロパティを設定する構文は次のとおりです-

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 finddevguides

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

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