Tika 简明教程

TIKA - Document Type Detection

MIME Standards

多用途因特网邮件扩展 (MIME) 标准是识别文档类型的最佳可用标准。了解这些标准有助于浏览器在内部交互期间。

无论何时浏览器遇到媒体文件,它都会选择与其兼容的可用软件来显示其内容。如果浏览器没有任何合适的应用程序来运行某个特定的媒体文件,它会建议用户获取合适的插件软件。

Type Detection in Tika

Tika 支持 MIME 中提供的所有 Internet 媒体文档类型。无论何时文件通过 Tika,它都会检测出来文件及其文档类型。为检测媒体类型,Tika 在内部使用以下机制。

File Extensions

检查文件扩展名是检测文件格式最简单且最广泛使用的方法。许多应用程序和操作系统都支持这些扩展名。下面显示的是一些已知文件类型 的扩展名。

File name

Extention

image

.jpg

audio

.mp3

java archive file

.jar

java class file

.class

Content-type Hints

无论何时从数据库中检索文件或将其附加到另一份文件时,您都可能丢失文件的名称或扩展名。在这些情况下,使用随文件提供 的元数据来检测文件扩展名。

Magic Byte

观察文件的原始字节,您可以找到每个文件的某些唯一字符模式。某些文件具有称为 magic bytes 的特殊字节前缀,这些字节前缀是专门为 识别文件类型而在文件中制作和包含的。

例如,您能在 java 文件中找到 CA FE BA BE(十六进制格式)和在 pdf 文件中找到 %PDF(ASCII 格式)。Tika 使用此信息来识别文件的媒体类型。

Character Encodings

带纯文本的文件使用不同类型的字符编码进行编码。此处的首要挑战是识别文件中使用的字符编码类型。Tika 使用 Bom markersByte Frequencies 等字符编码技术来识别纯文本内容使用的编码系统。

XML Root Characters

为检测 XML 文档,Tika 解析 xml 文档并从其中提取根元素、命名空间以及可从中找到文件的真实媒体类型的引用的架构等信息。

Type Detection using Facade Class

detect() 方法用于检测文档类型。此方法将文件作为输入。下面显示的是通过 Tika facade 类检测文档类型的示例程序。

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