TIKA - Detecção de Tipo de Documento

Padrões MIME

Os padrões Multipurpose Internet Mail Extensions (MIME) são os melhores padrões disponíveis para identificar tipos de documentos. O conhecimento desses padrões ajuda o navegador durante as interações internas.

Sempre que o navegador encontra um arquivo de mídia, ele escolhe um software compatível disponível com ele para exibir seu conteúdo. Caso não tenha nenhum aplicativo adequado para executar um determinado arquivo de mídia, recomenda ao usuário obter o software de plugin adequado para ele.

Detecção de tipo em Tika

Tika suporta todos os tipos de documentos de mídia da Internet fornecidos em MIME. Sempre que um arquivo é passado pelo Tika, ele detecta o arquivo e seu tipo de documento. Para detectar tipos de mídia, a Tika usa internamente os seguintes mecanismos.

Extensões de arquivo

Verificar as extensões de arquivo é o método mais simples e mais amplamente usado para detectar o formato de um arquivo. Muitos aplicativos e sistemas operacionais fornecem suporte para essas extensões. Abaixo são mostradas as extensões de alguns tipos de arquivos conhecidos.

Nome do arquivo Extensão
imagem .jpg
audio .mp3
arquivo java .jar
arquivo de classe java .classe

Dicas de tipo de conteúdo

Sempre que você recuperar um arquivo de um banco de dados ou anexá-lo a outro documento, poderá perder o nome ou a extensão do arquivo. Nesses casos, os metadados fornecidos com o arquivo são usados ​​para detectar a extensão do arquivo.

Byte mágico

Observando os bytes brutos de um arquivo, você pode encontrar alguns padrões de caracteres exclusivos para cada arquivo. Alguns arquivos têm prefixos de bytes especiais chamadosmagic bytes que são feitos especialmente e incluídos em um arquivo com a finalidade de identificar o tipo de arquivo

Por exemplo, você pode encontrar CA FE BA BE (formato hexadecimal) em um arquivo java e% PDF (formato ASCII) em um arquivo pdf. Tika usa essas informações para identificar o tipo de mídia de um arquivo.

Codificações de personagem

Arquivos com texto simples são codificados usando diferentes tipos de codificação de caracteres. O principal desafio aqui é identificar o tipo de codificação de caracteres usada nos arquivos. Tika segue técnicas de codificação de caracteres comoBom markers e Byte Frequencies para identificar o sistema de codificação usado pelo conteúdo de texto simples.

Caracteres XML Root

Para detectar documentos XML, Tika analisa os documentos xml e extrai as informações como elementos raiz, namespaces e esquemas referenciados de onde o verdadeiro tipo de mídia dos arquivos pode ser encontrado.

Detecção de tipo usando classe de fachada

o detect()O método da classe de fachada é usado para detectar o tipo de documento. Este método aceita um arquivo como entrada. Abaixo é mostrado um programa de exemplo para detecção de tipo de documento com a classe de fachada 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);
   }
}

Salve o código acima como TypeDetection.java e execute-o no prompt de comando usando os seguintes comandos -

javac TypeDetection.java
java TypeDetection 

audio/mpeg