Tika-document-type-detection
TIKA-文書タイプの検出
MIME標準
多目的インターネットメール拡張機能(MIME)標準は、ドキュメントの種類を識別するための利用可能な最高の標準です。 これらの標準の知識は、内部のやり取り中にブラウザーを支援します。
ブラウザがメディアファイルを検出すると、ブラウザで使用可能な互換性のあるソフトウェアを選択して、コンテンツを表示します。 特定のメディアファイルを実行するための適切なアプリケーションがない場合は、適切なプラグインソフトウェアを入手することをユーザーに推奨します。
Tikaでの型検出
Tikaは、MIMEで提供されるすべてのインターネットメディアドキュメントタイプをサポートしています。 ファイルがTikaを通過するたびに、ファイルとそのドキュメントタイプが検出されます。 メディアタイプを検出するために、Tikaは以下のメカニズムを内部的に使用します。
ファイル拡張子
ファイル拡張子の確認は、ファイルの形式を検出するための最も単純で最も広く使用されている方法です。 多くのアプリケーションとオペレーティングシステムは、これらの拡張機能をサポートしています。 以下に、いくつかの既知のファイルタイプの拡張子を示します。
File name | Extention |
---|---|
image | .jpg |
audio | .mp3 |
java archive file | .jar |
java class file | .class |
コンテンツタイプのヒント
データベースからファイルを取得するか、別のドキュメントに添付すると、ファイルの名前または拡張子が失われる可能性があります。 このような場合、ファイルとともに提供されるメタデータは、ファイル拡張子の検出に使用されます。
マジックバイト
ファイルの生のバイトを観察すると、各ファイルのいくつかのユニークな文字パターンを見つけることができます。 一部のファイルには、*マジックバイト*と呼ばれる特別なバイトプレフィックスがあります。これは、ファイルタイプを識別するために特別に作成され、ファイルに含まれます。
たとえば、JavaファイルにはCA FE BA BE(16進形式)、pdfファイルには%PDF(ASCII形式)があります。 Tikaはこの情報を使用して、ファイルのメディアタイプを識別します。
文字エンコーディング
プレーンテキストを含むファイルは、さまざまな種類の文字エンコードを使用してエンコードされます。 ここでの主な課題は、ファイルで使用されている文字エンコーディングの種類を識別することです。 Tikaは、* Bomマーカー*や Byte Frequencies などの文字エンコード技術に従って、プレーンテキストコンテンツで使用されるエンコードシステムを識別します。
XMLルート文字
XMLドキュメントを検出するために、Tikaはxmlドキュメントを解析し、ルート要素、名前空間、参照されたスキーマなどの情報を抽出します。そこからファイルの真のメディアタイプが見つかります。
Facadeクラスを使用したタイプ検出
ファサードクラスの* 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