TIKA - 文档类型检测



MIME 标准

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

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

Tika 中的类型检测

Tika 支持 MIME 中提供的所有互联网媒体文档类型。每当文件通过 Tika 传递时,它都会检测文件及其文档类型。为了检测媒体类型,Tika 在内部使用以下机制。

文件扩展名

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

文件名 扩展名
图像 .jpg
音频 .mp3
Java 归档文件 .jar
Java 类文件 .class

内容类型提示

每当您从数据库检索文件或将其附加到另一个文档时,您可能会丢失文件的名称或扩展名。在这种情况下,使用与文件一起提供的元数据来检测文件扩展名。

魔术字节

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

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

字符编码

包含纯文本的文件使用不同类型的字符编码进行编码。这里的主要挑战是识别文件中使用的字符编码类型。Tika 遵循诸如Bom 标记字节频率之类的字符编码技术来识别纯文本内容使用的编码系统。

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
广告