TIKA - Guia rápido
O que é Apache Tika?
Apache Tika é uma biblioteca usada para detecção de tipo de documento e extração de conteúdo de vários formatos de arquivo.
Internamente, a Tika usa vários analisadores de documentos existentes e técnicas de detecção de tipo de documento para detectar e extrair dados.
Usando o Tika, pode-se desenvolver um detector de tipo universal e extrator de conteúdo para extrair tanto texto estruturado quanto metadados de diferentes tipos de documentos, como planilhas, documentos de texto, imagens, PDFs e até formatos de entrada de multimídia até certo ponto.
Tika fornece uma única API genérica para analisar diferentes formatos de arquivo. Ele usa bibliotecas de analisador especializadas existentes para cada tipo de documento.
Todas essas bibliotecas do analisador são encapsuladas em uma única interface chamada de Parser interface.
Por que Tika?
De acordo com filext.com, existem cerca de 15k a 51k tipos de conteúdo, e esse número está crescendo dia a dia. Os dados estão sendo armazenados em vários formatos, como documentos de texto, planilhas do Excel, PDFs, imagens e arquivos multimídia, para citar alguns. Portanto, aplicativos como mecanismos de pesquisa e sistemas de gerenciamento de conteúdo precisam de suporte adicional para facilitar a extração de dados desses tipos de documentos. O Apache Tika atende a esse propósito, fornecendo uma API genérica para localizar e extrair dados de vários formatos de arquivo.
Aplicativos Apache Tika
Existem vários aplicativos que fazem uso do Apache Tika. Aqui, discutiremos alguns aplicativos importantes que dependem muito do Apache Tika.
Motores de busca
Tika é amplamente utilizado no desenvolvimento de mecanismos de pesquisa para indexar o conteúdo de texto de documentos digitais.
Os mecanismos de pesquisa são sistemas de processamento de informações projetados para pesquisar informações e documentos indexados na web.
Crawler é um componente importante de um mecanismo de pesquisa que rasteja pela Web para buscar os documentos que devem ser indexados usando alguma técnica de indexação. Depois disso, o crawler transfere esses documentos indexados para um componente de extração.
A função do componente de extração é extrair o texto e os metadados do documento. Esse conteúdo e metadados extraídos são muito úteis para um mecanismo de pesquisa. Este componente de extração contém Tika.
O conteúdo extraído é então passado para o indexador do mecanismo de pesquisa que o usa para construir um índice de pesquisa. Além disso, o mecanismo de busca usa o conteúdo extraído de muitas outras maneiras também.
Análise de Documentos
No campo da inteligência artificial, existem certas ferramentas para analisar documentos automaticamente em nível semântico e extrair todos os tipos de dados deles.
Nessas aplicações, os documentos são classificados com base nos termos proeminentes no conteúdo extraído do documento.
Essas ferramentas fazem uso do Tika para extração de conteúdo para analisar documentos que variam de texto simples a documentos digitais.
Gestão de ativos digitais
Algumas organizações gerenciam seus ativos digitais, como fotografias, ebooks, desenhos, música e vídeo, usando um aplicativo especial conhecido como gerenciamento de ativos digitais (DAM).
Esses aplicativos usam a ajuda de detectores de tipo de documento e extrator de metadados para classificar os vários documentos.
Análise de conteúdo
Sites como a Amazon recomendam conteúdos recém-lançados de seu site para usuários individuais de acordo com seus interesses. Para fazer isso, esses sites seguemmachine learning techniquesou tenha a ajuda de sites de mídia social como o Facebook para extrair as informações necessárias, como gostos e interesses dos usuários. Essas informações coletadas estarão na forma de tags html ou outros formatos que requerem detecção e extração de tipo de conteúdo adicional.
Para a análise de conteúdo de um documento, temos tecnologias que implementam técnicas de aprendizado de máquina, como UIMA e Mahout. Essas tecnologias são úteis para agrupar e analisar os dados nos documentos.
Apache Mahouté uma estrutura que fornece algoritmos de ML no Apache Hadoop - uma plataforma de computação em nuvem. O Mahout fornece uma arquitetura seguindo certas técnicas de clustering e filtragem. Seguindo essa arquitetura, os programadores podem escrever seus próprios algoritmos de ML para produzir recomendações usando várias combinações de texto e metadados. Para fornecer entradas para esses algoritmos, versões recentes do Mahout usam Tika para extrair texto e metadados de conteúdo binário.
Apache UIMAanalisa e processa várias linguagens de programação e produz anotações UIMA. Internamente, ele usa o Tika Annotator para extrair o texto e os metadados do documento.
História
Ano | Desenvolvimento |
---|---|
2006 | A ideia de Tika foi projetada antes do Comitê de Gerenciamento de Projetos Lucene. |
2006 | O conceito de Tika e sua utilidade no projeto Jackrabbit foi discutido. |
2007 | Tika entrou na incubadora Apache. |
2008 | As versões 0.1 e 0.2 foram lançadas e Tika passou da incubadora para o subprojeto Lucene. |
2009 | As versões 0.3, 0.4 e 0.5 foram lançadas. |
2010 | As versões 0.6 e 0.7 foram lançadas e Tika se formou no projeto Apache de nível superior. |
2011 | Tika 1.0 foi lançado e o livro sobre Tika "Tika in Action" também foi lançado no mesmo ano. |
Arquitetura de nível de aplicativo de Tika
Os programadores de aplicativos podem integrar facilmente o Tika em seus aplicativos. Tika fornece uma interface de linha de comando e uma GUI para torná-la amigável.
Neste capítulo, discutiremos os quatro módulos importantes que constituem a arquitetura Tika. A ilustração a seguir mostra a arquitetura do Tika junto com seus quatro módulos -
- Mecanismo de detecção de idioma.
- Mecanismo de detecção de MIME.
- Interface do analisador.
- Aula Tika Facade.
Mecanismo de detecção de linguagem
Sempre que um documento de texto é passado para o Tika, ele detecta o idioma no qual foi escrito. Ele aceita documentos sem anotação de idioma e adiciona essa informação nos metadados do documento, detectando o idioma.
Para apoiar a identificação de idioma, Tika tem uma classe chamada Language Identifier Na embalagem org.apache.tika.language, e um repositório de identificação de idioma dentro do qual contém algoritmos para detecção de idioma de um determinado texto. Tika usa internamente o algoritmo N-gram para detecção de idioma.
Mecanismo de detecção de MIME
Tika pode detectar o tipo de documento de acordo com os padrões MIME. A detecção do tipo MIME padrão no Tika é feita usando org.apache.tika.mime.mimeTypes . Ele usa a interface org.apache.tika.detect.Detector para a maior parte da detecção do tipo de conteúdo.
Internamente, Tika usa várias técnicas, como globs de arquivo, dicas de tipo de conteúdo, bytes mágicos, codificação de caracteres e várias outras técnicas.
Interface do analisador
A interface do analisador de org.apache.tika.parser é a interface chave para analisar documentos no Tika. Essa interface extrai o texto e os metadados de um documento e os resume para usuários externos que desejam escrever plug-ins do analisador.
Usando diferentes classes de analisadores concretos, específicas para tipos de documentos individuais, Tika suporta muitos formatos de documentos. Essas classes específicas de formato fornecem suporte para diferentes formatos de documentos, implementando diretamente a lógica do analisador ou usando bibliotecas de analisador externas.
Tika Facade Class
Usar a classe de fachada Tika é a maneira mais simples e direta de chamar Tika de Java e segue o padrão de design de fachada. Você pode encontrar a classe de fachada Tika no pacote org.apache.tika da API Tika.
Implementando casos de uso básicos, Tika atua como um corretor de paisagem. Ele abstrai a complexidade subjacente da biblioteca Tika, como mecanismo de detecção MIME, interface do analisador e mecanismo de detecção de idioma, e fornece aos usuários uma interface simples de usar.
Características de Tika
Unified parser Interface- Tika encapsula todas as bibliotecas de analisador de terceiros em uma única interface de analisador. Devido a este recurso, o usuário escapa do fardo de selecionar a biblioteca de analisador adequada e usá-la de acordo com o tipo de arquivo encontrado.
Low memory usage- Tika consome menos recursos de memória, portanto, é facilmente embutido em aplicativos Java. Também podemos usar o Tika dentro do aplicativo que roda em plataformas com menos recursos, como PDA móvel.
Fast processing - Pode-se esperar uma rápida detecção e extração de conteúdo de aplicativos.
Flexible metadata - Tika entende todos os modelos de metadados que são usados para descrever arquivos.
Parser integration - Tika pode usar várias bibliotecas de analisador disponíveis para cada tipo de documento em um único aplicativo.
MIME type detection - Tika pode detectar e extrair conteúdo de todos os tipos de mídia incluídos nos padrões MIME.
Language detection - Tika inclui recurso de identificação de idioma, portanto, pode ser usado em documentos com base no tipo de idioma em sites multilíngues.
Funcionalidades de Tika
Tika suporta várias funcionalidades -
- Detecção de tipo de documento
- Extração de conteúdo
- Extração de metadados
- Detecção de idioma
Detecção de tipo de documento
Tika usa várias técnicas de detecção e detecta o tipo de documento fornecido a ele.
Extração de Conteúdo
Tika tem uma biblioteca de análise que pode analisar o conteúdo de vários formatos de documentos e extraí-los. Depois de detectar o tipo do documento, ele seleciona o analisador apropriado no repositório do analisador e passa o documento. Diferentes classes de Tika possuem métodos para analisar diferentes formatos de documentos.
Extração de Metadados
Junto com o conteúdo, Tika extrai os metadados do documento com o mesmo procedimento da extração de conteúdo. Para alguns tipos de documentos, Tika tem classes para extrair metadados.
Detecção de idioma
Internamente, Tika segue algoritmos como n-grampara detectar o idioma do conteúdo em um determinado documento. Tika depende de aulas comoLanguageidentifier e Profiler para identificação de idioma.
Este capítulo o conduz pelo processo de configuração do Apache Tika no Windows e Linux. A administração do usuário é necessária durante a instalação do Apache Tika.
Requisitos de sistema
JDK | Java SE 2 JDK 1.6 ou superior |
Memória | 1 GB de RAM (recomendado) |
Espaço em disco | Sem requisitos mínimos |
Versão do sistema operacional | Windows XP ou superior, Linux |
Etapa 1: Verificar a instalação do Java
Para verificar a instalação do Java, abra o console e execute o seguinte java comando.
SO | Tarefa | Comando |
---|---|---|
janelas | Abra o console de comando | \> java –version |
Linux | Abra o terminal de comando | $ java –version |
Se o Java foi instalado corretamente em seu sistema, você deve obter uma das seguintes saídas, dependendo da plataforma em que está trabalhando.
SO | Resultado |
---|---|
janelas | Versão Java "1.7.0_60"
Java (TM) SE Run Time Environment (build 1.7.0_60-b19) Java Hotspot (TM) Servidor VM de 64 bits (versão 24.60-b09, modo misto) |
Lunix | versão java "1.7.0_25" Open JDK Runtime Environment (rhel-2.3.10.4.el6_4-x86_64) Abra o servidor VM JDK de 64 bits (compilação 23.7-b01, modo misto) |
Presumimos que os leitores deste tutorial tenham o Java 1.7.0_60 instalado em seus sistemas antes de prosseguir para este tutorial.
Caso você não tenha Java SDK, baixe sua versão atual em https://www.oracle.com/technetwork/java/javase/downloads/index.html and have it installed.
Etapa 2: configuração do ambiente Java
Defina a variável de ambiente JAVA_HOME para apontar para o local do diretório base onde o Java está instalado em sua máquina. Por exemplo,
SO | Resultado |
---|---|
janelas | Defina a variável ambiental JAVA_HOME para C: \ ProgramFiles \ java \ jdk1.7.0_60 |
Linux | export JAVA_HOME = / usr / local / java-current |
Anexe o caminho completo do local do compilador Java ao caminho do sistema.
SO | Resultado |
---|---|
janelas | Anexar a string; C: \ Arquivos de programas \ Java \ jdk1.7.0_60 \ bin ao final da variável de sistema PATH. |
Linux | exportar PATH = $ PATH: $ JAVA_HOME / bin / |
Verifique o comando java-version no prompt de comando conforme explicado acima.
Etapa 3: Configurando o ambiente Apache Tika
Os programadores podem integrar o Apache Tika em seu ambiente usando
- Linha de comando,
- API Tika,
- Interface de linha de comando (CLI) de Tika,
- Interface gráfica do usuário (GUI) de Tika, ou
- o código-fonte.
Para qualquer uma dessas abordagens, em primeiro lugar, você deve baixar o código-fonte do Tika.
Você encontrará o código-fonte do Tika em https://Tika.apache.org/download.html, onde você encontrará dois links -
apache-tika-1.6-src.zip - Contém o código-fonte do Tika, e
Tika -app-1.6.jar - É um arquivo jar que contém o aplicativo Tika.
Baixe esses dois arquivos. Um instantâneo do site oficial da Tika é mostrado abaixo.
Depois de baixar os arquivos, defina o classpath para o arquivo jar tika-app-1.6.jar. Adicione o caminho completo do arquivo jar conforme mostrado na tabela abaixo.
SO | Resultado |
---|---|
janelas | Anexe a string “C: \ jars \ Tika-app-1.6.jar” à variável de ambiente do usuário CLASSPATH |
Linux | Exportar CLASSPATH = $ CLASSPATH - /usr/share/jars/Tika-app-1.6.tar - |
O Apache fornece o aplicativo Tika, um aplicativo de interface gráfica do usuário (GUI) usando Eclipse.
Tika-Maven Build usando Eclipse
Abra o eclipse e crie um novo projeto.
Se você não tiver o Maven em seu Eclipse, configure-o seguindo as etapas fornecidas.
Abra o link https://wiki.eclipse.org/M2E_updatesite_and_gittags . Lá você encontrará os lançamentos do plugin m2e em um formato tabular
Escolha a versão mais recente e salve o caminho do url na coluna p2 url.
Agora revisite o eclipse, na barra de menu, clique Helpe escolha Install New Software no menu suspenso
Clique no Addbotão, digite qualquer nome desejado, pois é opcional. Agora cole o url salvo noLocation campo.
Um novo plug-in será adicionado com o nome que você escolheu na etapa anterior, marque a caixa de seleção na frente dele e clique Next.
Continue com a instalação. Depois de concluído, reinicie o Eclipse.
Agora clique com o botão direito do mouse no projeto e no configure opção, selecione convert to maven project.
Um novo assistente para criar um novo pom aparece. Insira o ID do grupo como org.apache.tika, insira a versão mais recente do Tika, selecione opackaging como jarra e clique Finish.
O projeto Maven foi instalado com sucesso e seu projeto foi convertido em Maven. Agora você deve configurar o arquivo pom.xml.
Configure o arquivo XML
Obtenha a dependência do maven Tika dehttps://mvnrepository.com/artifact/org.apache.tika
Abaixo é mostrada a dependência Maven completa do Apache Tika.
<dependency>
<groupId>org.apache.Tika</groupId>
<artifactId>Tika-core</artifactId>
<version>1.6</version>
<groupId>org.apache.Tika</groupId>
<artifactId> Tika-parsers</artifactId>
<version> 1.6</version>
<groupId> org.apache.Tika</groupId>
<artifactId>Tika</artifactId>
<version>1.6</version>
<groupId>org.apache.Tika</groupId>
< artifactId>Tika-serialization</artifactId>
< version>1.6< /version>
< groupId>org.apache.Tika< /groupId>
< artifactId>Tika-app< /artifactId>
< version>1.6< /version>
<groupId>org.apache.Tika</groupId>
<artifactId>Tika-bundle</artifactId>
<version>1.6</version>
</dependency>
Os usuários podem incorporar Tika em seus aplicativos usando a classe de fachada Tika. Possui métodos para explorar todas as funcionalidades do Tika. Por ser uma classe de fachada, Tika abstrai a complexidade por trás de suas funções. Além disso, os usuários também podem usar as várias classes de Tika em seus aplicativos.
Classe Tika (fachada)
Esta é a classe mais proeminente da biblioteca Tika e segue o padrão de design de fachada. Portanto, ele abstrai todas as implementações internas e fornece métodos simples para acessar as funcionalidades do Tika. A tabela a seguir lista os construtores desta classe junto com suas descrições.
package - org.apache.tika
class - Tika
Sr. Não. | Construtor e descrição |
---|---|
1 | Tika () Usa a configuração padrão e constrói a classe Tika. |
2 | Tika (Detector detector) Cria uma fachada Tika aceitando a instância do detector como parâmetro |
3 | Tika (Detector detector, Parser parser) Cria uma fachada Tika aceitando as instâncias do detector e do analisador como parâmetros. |
4 | Tika (Detector detector, Parser parser, Translator translator) Cria uma fachada Tika aceitando o detector, o analisador e a instância do tradutor como parâmetros. |
5 | Tika (TikaConfig config) Cria uma fachada Tika aceitando o objeto da classe TikaConfig como parâmetro. |
Métodos e Descrição
A seguir estão os métodos importantes da classe de fachada Tika -
Sr. Não. | Métodos e Descrição |
---|---|
1 | analisarToString (File Arquivo) Este método e todas as suas variantes analisa o arquivo passado como parâmetro e retorna o conteúdo do texto extraído no formato String. Por padrão, o comprimento desse parâmetro de string é limitado. |
2 | int getMaxStringLength () Retorna o comprimento máximo das strings retornadas pelos métodos parseToString. |
3 | vazio setMaxStringLength (int maxStringLength) Define o comprimento máximo das strings retornadas pelos métodos parseToString. |
4 | Leitor parse (File Arquivo) Este método e todas as suas variantes analisa o arquivo passado como parâmetro e retorna o conteúdo do texto extraído na forma do objeto java.io.reader. |
5 | Corda detect (InputStream corrente, Metadata metadados) Este método e todas as suas variantes aceitam um objeto InputStream e um objeto Metadata como parâmetros, detecta o tipo do documento fornecido e retorna o nome do tipo de documento como objeto String. Este método abstrai os mecanismos de detecção usados por Tika. |
6 | Corda translate (InputStream texto, String targetLanguage) Este método e todas as suas variantes aceita o objeto InputStream e uma String que representa o idioma para o qual queremos que nosso texto seja traduzido e traduz o texto fornecido para o idioma desejado, tentando detectar automaticamente o idioma de origem. |
Interface do analisador
Esta é a interface que é implementada por todas as classes de analisador do pacote Tika.
package - org.apache.tika.parser
Interface - Parser
Métodos e Descrição
A seguir está o método importante da interface do Tika Parser -
Sr. Não. | Métodos e Descrição |
---|---|
1 | parse (InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context) Este método analisa o documento fornecido em uma sequência de eventos XHTML e SAX. Após a análise, ele coloca o conteúdo do documento extraído no objeto da classe ContentHandler e os metadados no objeto da classe Metadata. |
Classe de Metadados
Esta classe implementa várias interfaces, como CreativeCommons, Geographic, HttpHeaders, Message, MSOffice, ClimateForcast, TIFF, TikaMetadataKeys, TikaMimeKeys, Serializable para suportar vários modelos de dados. As tabelas a seguir listam os construtores e métodos desta classe junto com suas descrições.
package - org.apache.tika.metadata
class - Metadados
Sr. Não. | Construtor e descrição |
---|---|
1 | Metadata() Constrói metadados novos e vazios. |
Sr. Não. | Métodos e Descrição |
---|---|
1 | add (Property property, String value) Adiciona um mapeamento de propriedade / valor de metadados a um determinado documento. Usando esta função, podemos definir o valor de uma propriedade. |
2 | add (String name, String value) Adiciona um mapeamento de propriedade / valor de metadados a um determinado documento. Usando este método, podemos definir um novo valor de nome para os metadados existentes de um documento. |
3 | String get (Property property) Retorna o valor (se houver) da propriedade de metadados fornecida. |
4 | String get (String name) Retorna o valor (se houver) do nome de metadados fornecido. |
5 | Date getDate (Property property) Retorna o valor da propriedade de metadados Date. |
6 | String[] getValues (Property property) Retorna todos os valores de uma propriedade de metadados. |
7 | String[] getValues (String name) Retorna todos os valores de um determinado nome de metadados. |
8 | String[] names() Retorna todos os nomes de elementos de metadados em um objeto de metadados. |
9 | set (Property property, Date date) Define o valor da data da propriedade de metadados fornecida |
10 | set(Property property, String[] values) Define vários valores para uma propriedade de metadados. |
Classe Identificadora de Idioma
Esta classe identifica o idioma do conteúdo fornecido. As tabelas a seguir listam os construtores desta classe junto com suas descrições.
package - org.apache.tika.language
class - Identificador de idioma
Sr. Não. | Construtor e descrição |
---|---|
1 | LanguageIdentifier (LanguageProfile profile) Instancia o identificador do idioma. Aqui você deve passar um objeto LanguageProfile como parâmetro. |
2 | LanguageIdentifier (String content) Este construtor pode instanciar um identificador de idioma passando uma String do conteúdo do texto. |
Sr. Não. | Métodos e Descrição |
---|---|
1 | String getLanguage () Retorna o idioma fornecido ao objeto LanguageIdentifier atual. |
Formatos de arquivo suportados por Tika
A tabela a seguir mostra os formatos de arquivo suportados pelo Tika.
Formato de arquivo | Biblioteca de Pacotes | Aula em Tika |
---|---|---|
XML | org.apache.tika.parser.xml | XMLParser |
HTML | org.apache.tika.parser.html e usa a Biblioteca Tagsoup | HtmlParser |
Documento composto do MS-Office Ole2 até 2007 ooxml 2007 em diante | org.apache.tika.parser.microsoft org.apache.tika.parser.microsoft.ooxml e usa a biblioteca Apache Poi |
OfficeParser (ole2) OOXMLParser (ooxml) |
OpenDocument Format openoffice | org.apache.tika.parser.odf | OpenOfficeParser |
Portable Document Format (PDF) | org.apache.tika.parser.pdf e este pacote usa a biblioteca Apache PdfBox | PDFParser |
Formato de publicação eletrônica (livros digitais) | org.apache.tika.parser.epub | EpubParser |
Formato de texto rico | org.apache.tika.parser.rtf | RTFParser |
Formatos de compressão e embalagem | org.apache.tika.parser.pkg e este pacote usa a biblioteca de compressão comum | PackageParser e CompressorParser e suas subclasses |
Formato de texto | org.apache.tika.parser.txt | TXTParser |
Formatos de feed e distribuição | org.apache.tika.parser.feed | FeedParser |
Formatos de áudio | org.apache.tika.parser.audio e org.apache.tika.parser.mp3 | AudioParser MidiParser Mp3- para mp3parser |
Imageparsers | org.apache.tika.parser.jpeg | JpegParser - para imagens jpeg |
Videoformatos | org.apache.tika.parser.mp4 e org.apache.tika.parser.video este analisador usa internamente Algoritmo Simples para analisar formatos de vídeo em flash | Mp4parser FlvParser |
arquivos de classe java e arquivos jar | org.apache.tika.parser.asm | ClassParser CompressorParser |
Mobxformat (mensagens de e-mail) | org.apache.tika.parser.mbox | MobXParser |
Formatos Cad | org.apache.tika.parser.dwg | DWGParser |
FontFormats | org.apache.tika.parser.font | TrueTypeParser |
programas executáveis e bibliotecas | org.apache.tika.parser.executable | ExecutableParser |
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 caracteres
Os 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()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 Tika Fachada
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
Tika usa várias bibliotecas de analisadores para extrair conteúdo de determinados analisadores. Ele escolhe o analisador correto para extrair o tipo de documento fornecido.
Para analisar documentos, o método parseToString () da classe de fachada Tika é geralmente usado. Abaixo, são mostradas as etapas envolvidas no processo de análise e são abstraídas pelo método Tika ParsertoString ().
Abstraindo o processo de análise -
Inicialmente, quando passamos um documento para Tika, ele usa um mecanismo de detecção de tipo adequado disponível com ele e detecta o tipo de documento.
Uma vez que o tipo de documento é conhecido, ele escolhe um analisador adequado em seu repositório de analisador. O repositório do analisador contém classes que fazem uso de bibliotecas externas.
Em seguida, o documento é passado para escolher o analisador que analisará o conteúdo, extrairá o texto e também lançará exceções para formatos ilegíveis.
Extração de conteúdo usando Tika
A seguir está o programa para extrair texto de um arquivo usando a classe de fachada Tika -
import java.io.File;
import java.io.IOException;
import org.apache.tika.Tika;
import org.apache.tika.exception.TikaException;
import org.xml.sax.SAXException;
public class TikaExtraction {
public static void main(final String[] args) throws IOException, TikaException {
//Assume sample.txt is in your current directory
File file = new File("sample.txt");
//Instantiating Tika facade class
Tika tika = new Tika();
String filecontent = tika.parseToString(file);
System.out.println("Extracted Content: " + filecontent);
}
}
Salve o código acima como TikaExtraction.java e execute-o no prompt de comando -
javac TikaExtraction.java
java TikaExtraction
Abaixo está o conteúdo de sample.txt.
Hi students welcome to tutorialspoint
Ele fornece a seguinte saída -
Extracted Content: Hi students welcome to tutorialspoint
Extração de conteúdo usando a interface do analisador
O pacote analisador de Tika fornece várias interfaces e classes com as quais podemos analisar um documento de texto. A seguir está o diagrama de blocos doorg.apache.tika.parser pacote.
Existem várias classes de analisador disponíveis, por exemplo, analisador de pdf, Mp3Passer, OfficeParser, etc., para analisar os respectivos documentos individualmente. Todas essas classes implementam a interface do analisador.
CompositeParser
O diagrama fornecido mostra as classes do analisador de propósito geral de Tika: CompositeParser e AutoDetectParser. Como a classe CompositeParser segue o padrão de design composto, você pode usar um grupo de instâncias do analisador como um único analisador. A classe CompositeParser também permite acesso a todas as classes que implementam a interface do analisador.
AutoDetectParser
Esta é uma subclasse de CompositeParser e fornece detecção automática de tipo. Usando essa funcionalidade, o AutoDetectParser envia automaticamente os documentos recebidos para as classes de analisador apropriadas usando a metodologia composta.
método parse ()
Junto com parseToString (), você também pode usar o método parse () da interface do analisador. O protótipo deste método é mostrado abaixo.
parse(InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context)
A tabela a seguir lista os quatro objetos que aceita como parâmetros.
Sr. Não. | Objeto e descrição |
---|---|
1 | InputStream stream Qualquer objeto Inputstream que contém o conteúdo do arquivo |
2 | ContentHandler handler Tika passa o documento como conteúdo XHTML para esse manipulador, depois disso, o documento é processado usando a API SAX. Ele fornece pós-processamento eficiente do conteúdo de um documento. |
3 | Metadata metadata O objeto de metadados é usado como fonte e destino dos metadados do documento. |
4 | ParseContext context Este objeto é usado nos casos em que o aplicativo cliente deseja personalizar o processo de análise. |
Exemplo
Abaixo está um exemplo que mostra como o método parse () é usado.
Step 1 -
Para usar o método parse () da interface do analisador, instancie qualquer uma das classes que fornecem a implementação para essa interface.
Existem classes de analisadores individuais, como PDFParser, OfficeParser, XMLParser, etc. Você pode usar qualquer um desses analisadores de documentos individuais. Como alternativa, você pode usar CompositeParser ou AutoDetectParser que usa todas as classes de analisador internamente e extrai o conteúdo de um documento usando um analisador adequado.
Parser parser = new AutoDetectParser();
(or)
Parser parser = new CompositeParser();
(or)
object of any individual parsers given in Tika Library
Step 2 -
Crie um objeto de classe de manipulador. Abaixo estão os três gerenciadores de conteúdo -
Sr. Não. | Classe e descrição |
---|---|
1 | BodyContentHandler Esta classe escolhe a parte do corpo da saída XHTML e grava esse conteúdo no gravador de saída ou fluxo de saída. Em seguida, ele redireciona o conteúdo XHTML para outra instância do manipulador de conteúdo. |
2 | LinkContentHandler Esta classe detecta e escolhe todas as tags H-Ref do documento XHTML e as encaminha para o uso de ferramentas como rastreadores da web. |
3 | TeeContentHandler Esta classe ajuda a usar várias ferramentas simultaneamente. |
Como nosso objetivo é extrair o conteúdo de texto de um documento, instancie BodyContentHandler conforme mostrado abaixo -
BodyContentHandler handler = new BodyContentHandler( );
Step 3 -
Crie o objeto de Metadados conforme mostrado abaixo -
Metadata metadata = new Metadata();
Step 4 -
Crie qualquer um dos objetos de fluxo de entrada e passe o arquivo que deve ser extraído para ele.
FileInputstream
Instancie um objeto de arquivo passando o caminho do arquivo como parâmetro e passe esse objeto para o construtor da classe FileInputStream.
Note - O caminho passado para o objeto de arquivo não deve conter espaços.
O problema com essas classes de fluxo de entrada é que elas não suportam leituras de acesso aleatório, o que é necessário para processar alguns formatos de arquivo com eficiência. Para resolver esse problema, a Tika fornece TikaInputStream.
File file = new File(filepath)
FileInputStream inputstream = new FileInputStream(file);
(or)
InputStream stream = TikaInputStream.get(new File(filename));
Step 5 -
Crie um objeto de contexto de análise conforme mostrado abaixo -
ParseContext context =new ParseContext();
Step 6 -
Instancie o objeto analisador, invoque o método parse e passe todos os objetos necessários, conforme mostrado no protótipo abaixo -
parser.parse(inputstream, handler, metadata, context);
A seguir está o programa para extração de conteúdo usando a interface do analisador -
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 ParserExtraction {
public static void main(final String[] args) throws IOException,SAXException, TikaException {
//Assume sample.txt is in your current directory
File file = new File("sample.txt");
//parse 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 file
parser.parse(inputstream, handler, metadata, context);
System.out.println("File content : " + Handler.toString());
}
}
Salve o código acima como ParserExtraction.java e execute-o no prompt de comando -
javac ParserExtraction.java
java ParserExtraction
A seguir está o conteúdo de sample.txt
Hi students welcome to tutorialspoint
Se você executar o programa acima, ele fornecerá a seguinte saída -
File content : Hi students welcome to tutorialspoint
Além do conteúdo, Tika também extrai os metadados de um arquivo. Metadados nada mais são do que informações adicionais fornecidas com um arquivo. Se considerarmos um arquivo de áudio, o nome do artista, o nome do álbum, o título vêm sob os metadados.
Padrões XMP
A Extensible Metadata Platform (XMP) é um padrão para processar e armazenar informações relacionadas ao conteúdo de um arquivo. Foi criado pela Adobe Systems Inc . O XMP fornece padrões para definir, criar e processar metadados . Você pode incorporar este padrão em vários formatos de arquivo, como PDF , JPEG , JPEG , GIF , jpg , HTML etc.
Classe de Propriedade
Tika usa a classe Property para seguir a definição da propriedade XMP. Ele fornece os enums PropertyType e ValueType para capturar o nome e o valor de um metadado.
Classe de Metadados
Esta classe implementa várias interfaces, como ClimateForcast , CativeCommons, Geographic , TIFF etc. para fornecer suporte para vários modelos de metadados. Além disso, essa classe fornece vários métodos para extrair o conteúdo de um arquivo.
Nomes de Metadados
Podemos extrair a lista de todos os nomes de metadados de um arquivo de seu objeto de metadados usando os nomes de método () . Ele retorna todos os nomes como uma matriz de string. Usando o nome dos metadados, podemos obter o valor usando oget()método. Recebe um nome de metadados e retorna um valor associado a ele.
String[] metadaNames = metadata.names();
String value = metadata.get(name);
Extração de metadados usando o método de análise
Sempre que analisamos um arquivo usando parse (), passamos um objeto de metadados vazio como um dos parâmetros. Este método extrai os metadados do arquivo fornecido (se esse arquivo contiver algum) e os coloca no objeto de metadados. Portanto, depois de analisar o arquivo usando parse (), podemos extrair os metadados desse objeto.
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();
A seguir está o programa completo para extrair metadados de um arquivo de texto.
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));
}
}
}
Salve o código acima como GetMetadata.java e execute-o no prompt de comando usando os seguintes comandos -
javac GetMetadata .java
java GetMetadata
Abaixo está o instantâneo de boy.jpg
Se você executar o programa acima, ele fornecerá a seguinte saída -
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
Também podemos obter nossos valores de metadados desejados.
Adicionando Novos Valores de Metadados
Podemos adicionar novos valores de metadados usando o método add () da classe de metadados. A seguir está a sintaxe desse método. Aqui estamos adicionando o nome do autor.
metadata.add(“author”,”Tutorials point”);
A classe Metadata possui propriedades predefinidas, incluindo as propriedades herdadas de classes como ClimateForcast , CativeCommons, Geographic , etc., para oferecer suporte a vários modelos de dados. Abaixo, é mostrado o uso do tipo de dados SOFTWARE herdado da interface TIFF implementada pela Tika para seguir os padrões de metadados XMP para formatos de imagem TIFF.
metadata.add(Metadata.SOFTWARE,"ms paint");
A seguir está o programa completo que demonstra como adicionar valores de metadados a um determinado arquivo. Aqui, a lista dos elementos de metadados é exibida na saída para que você possa observar a mudança na lista após adicionar novos valores.
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()));
}
}
Salve o código acima como classe AddMetadata.java e execute-o no prompt de comando -
javac AddMetadata .java
java AddMetadata
Abaixo está o conteúdo de Example.txt
Hi students welcome to tutorialspoint
Se você executar o programa acima, ele fornecerá a seguinte saída -
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]
Definindo Valores para Elementos de Metadados Existentes
Você pode definir valores para os elementos de metadados existentes usando o método set (). A sintaxe para definir a propriedade de data usando o método set () é a seguinte -
metadata.set(Metadata.DATE, new Date());
Você também pode definir vários valores para as propriedades usando o método set (). A sintaxe para definir vários valores para a propriedade Author usando o método set () é a seguinte -
metadata.set(Metadata.AUTHOR, "ram ,raheem ,robin ");
Abaixo está o programa completo que demonstra o método 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));
}
}
}
Salve o código acima como SetMetadata.java e execute-o no prompt de comando -
javac SetMetadata.java
java SetMetadata
A seguir está o conteúdo de example.txt.
Hi students welcome to tutorialspoint
Se você executar o programa acima, ele fornecerá a seguinte saída. Na saída, você pode observar os elementos de metadados recém-adicionados.
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
Necessidade de detecção de idioma
Para a classificação de documentos com base no idioma em que são escritos em um site multilíngue, é necessária uma ferramenta de detecção de idioma. Esta ferramenta deve aceitar documentos sem anotação de idioma (metadados) e adicionar essa informação nos metadados do documento detectando o idioma.
Algoritmos para Profiling Corpus
O que é Corpus?
Para detectar o idioma de um documento, um perfil de idioma é construído e comparado com o perfil dos idiomas conhecidos. O conjunto de textos desses idiomas conhecidos é conhecido como umcorpus.
Um corpus é uma coleção de textos de uma linguagem escrita que explica como a linguagem é usada em situações reais.
O corpus é desenvolvido a partir de livros, transcrições e outros recursos de dados como a Internet. A precisão do corpus depende do algoritmo de criação de perfil que usamos para enquadrar o corpus.
O que são algoritmos de criação de perfil?
A maneira comum de detectar idiomas é usando dicionários. As palavras usadas em um determinado texto serão comparadas com aquelas que estão nos dicionários.
Uma lista de palavras comuns usadas em um idioma será o corpus mais simples e eficaz para detectar um determinado idioma, por exemplo, artigos a, an, the em inglês.
Usando Conjuntos de Palavras como Corpus
Usando conjuntos de palavras, um algoritmo simples é estruturado para encontrar a distância entre dois corpora, que será igual à soma das diferenças entre as frequências de palavras correspondentes.
Esses algoritmos sofrem dos seguintes problemas -
Uma vez que a frequência de palavras correspondentes é muito menor, o algoritmo não pode trabalhar de forma eficiente com textos pequenos com poucas frases. Necessita de muito texto para uma correspondência precisa.
Ele não pode detectar limites de palavras para idiomas com frases compostas e aqueles que não têm divisores de palavras, como espaços ou sinais de pontuação.
Devido a essas dificuldades em usar conjuntos de palavras como corpus, caracteres individuais ou grupos de caracteres são considerados.
Usando conjuntos de caracteres como corpus
Como os caracteres comumente usados em um idioma são finitos em número, é fácil aplicar um algoritmo baseado em frequências de palavras em vez de caracteres. Este algoritmo funciona ainda melhor no caso de certos conjuntos de caracteres usados em um ou poucos idiomas.
Este algoritmo sofre das seguintes desvantagens -
É difícil diferenciar dois idiomas com frequências de caracteres semelhantes.
Não existe uma ferramenta ou algoritmo específico para identificar especificamente um idioma com a ajuda (como corpus) do conjunto de caracteres usado por vários idiomas.
Algoritmo N-gram
As desvantagens indicadas acima deram origem a uma nova abordagem de uso de sequências de caracteres de um determinado comprimento para o corpus de perfil. Essa seqüência de caracteres é chamada de N-gramas em geral, onde N representa o comprimento da seqüência de caracteres.
O algoritmo N-gram é uma abordagem eficaz para detecção de idiomas, especialmente no caso de idiomas europeus como o inglês.
Este algoritmo funciona bem com textos curtos.
Embora existam algoritmos de perfil de idioma avançados para detectar vários idiomas em um documento multilíngue com recursos mais atraentes, Tika usa o algoritmo de 3 gramas, pois é adequado na maioria das situações práticas.
Detecção de idioma em Tika
Entre todos os 184 idiomas padronizados pela ISO 639-1, o Tika pode detectar 18 idiomas. A detecção de idioma no Tika é feita usando ogetLanguage() método do LanguageIdentifierclasse. Este método retorna o nome do código do idioma no formato String. A seguir está a lista dos 18 pares de códigos de idioma detectados por Tika -
da — dinamarquês | de — alemão | et — estoniano | el — grego |
en — inglês | es — espanhol | fi — finlandês | fr — francês |
hu — húngaro | é — islandês | it — italiano | nl — holandês |
não — norueguês | pl — polonês | pt — português | ru — russo |
sv — sueco | th — tailandês |
Ao instanciar o LanguageIdentifier classe, você deve passar o formato String do conteúdo a ser extraído, ou um LanguageProfile objeto de classe.
LanguageIdentifier object = new LanguageIdentifier(“this is english”);
A seguir está o programa de exemplo para detecção de idioma em Tika.
import java.io.IOException;
import org.apache.tika.exception.TikaException;
import org.apache.tika.language.LanguageIdentifier;
import org.xml.sax.SAXException;
public class LanguageDetection {
public static void main(String args[])throws IOException, SAXException, TikaException {
LanguageIdentifier identifier = new LanguageIdentifier("this is english ");
String language = identifier.getLanguage();
System.out.println("Language of the given content is : " + language);
}
}
Salve o código acima como LanguageDetection.java e execute-o a partir do prompt de comando usando os seguintes comandos -
javac LanguageDetection.java
java LanguageDetection
Se você executar o programa acima, ele dará o seguinte resultado
Language of the given content is : en
Detecção de idioma de um documento
Para detectar o idioma de um determinado documento, você deve analisá-lo usando o método parse (). O método parse () analisa o conteúdo e o armazena no objeto manipulador, que foi passado a ele como um dos argumentos. Passe o formato String do objeto manipulador para o construtor doLanguageIdentifier classe como mostrado abaixo -
parser.parse(inputstream, handler, metadata, context);
LanguageIdentifier object = new LanguageIdentifier(handler.toString());
Abaixo está o programa completo que demonstra como detectar o idioma de um determinado documento -
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.apache.tika.language.*;
import org.xml.sax.SAXException;
public class DocumentLanguageDetection {
public static void main(final String[] args) throws IOException, SAXException, TikaException {
//Instantiating a file object
File file = new File("Example.txt");
//Parser method parameters
Parser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream content = new FileInputStream(file);
//Parsing the given document
parser.parse(content, handler, metadata, new ParseContext());
LanguageIdentifier object = new LanguageIdentifier(handler.toString());
System.out.println("Language name :" + object.getLanguage());
}
}
Salve o código acima como SetMetadata.java e execute-o no prompt de comando -
javac SetMetadata.java
java SetMetadata
A seguir está o conteúdo de Example.txt.
Hi students welcome to tutorialspoint
Se você executar o programa acima, ele fornecerá a seguinte saída -
Language name :en
Junto com o jar Tika, Tika fornece um aplicativo de interface gráfica do usuário (GUI) e um aplicativo de interface de linha de comando (CLI). Você também pode executar um aplicativo Tika a partir do prompt de comando, como outros aplicativos Java.
Interface gráfica do usuário (GUI)
Tika fornece um arquivo jar junto com seu código-fonte no link a seguir https://tika.apache.org/download.html.
Baixe ambos os arquivos, defina o classpath para o arquivo jar.
Extraia a pasta zip do código-fonte e abra a pasta tika-app.
Na pasta extraída em “tika-1.6 \ tika-app \ src \ main \ java \ org \ apache \ Tika \ gui”, você verá dois arquivos de classe: ParsingTransferHandler.java e TikaGUI.java.
Compile ambos os arquivos de classe e execute o arquivo de classe TikaGUI.java, ele abre a seguinte janela.
Vamos agora ver como usar a GUI do Tika.
Na GUI, clique em abrir, navegue e selecione um arquivo a ser extraído ou arraste-o para o espaço em branco da janela.
Tika extrai o conteúdo dos arquivos e o exibe em cinco formatos diferentes, viz. metadados, texto formatado, texto simples, conteúdo principal e texto estruturado. Você pode escolher qualquer formato que desejar.
Da mesma forma, você também encontrará a classe CLI na pasta “tika-1.6 \ tikaapp \ src \ main \ java \ org \ apache \ tika \ cli”.
A ilustração a seguir mostra o que Tika pode fazer. Quando colocamos a imagem na GUI, Tika extrai e exibe seus metadados.
A seguir está o programa para extrair conteúdo e metadados de um PDF.
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.ParseContext;
import org.apache.tika.parser.pdf.PDFParser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.SAXException;
public class PdfParse {
public static void main(final String[] args) throws IOException,TikaException {
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(new File("Example.pdf"));
ParseContext pcontext = new ParseContext();
//parsing the document using PDF parser
PDFParser pdfparser = new PDFParser();
pdfparser.parse(inputstream, handler, metadata,pcontext);
//getting the content of the document
System.out.println("Contents of the PDF :" + handler.toString());
//getting metadata of the document
System.out.println("Metadata of the PDF:");
String[] metadataNames = metadata.names();
for(String name : metadataNames) {
System.out.println(name+ " : " + metadata.get(name));
}
}
}
Salve o código acima como PdfParse.java, e compilá-lo a partir do prompt de comando usando os seguintes comandos -
javac PdfParse.java
java PdfParse
Abaixo, está o instantâneo de example.pdf
O PDF que estamos passando tem as seguintes propriedades -
Depois de compilar o programa, você obterá a saída conforme mostrado abaixo.
Output -
Contents of the PDF:
Apache Tika is a framework for content type detection and content extraction
which was designed by Apache software foundation. It detects and extracts metadata
and structured text content from different types of documents such as spreadsheets,
text documents, images or PDFs including audio or video input formats to certain extent.
Metadata of the PDF:
dcterms:modified : 2014-09-28T12:31:16Z
meta:creation-date : 2014-09-28T12:31:16Z
meta:save-date : 2014-09-28T12:31:16Z
dc:creator : Krishna Kasyap
pdf:PDFVersion : 1.5
Last-Modified : 2014-09-28T12:31:16Z
Author : Krishna Kasyap
dcterms:created : 2014-09-28T12:31:16Z
date : 2014-09-28T12:31:16Z
modified : 2014-09-28T12:31:16Z
creator : Krishna Kasyap
xmpTPg:NPages : 1
Creation-Date : 2014-09-28T12:31:16Z
pdf:encrypted : false
meta:author : Krishna Kasyap
created : Sun Sep 28 05:31:16 PDT 2014
dc:format : application/pdf; version = 1.5
producer : Microsoft® Word 2013
Content-Type : application/pdf
xmp:CreatorTool : Microsoft® Word 2013
Last-Save-Date : 2014-09-28T12:31:16Z
A seguir é fornecido o programa para extrair conteúdo e metadados do Open Office Document Format (ODF).
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.ParseContext;
import org.apache.tika.parser.odf.OpenDocumentParser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.SAXException;
public class OpenDocumentParse {
public static void main(final String[] args) throws IOException,SAXException, TikaException {
//detecting the file type
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(new File("example_open_document_presentation.odp"));
ParseContext pcontext = new ParseContext();
//Open Document Parser
OpenDocumentParser openofficeparser = new OpenDocumentParser ();
openofficeparser.parse(inputstream, handler, metadata,pcontext);
System.out.println("Contents of the document:" + handler.toString());
System.out.println("Metadata of the document:");
String[] metadataNames = metadata.names();
for(String name : metadataNames) {
System.out.println(name + " : " + metadata.get(name));
}
}
}
Salve o código acima como OpenDocumentParse.java, e compilá-lo no prompt de comando usando os seguintes comandos -
javac OpenDocumentParse.java
java OpenDocumentParse
A seguir, é fornecido um instantâneo do arquivo example_open_document_presentation.odp.
Este documento possui as seguintes propriedades -
Após compilar o programa, você obterá a seguinte saída.
Output -
Contents of the document:
Apache Tika
Apache Tika is a framework for content type detection and content extraction which was designed
by Apache software foundation. It detects and extracts metadata and structured text content from
different types of documents such as spreadsheets, text documents, images or PDFs including audio
or video input formats to certain extent.
Metadata of the document:
editing-cycles: 4
meta:creation-date: 2009-04-16T11:32:32.86
dcterms:modified: 2014-09-28T07:46:13.03
meta:save-date: 2014-09-28T07:46:13.03
Last-Modified: 2014-09-28T07:46:13.03
dcterms:created: 2009-04-16T11:32:32.86
date: 2014-09-28T07:46:13.03
modified: 2014-09-28T07:46:13.03
nbObject: 36
Edit-Time: PT32M6S
Creation-Date: 2009-04-16T11:32:32.86
Object-Count: 36
meta:object-count: 36
generator: OpenOffice/4.1.0$Win32 OpenOffice.org_project/410m18$Build-9764
Content-Type: application/vnd.oasis.opendocument.presentation
Last-Save-Date: 2014-09-28T07:46:13.03
A seguir é fornecido o programa para extrair conteúdo e metadados de um documento do Microsoft Office.
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.ParseContext;
import org.apache.tika.parser.microsoft.ooxml.OOXMLParser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.SAXException;
public class MSExcelParse {
public static void main(final String[] args) throws IOException, TikaException {
//detecting the file type
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(new File("example_msExcel.xlsx"));
ParseContext pcontext = new ParseContext();
//OOXml parser
OOXMLParser msofficeparser = new OOXMLParser ();
msofficeparser.parse(inputstream, handler, metadata,pcontext);
System.out.println("Contents of the document:" + handler.toString());
System.out.println("Metadata of the document:");
String[] metadataNames = metadata.names();
for(String name : metadataNames) {
System.out.println(name + ": " + metadata.get(name));
}
}
}
Salve o código acima como MSExelParse.java, e compilá-lo a partir do prompt de comando usando os seguintes comandos -
javac MSExcelParse.java
java MSExcelParse
Aqui, estamos passando o seguinte arquivo de exemplo do Excel.
O arquivo Excel fornecido tem as seguintes propriedades -
Depois de executar o programa acima, você obterá a seguinte saída.
Output -
Contents of the document:
Sheet1
Name Age Designation Salary
Ramu 50 Manager 50,000
Raheem 40 Assistant manager 40,000
Robert 30 Superviser 30,000
sita 25 Clerk 25,000
sameer 25 Section in-charge 20,000
Metadata of the document:
meta:creation-date: 2006-09-16T00:00:00Z
dcterms:modified: 2014-09-28T15:18:41Z
meta:save-date: 2014-09-28T15:18:41Z
Application-Name: Microsoft Excel
extended-properties:Company:
dcterms:created: 2006-09-16T00:00:00Z
Last-Modified: 2014-09-28T15:18:41Z
Application-Version: 15.0300
date: 2014-09-28T15:18:41Z
publisher:
modified: 2014-09-28T15:18:41Z
Creation-Date: 2006-09-16T00:00:00Z
extended-properties:AppVersion: 15.0300
protected: false
dc:publisher:
extended-properties:Application: Microsoft Excel
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Last-Save-Date: 2014-09-28T15:18:41Z
A seguir está o programa para extrair conteúdo e metadados de um documento de texto -
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.ParseContext;
import org.apache.tika.sax.BodyContentHandler;
import org.apache.tika.parser.txt.TXTParser;
import org.xml.sax.SAXException;
public class TextParser {
public static void main(final String[] args) throws IOException,SAXException, TikaException {
//detecting the file type
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(new File("example.txt"));
ParseContext pcontext=new ParseContext();
//Text document parser
TXTParser TexTParser = new TXTParser();
TexTParser.parse(inputstream, handler, metadata,pcontext);
System.out.println("Contents of the document:" + handler.toString());
System.out.println("Metadata of the document:");
String[] metadataNames = metadata.names();
for(String name : metadataNames) {
System.out.println(name + " : " + metadata.get(name));
}
}
}
Salve o código acima como TextParser.java, e compilá-lo a partir do prompt de comando usando os seguintes comandos -
javac TextParser.java
java TextParser
A seguir está o instantâneo do arquivo sample.txt -
O documento de texto tem as seguintes propriedades -
Se você executar o programa acima, ele fornecerá a seguinte saída.
Output -
Contents of the document:
At tutorialspoint.com, we strive hard to provide quality tutorials for self-learning
purpose in the domains of Academics, Information Technology, Management and Computer
Programming Languages.
The endeavour started by Mohtashim, an AMU alumni, who is the founder and the managing
director of Tutorials Point (I) Pvt. Ltd. He came up with the website tutorialspoint.com
in year 2006 with the help of handpicked freelancers, with an array of tutorials for
computer programming languages.
Metadata of the document:
Content-Encoding: windows-1252
Content-Type: text/plain; charset = windows-1252
A seguir é fornecido o programa para extrair conteúdo e metadados de um documento HTML.
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.ParseContext;
import org.apache.tika.parser.html.HtmlParser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.SAXException;
public class HtmlParse {
public static void main(final String[] args) throws IOException,SAXException, TikaException {
//detecting the file type
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(new File("example.html"));
ParseContext pcontext = new ParseContext();
//Html parser
HtmlParser htmlparser = new HtmlParser();
htmlparser.parse(inputstream, handler, metadata,pcontext);
System.out.println("Contents of the document:" + handler.toString());
System.out.println("Metadata of the document:");
String[] metadataNames = metadata.names();
for(String name : metadataNames) {
System.out.println(name + ": " + metadata.get(name));
}
}
}
Salve o código acima como HtmlParse.java, e compilá-lo a partir do prompt de comando usando os seguintes comandos -
javac HtmlParse.java
java HtmlParse
A seguir está o instantâneo do arquivo example.txt.
O documento HTML tem as seguintes propriedades–
Se você executar o programa acima, ele fornecerá a seguinte saída.
Output -
Contents of the document:
Name Salary age
Ramesh Raman 50000 20
Shabbir Hussein 70000 25
Umesh Raman 50000 30
Somesh 50000 35
Metadata of the document:
title: HTML Table Header
Content-Encoding: windows-1252
Content-Type: text/html; charset = windows-1252
dc:title: HTML Table Header
A seguir está o programa para extrair conteúdo e metadados de um documento XML -
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.ParseContext;
import org.apache.tika.parser.xml.XMLParser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.SAXException;
public class XmlParse {
public static void main(final String[] args) throws IOException,SAXException, TikaException {
//detecting the file type
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(new File("pom.xml"));
ParseContext pcontext = new ParseContext();
//Xml parser
XMLParser xmlparser = new XMLParser();
xmlparser.parse(inputstream, handler, metadata, pcontext);
System.out.println("Contents of the document:" + handler.toString());
System.out.println("Metadata of the document:");
String[] metadataNames = metadata.names();
for(String name : metadataNames) {
System.out.println(name + ": " + metadata.get(name));
}
}
}
Salve o código acima como XmlParse.java, e compilá-lo a partir do prompt de comando usando os seguintes comandos -
javac XmlParse.java
java XmlParse
A seguir está o instantâneo do arquivo example.xml
Este documento possui as seguintes propriedades -
Se você executar o programa acima, ele fornecerá a seguinte saída -
Output -
Contents of the document:
4.0.0
org.apache.tika
tika
1.6
org.apache.tika
tika-core
1.6
org.apache.tika
tika-parsers
1.6
src
maven-compiler-plugin
3.1
1.7
1.7
Metadata of the document:
Content-Type: application/xml
A seguir está o programa para extrair conteúdo e metadados de um arquivo .class.
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.ParseContext;
import org.apache.tika.parser.asm.ClassParser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.SAXException;
public class JavaClassParse {
public static void main(final String[] args) throws IOException,SAXException, TikaException {
//detecting the file type
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(new File("Example.class"));
ParseContext pcontext = new ParseContext();
//Html parser
ClassParser ClassParser = new ClassParser();
ClassParser.parse(inputstream, handler, metadata,pcontext);
System.out.println("Contents of the document:" + handler.toString());
System.out.println("Metadata of the document:");
String[] metadataNames = metadata.names();
for(String name : metadataNames) {
System.out.println(name + " : " + metadata.get(name));
}
}
}
Salve o código acima como JavaClassParse.java, e compilá-lo a partir do prompt de comando usando os seguintes comandos -
javac JavaClassParse.java
java JavaClassParse
A seguir está o instantâneo de Example.java que irá gerar Example.class após a compilação.
Example.class arquivo tem as seguintes propriedades -
Depois de executar o programa acima, você obterá a seguinte saída.
Output -
Contents of the document:
package tutorialspoint.tika.examples;
public synchronized class Example {
public void Example();
public static void main(String[]);
}
Metadata of the document:
title: Example
resourceName: Example.class
dc:title: Example
A seguir está o programa para extrair conteúdo e metadados de um arquivo Java Archive (jar) -
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.ParseContext;
import org.apache.tika.sax.BodyContentHandler;
import org.apache.tika.parser.pkg.PackageParser;
import org.xml.sax.SAXException;
public class PackageParse {
public static void main(final String[] args) throws IOException,SAXException, TikaException {
//detecting the file type
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(new File("Example.jar"));
ParseContext pcontext = new ParseContext();
//Package parser
PackageParser packageparser = new PackageParser();
packageparser.parse(inputstream, handler, metadata,pcontext);
System.out.println("Contents of the document: " + handler.toString());
System.out.println("Metadata of the document:");
String[] metadataNames = metadata.names();
for(String name : metadataNames) {
System.out.println(name + ": " + metadata.get(name));
}
}
}
Salve o código acima como PackageParse.java, e compilá-lo a partir do prompt de comando usando os seguintes comandos -
javac PackageParse.java
java PackageParse
A seguir está o instantâneo de Example.java que reside dentro do pacote.
O arquivo jar tem as seguintes propriedades -
Depois de executar o programa acima, ele fornecerá a seguinte saída -
Output -
Contents of the document:
META-INF/MANIFEST.MF
tutorialspoint/tika/examples/Example.class
Metadata of the document:
Content-Type: application/zip
A seguir é fornecido o programa para extrair conteúdo e metadados de uma imagem JPEG.
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.ParseContext;
import org.apache.tika.parser.jpeg.JpegParser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.SAXException;
public class JpegParse {
public static void main(final String[] args) throws IOException,SAXException, TikaException {
//detecting the file type
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(new File("boy.jpg"));
ParseContext pcontext = new ParseContext();
//Jpeg Parse
JpegParser JpegParser = new JpegParser();
JpegParser.parse(inputstream, handler, metadata,pcontext);
System.out.println("Contents of the document:" + handler.toString());
System.out.println("Metadata of the document:");
String[] metadataNames = metadata.names();
for(String name : metadataNames) {
System.out.println(name + ": " + metadata.get(name));
}
}
}
Salve o código acima como JpegParse.java, e compilá-lo a partir do prompt de comando usando os seguintes comandos -
javac JpegParse.java
java JpegParse
A seguir está o instantâneo de Example.jpeg -
O arquivo JPEG tem as seguintes propriedades -
Depois de executar o programa, você obterá a seguinte saída.
Output −
Contents of the document:
Meta data of the document:
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
Y Resolution: 300 dots
A seguir está o programa para extrair conteúdo e metadados de arquivos MP4 -
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.ParseContext;
import org.apache.tika.parser.mp4.MP4Parser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.SAXException;
public class Mp4Parse {
public static void main(final String[] args) throws IOException,SAXException, TikaException {
//detecting the file type
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(new File("example.mp4"));
ParseContext pcontext = new ParseContext();
//Html parser
MP4Parser MP4Parser = new MP4Parser();
MP4Parser.parse(inputstream, handler, metadata,pcontext);
System.out.println("Contents of the document: :" + handler.toString());
System.out.println("Metadata of the document:");
String[] metadataNames = metadata.names();
for(String name : metadataNames) {
System.out.println(name + ": " + metadata.get(name));
}
}
}
Salve o código acima como JpegParse.java e compile-o no prompt de comando usando os seguintes comandos -
javac Mp4Parse.java
java Mp4Parse
A seguir está o instantâneo das propriedades do arquivo Example.mp4.
Depois de executar o programa acima, você obterá a seguinte saída -
Output -
Contents of the document:
Metadata of the document:
dcterms:modified: 2014-01-06T12:10:27Z
meta:creation-date: 1904-01-01T00:00:00Z
meta:save-date: 2014-01-06T12:10:27Z
Last-Modified: 2014-01-06T12:10:27Z
dcterms:created: 1904-01-01T00:00:00Z
date: 2014-01-06T12:10:27Z
tiff:ImageLength: 360
modified: 2014-01-06T12:10:27Z
Creation-Date: 1904-01-01T00:00:00Z
tiff:ImageWidth: 640
Content-Type: video/mp4
Last-Save-Date: 2014-01-06T12:10:27Z
A seguir está o programa para extrair conteúdo e metadados de arquivos mp3 -
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.ParseContext;
import org.apache.tika.parser.mp3.LyricsHandler;
import org.apache.tika.parser.mp3.Mp3Parser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.SAXException;
public class Mp3Parse {
public static void main(final String[] args) throws Exception, IOException, SAXException, TikaException {
//detecting the file type
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(new File("example.mp3"));
ParseContext pcontext = new ParseContext();
//Mp3 parser
Mp3Parser Mp3Parser = new Mp3Parser();
Mp3Parser.parse(inputstream, handler, metadata, pcontext);
LyricsHandler lyrics = new LyricsHandler(inputstream,handler);
while(lyrics.hasLyrics()) {
System.out.println(lyrics.toString());
}
System.out.println("Contents of the document:" + handler.toString());
System.out.println("Metadata of the document:");
String[] metadataNames = metadata.names();
for(String name : metadataNames) {
System.out.println(name + ": " + metadata.get(name));
}
}
}
Salve o código acima como JpegParse.java, e compilá-lo a partir do prompt de comando usando os seguintes comandos -
javac Mp3Parse.java
java Mp3Parse
O arquivo example.mp3 tem as seguintes propriedades -
Você obterá a seguinte saída após executar o programa. Se o arquivo fornecido tiver alguma letra, nosso aplicativo irá capturar e exibir junto com a saída.
Output -
Contents of the document:
Kanulanu Thaake
Arijit Singh
Manam (2014), track 01/06
2014
Soundtrack
30171.65
eng -
DRGM
Arijit Singh
Manam (2014), track 01/06
2014
Soundtrack
30171.65
eng -
DRGM
Metadata of the document:
xmpDM:releaseDate: 2014
xmpDM:duration: 30171.650390625
xmpDM:audioChannelType: Stereo
dc:creator: Arijit Singh
xmpDM:album: Manam (2014)
Author: Arijit Singh
xmpDM:artist: Arijit Singh
channels: 2
xmpDM:audioSampleRate: 44100
xmpDM:logComment: eng -
DRGM
xmpDM:trackNumber: 01/06
version: MPEG 3 Layer III Version 1
creator: Arijit Singh
xmpDM:composer: Music : Anoop Rubens | Lyrics : Vanamali
xmpDM:audioCompressor: MP3
title: Kanulanu Thaake
samplerate: 44100
meta:author: Arijit Singh
xmpDM:genre: Soundtrack
Content-Type: audio/mpeg
xmpDM:albumArtist: Manam (2014)
dc:title: Kanulanu Thaake