TIKA - Guida rapida
Cos'è Apache Tika?
Apache Tika è una libreria utilizzata per il rilevamento del tipo di documento e l'estrazione di contenuto da vari formati di file.
Internamente, Tika utilizza vari analizzatori di documenti esistenti e tecniche di rilevamento del tipo di documento per rilevare ed estrarre i dati.
Utilizzando Tika, è possibile sviluppare un rilevatore di tipo universale e un estrattore di contenuto per estrarre sia testo strutturato che metadati da diversi tipi di documenti come fogli di calcolo, documenti di testo, immagini, PDF e persino formati di input multimediali in una certa misura.
Tika fornisce un'unica API generica per analizzare diversi formati di file. Utilizza librerie parser specializzate esistenti per ogni tipo di documento.
Tutte queste librerie di parser sono incapsulate in un'unica interfaccia chiamata Parser interface.
Perché Tika?
Secondo filext.com, ci sono da 15k a 51k tipi di contenuto e questo numero cresce di giorno in giorno. I dati vengono archiviati in vari formati come documenti di testo, fogli di calcolo Excel, PDF, immagini e file multimediali, solo per citarne alcuni. Pertanto, applicazioni come motori di ricerca e sistemi di gestione dei contenuti necessitano di supporto aggiuntivo per una facile estrazione dei dati da questi tipi di documenti. Apache Tika serve a questo scopo fornendo un'API generica per individuare ed estrarre dati da più formati di file.
Applicazioni Apache Tika
Esistono varie applicazioni che utilizzano Apache Tika. Qui discuteremo alcune importanti applicazioni che dipendono fortemente da Apache Tika.
Motori di ricerca
Tika è ampiamente utilizzato durante lo sviluppo di motori di ricerca per indicizzare i contenuti testuali dei documenti digitali.
I motori di ricerca sono sistemi di elaborazione delle informazioni progettati per cercare informazioni e documenti indicizzati dal Web.
Il crawler è un componente importante di un motore di ricerca che esegue la scansione attraverso il Web per recuperare i documenti che devono essere indicizzati utilizzando alcune tecniche di indicizzazione. Successivamente, il crawler trasferisce questi documenti indicizzati a un componente di estrazione.
Il compito del componente di estrazione è quello di estrarre il testo ei metadati dal documento. Tali contenuti e metadati estratti sono molto utili per un motore di ricerca. Questo componente di estrazione contiene Tika.
Il contenuto estratto viene quindi passato all'indicizzatore del motore di ricerca che lo utilizza per creare un indice di ricerca. Oltre a questo, il motore di ricerca utilizza il contenuto estratto anche in molti altri modi.
Analisi dei documenti
Nel campo dell'intelligenza artificiale esistono alcuni strumenti per analizzare automaticamente i documenti a livello semantico ed estrarne tutti i tipi di dati.
In tali applicazioni, i documenti sono classificati in base ai termini in evidenza nel contenuto estratto del documento.
Questi strumenti fanno uso di Tika per l'estrazione di contenuti per analizzare documenti che variano dal testo normale ai documenti digitali.
Gestione delle risorse digitali
Alcune organizzazioni gestiscono le proprie risorse digitali come fotografie, ebook, disegni, musica e video utilizzando un'applicazione speciale nota come digital asset management (DAM).
Tali applicazioni utilizzano i rilevatori del tipo di documento e l'estrattore di metadati per classificare i vari documenti.
Analisi del contenuto
Siti web come Amazon consigliano i contenuti appena rilasciati del loro sito web ai singoli utenti in base ai loro interessi. Per fare ciò, seguono questi siti webmachine learning techniqueso utilizza i siti web di social media come Facebook per estrarre le informazioni richieste come i Mi piace e gli interessi degli utenti. Queste informazioni raccolte saranno sotto forma di tag html o altri formati che richiedono un ulteriore rilevamento ed estrazione del tipo di contenuto.
Per l'analisi del contenuto di un documento, abbiamo tecnologie che implementano tecniche di machine learning come UIMA e Mahout. Queste tecnologie sono utili per raggruppare e analizzare i dati nei documenti.
Apache Mahoutè un framework che fornisce algoritmi ML su Apache Hadoop, una piattaforma di cloud computing. Mahout fornisce un'architettura seguendo alcune tecniche di clustering e filtraggio. Seguendo questa architettura, i programmatori possono scrivere i propri algoritmi ML per produrre raccomandazioni prendendo varie combinazioni di testo e metadati. Per fornire input a questi algoritmi, le versioni recenti di Mahout utilizzano Tika per estrarre testo e metadati dal contenuto binario.
Apache UIMAanalizza ed elabora vari linguaggi di programmazione e produce annotazioni UIMA. Internamente utilizza Tika Annotator per estrarre il testo del documento e i metadati.
Storia
Anno | Sviluppo |
---|---|
2006 | L'idea di Tika è stata proiettata davanti al comitato di gestione del progetto Lucene. |
2006 | È stato discusso il concetto di Tika e la sua utilità nel progetto Jackrabbit. |
2007 | Tika è entrata nell'incubatrice Apache. |
2008 | Le versioni 0.1 e 0.2 sono state rilasciate e Tika è passata dall'incubatore al sottoprogetto Lucene. |
2009 | Sono state rilasciate le versioni 0.3, 0.4 e 0.5. |
2010 | Le versioni 0.6 e 0.7 sono state rilasciate e Tika è passata al progetto Apache di primo livello. |
2011 | Tika 1.0 è stato rilasciato e il libro su Tika "Tika in Action" è stato rilasciato nello stesso anno. |
Architettura a livello di applicazione di Tika
I programmatori di applicazioni possono integrare facilmente Tika nelle loro applicazioni. Tika fornisce un'interfaccia a riga di comando e una GUI per renderlo facile da usare.
In questo capitolo discuteremo i quattro importanti moduli che costituiscono l'architettura di Tika. La figura seguente mostra l'architettura di Tika insieme ai suoi quattro moduli:
- Meccanismo di rilevamento della lingua.
- Meccanismo di rilevamento MIME.
- Interfaccia parser.
- Classe Tika Facade.
Meccanismo di rilevamento della lingua
Ogni volta che un documento di testo viene passato a Tika, rileverà la lingua in cui è stato scritto. Accetta documenti senza annotazioni sulla lingua e aggiunge tali informazioni nei metadati del documento rilevando la lingua.
Per supportare l'identificazione della lingua, Tika ha una classe chiamata Language Identifier nella confezione org.apache.tika.languagee un repository di identificazione della lingua all'interno del quale contiene algoritmi per il rilevamento della lingua da un dato testo. Tika utilizza internamente l'algoritmo N-gram per il rilevamento del linguaggio.
Meccanismo di rilevamento MIME
Tika può rilevare il tipo di documento in base agli standard MIME. Il rilevamento del tipo MIME predefinito in Tika viene eseguito utilizzando org.apache.tika.mime.mimeTypes . Utilizza l' interfaccia org.apache.tika.detect.Detector per la maggior parte del rilevamento del tipo di contenuto.
Internamente Tika utilizza diverse tecniche come file glob, suggerimenti sul tipo di contenuto, magic bytes, codifiche dei caratteri e molte altre tecniche.
Interfaccia parser
L'interfaccia del parser di org.apache.tika.parser è l'interfaccia chiave per l'analisi dei documenti in Tika. Questa interfaccia estrae il testo e i metadati da un documento e li riassume per gli utenti esterni che desiderano scrivere plug-in parser.
Utilizzando diverse classi di parser concrete, specifiche per i singoli tipi di documento, Tika supporta molti formati di documenti. Queste classi specifiche del formato forniscono supporto per diversi formati di documento, implementando direttamente la logica del parser o utilizzando librerie di parser esterne.
Tika Facade Class
L'utilizzo della classe di facciata Tika è il modo più semplice e diretto per chiamare Tika da Java e segue il modello di progettazione della facciata. Puoi trovare la classe di facciata Tika nel pacchetto org.apache.tika di Tika API.
Implementando casi d'uso di base, Tika funge da mediatore del paesaggio. Astrae la complessità sottostante della libreria Tika come il meccanismo di rilevamento MIME, l'interfaccia parser e il meccanismo di rilevamento della lingua e fornisce agli utenti un'interfaccia semplice da utilizzare.
Caratteristiche di Tika
Unified parser Interface- Tika incapsula tutte le librerie parser di terze parti in un'unica interfaccia parser. A causa di questa caratteristica, l'utente sfugge all'onere di selezionare la libreria di parser adatta e utilizzarla in base al tipo di file incontrato.
Low memory usage- Tika consuma meno risorse di memoria quindi è facilmente integrabile con le applicazioni Java. Possiamo anche utilizzare Tika all'interno dell'applicazione che gira su piattaforme con meno risorse come PDA mobile.
Fast processing - Ci si può aspettare un rapido rilevamento ed estrazione del contenuto dalle applicazioni.
Flexible metadata - Tika comprende tutti i modelli di metadati utilizzati per descrivere i file.
Parser integration - Tika può utilizzare varie librerie di parser disponibili per ogni tipo di documento in una singola applicazione.
MIME type detection - Tika può rilevare ed estrarre contenuti da tutti i tipi di media inclusi negli standard MIME.
Language detection - Tika include la funzione di identificazione della lingua, quindi può essere utilizzata nei documenti in base al tipo di lingua in un sito Web multilingue.
Funzionalità di Tika
Tika supporta varie funzionalità:
- Rilevamento del tipo di documento
- Estrazione del contenuto
- Estrazione dei metadati
- Rilevamento della lingua
Rilevamento del tipo di documento
Tika utilizza varie tecniche di rilevamento e rileva il tipo di documento fornito.
Estrazione del contenuto
Tika ha una libreria parser che può analizzare il contenuto di vari formati di documenti ed estrarli. Dopo aver rilevato il tipo di documento, seleziona il parser appropriato dal repository del parser e passa il documento. Diverse classi di Tika hanno metodi per analizzare diversi formati di documenti.
Estrazione dei metadati
Insieme al contenuto, Tika estrae i metadati del documento con la stessa procedura dell'estrazione del contenuto. Per alcuni tipi di documenti, Tika dispone di classi per estrarre i metadati.
Rilevamento della lingua
Internamente, Tika segue algoritmi come n-gramper rilevare la lingua del contenuto in un determinato documento. Tika dipende da classi comeLanguageidentifier e Profiler per l'identificazione della lingua.
Questo capitolo ti guida attraverso il processo di configurazione di Apache Tika su Windows e Linux. È necessaria l'amministrazione degli utenti durante l'installazione di Apache Tika.
Requisiti di sistema
JDK | Java SE 2 JDK 1.6 o successivo |
Memoria | 1 GB di RAM (consigliato) |
Spazio sul disco | Nessun requisito minimo |
Versione del sistema operativo | Windows XP o successivo, Linux |
Passaggio 1: verifica dell'installazione di Java
Per verificare l'installazione di Java, aprire la console ed eseguire quanto segue java comando.
OS | Compito | Comando |
---|---|---|
finestre | Apri la console dei comandi | \> java –version |
Linux | Apri il terminale di comando | $ java –version |
Se Java è stato installato correttamente sul tuo sistema, dovresti ottenere uno dei seguenti output, a seconda della piattaforma su cui stai lavorando.
OS | Produzione |
---|---|
finestre | Versione Java "1.7.0_60"
Java (TM) SE Run Time Environment (build 1.7.0_60-b19) VM server Java Hotspot (TM) a 64 bit (build 24.60-b09, modalità mista) |
Lunix | versione java "1.7.0_25" Aprire JDK Runtime Environment (rhel-2.3.10.4.el6_4-x86_64) Apri la VM server JDK a 64 bit (build 23.7-b01, modalità mista) |
Si presume che i lettori di questo tutorial abbiano Java 1.7.0_60 installato sul proprio sistema prima di procedere con questo tutorial.
Se non disponi di Java SDK, scarica la versione corrente da https://www.oracle.com/technetwork/java/javase/downloads/index.html and have it installed.
Passaggio 2: impostazione dell'ambiente Java
Impostare la variabile di ambiente JAVA_HOME in modo che punti alla posizione della directory di base in cui Java è installato sulla macchina. Per esempio,
OS | Produzione |
---|---|
finestre | Imposta la variabile ambientale JAVA_HOME su C: \ ProgramFiles \ java \ jdk1.7.0_60 |
Linux | export JAVA_HOME = / usr / local / java-current |
Aggiungi il percorso completo della posizione del compilatore Java al percorso di sistema.
OS | Produzione |
---|---|
finestre | Aggiungi la stringa; C: \ Program Files \ Java \ jdk1.7.0_60 \ bin alla fine della variabile di sistema PATH. |
Linux | export PATH = $ PATH: $ JAVA_HOME / bin / |
Verificare il comando java-version dal prompt dei comandi come spiegato sopra.
Passaggio 3: configurazione dell'ambiente Apache Tika
I programmatori possono integrare Apache Tika nel loro ambiente utilizzando
- Riga di comando,
- Tika API,
- Interfaccia a riga di comando (CLI) di Tika,
- Interfaccia utente grafica (GUI) di Tika, o
- il codice sorgente.
Per ognuno di questi approcci, prima di tutto, devi scaricare il codice sorgente di Tika.
Troverai il codice sorgente di Tika su https://Tika.apache.org/download.html, dove troverai due link:
apache-tika-1.6-src.zip - Contiene il codice sorgente di Tika e
Tika -app-1.6.jar - È un file jar che contiene l'applicazione Tika.
Scarica questi due file. Di seguito è mostrata un'istantanea del sito ufficiale di Tika.
Dopo aver scaricato i file, impostare il percorso di classe per il file jar tika-app-1.6.jar. Aggiungi il percorso completo del file jar come mostrato nella tabella sottostante.
OS | Produzione |
---|---|
finestre | Aggiungi la stringa "C: \ jars \ Tika-app-1.6.jar" alla variabile di ambiente utente CLASSPATH |
Linux | Esporta CLASSPATH = $ CLASSPATH - /usr/share/jars/Tika-app-1.6.tar - |
Apache fornisce l'applicazione Tika, un'applicazione GUI (Graphical User Interface) che utilizza Eclipse.
Tika-Maven Build utilizzando Eclipse
Apri eclipse e crea un nuovo progetto.
Se non hai Maven nel tuo Eclipse, configuralo seguendo i passaggi indicati.
Apri il link https://wiki.eclipse.org/M2E_updatesite_and_gittags . Lì troverai le versioni del plugin m2e in formato tabulare
Scegli l'ultima versione e salva il percorso dell'URL nella colonna p2 url.
Ora rivisita eclipse, nella barra dei menu, fai clic su Helpe scegli Install New Software dal menu a tendina
Clicca il Addpulsante, digitare il nome desiderato, poiché è facoltativo. Ora incolla l'URL salvato nel fileLocation campo.
Verrà aggiunto un nuovo plug-in con il nome che hai scelto nel passaggio precedente, seleziona la casella di controllo davanti e fai clic su Next.
Procedi con l'installazione. Una volta completato, riavvia Eclipse.
Ora fai clic con il pulsante destro del mouse sul progetto e nel file configure opzione, selezionare convert to maven project.
Viene visualizzata una nuova procedura guidata per la creazione di un nuovo pom. Inserisci l'ID gruppo come org.apache.tika, inserisci l'ultima versione di Tika, seleziona il filepackaging come barattolo e fare clic su Finish.
Il progetto Maven viene installato correttamente e il progetto viene convertito in Maven. Ora devi configurare il file pom.xml.
Configura il file XML
Ottieni la dipendenza da Tika dahttps://mvnrepository.com/artifact/org.apache.tika
Di seguito è mostrata la completa dipendenza Maven di 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>
Gli utenti possono incorporare Tika nelle loro applicazioni utilizzando la classe per facciate Tika. Ha metodi per esplorare tutte le funzionalità di Tika. Poiché è una classe di facciata, Tika astrae la complessità dietro le sue funzioni. Oltre a questo, gli utenti possono anche utilizzare le varie classi di Tika nelle loro applicazioni.
Tika Class (facciata)
Questa è la classe più importante della libreria Tika e segue il modello di progettazione della facciata. Pertanto, astrae tutte le implementazioni interne e fornisce metodi semplici per accedere alle funzionalità di Tika. La tabella seguente elenca i costruttori di questa classe insieme alle loro descrizioni.
package - org.apache.tika
class - Tika
Sr.No. | Costruttore e descrizione |
---|---|
1 | Tika () Utilizza la configurazione predefinita e costruisce la classe Tika. |
2 | Tika (Detector detector) Crea una facciata Tika accettando l'istanza del rivelatore come parametro |
3 | Tika (Detector detector, Parser parser) Crea una facciata Tika accettando le istanze del rilevatore e del parser come parametri. |
4 | Tika (Detector detector, Parser parser, Translator translator) Crea una facciata Tika accettando il rivelatore, il parser e l'istanza del traduttore come parametri. |
5 | Tika (TikaConfig config) Crea una facciata Tika accettando l'oggetto della classe TikaConfig come parametro. |
Metodi e descrizione
I seguenti sono i metodi importanti della classe di facciata Tika:
Sr.No. | Metodi e descrizione |
---|---|
1 | analizzareToString (File file) Questo metodo e tutte le sue varianti analizzano il file passato come parametro e restituiscono il contenuto di testo estratto nel formato String. Per impostazione predefinita, la lunghezza di questo parametro stringa è limitata. |
2 | int getMaxStringLength () Restituisce la lunghezza massima delle stringhe restituite dai metodi parseToString. |
3 | vuoto setMaxStringLength (int maxStringLength) Imposta la lunghezza massima delle stringhe restituite dai metodi parseToString. |
4 | Lettore parse (File file) Questo metodo e tutte le sue varianti analizzano il file passato come parametro e restituiscono il contenuto di testo estratto sotto forma di oggetto java.io.reader. |
5 | Corda detect (InputStream ruscello, Metadata metadati) Questo metodo e tutte le sue varianti accettano un oggetto InputStream e un oggetto Metadata come parametri, rileva il tipo di documento specificato e restituisce il nome del tipo di documento come oggetto String. Questo metodo astrae i meccanismi di rilevamento utilizzati da Tika. |
6 | Corda translate (InputStream testo, String lingua di destinazione) Questo metodo e tutte le sue varianti accettano l'oggetto InputStream e una stringa che rappresenta la lingua in cui vogliamo che il nostro testo venga tradotto, e traduce il testo dato nella lingua desiderata, tentando di rilevare automaticamente la lingua di origine. |
Interfaccia parser
Questa è l'interfaccia implementata da tutte le classi parser del pacchetto Tika.
package - org.apache.tika.parser
Interface - Parser
Metodi e descrizione
Quello che segue è il metodo importante dell'interfaccia di Tika Parser:
Sr.No. | Metodi e descrizione |
---|---|
1 | parse (InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context) Questo metodo analizza il documento dato in una sequenza di eventi XHTML e SAX. Dopo l'analisi, inserisce il contenuto del documento estratto nell'oggetto della classe ContentHandler e i metadati nell'oggetto della classe Metadati. |
Classe di metadati
Questa classe implementa varie interfacce come CreativeCommons, Geographic, HttpHeaders, Message, MSOffice, ClimateForcast, TIFF, TikaMetadataKeys, TikaMimeKeys, Serializable per supportare vari modelli di dati. Le tabelle seguenti elencano i costruttori e i metodi di questa classe insieme alle loro descrizioni.
package - org.apache.tika.metadata
class - Metadati
Sr.No. | Costruttore e descrizione |
---|---|
1 | Metadata() Costruisce un nuovo metadata vuoto. |
Sr.No. | Metodi e descrizione |
---|---|
1 | add (Property property, String value) Aggiunge una proprietà di metadati / mappatura valore a un dato documento. Usando questa funzione, possiamo impostare il valore su una proprietà. |
2 | add (String name, String value) Aggiunge una proprietà di metadati / mappatura valore a un dato documento. Usando questo metodo, possiamo impostare un nuovo valore di nome sui metadati esistenti di un documento. |
3 | String get (Property property) Restituisce il valore (se presente) della proprietà dei metadati fornita. |
4 | String get (String name) Restituisce il valore (se presente) del nome dei metadati fornito. |
5 | Date getDate (Property property) Restituisce il valore della proprietà dei metadati Date. |
6 | String[] getValues (Property property) Restituisce tutti i valori di una proprietà di metadati. |
7 | String[] getValues (String name) Restituisce tutti i valori di un determinato nome di metadati. |
8 | String[] names() Restituisce tutti i nomi degli elementi di metadati in un oggetto di metadati. |
9 | set (Property property, Date date) Imposta il valore della data della proprietà dei metadati specificata |
10 | set(Property property, String[] values) Imposta più valori su una proprietà dei metadati. |
Classe di identificazione della lingua
Questa classe identifica la lingua del contenuto dato. Le tabelle seguenti elencano i costruttori di questa classe insieme alle loro descrizioni.
package - org.apache.tika.language
class - Identificatore della lingua
Sr.No. | Costruttore e descrizione |
---|---|
1 | LanguageIdentifier (LanguageProfile profile) Istanzia l'identificatore della lingua. Qui devi passare un oggetto LanguageProfile come parametro. |
2 | LanguageIdentifier (String content) Questo costruttore può creare un'istanza di un identificatore di lingua passando una stringa dal contenuto di testo. |
Sr.No. | Metodi e descrizione |
---|---|
1 | String getLanguage () Restituisce la lingua data all'oggetto LanguageIdentifier corrente. |
Formati di file supportati da Tika
La tabella seguente mostra i formati di file supportati da Tika.
Formato del file | Libreria dei pacchetti | Classe a Tika |
---|---|---|
XML | org.apache.tika.parser.xml | XMLParser |
HTML | org.apache.tika.parser.html e utilizza la libreria Tagsoup | HtmlParser |
Documento composto MS-Office Ole2 fino al 2007 ooxml dal 2007 in poi | org.apache.tika.parser.microsoft org.apache.tika.parser.microsoft.ooxml e utilizza la libreria Apache Poi |
OfficeParser (ole2) OOXMLParser (ooxml) |
Formato OpenDocument openoffice | org.apache.tika.parser.odf | OpenOfficeParser |
formato documento portatile (PDF) | org.apache.tika.parser.pdf e questo pacchetto utilizza la libreria Apache PdfBox | PDFParser |
Formato di pubblicazione elettronica (libri digitali) | org.apache.tika.parser.epub | EpubParser |
Formato Rich Text | org.apache.tika.parser.rtf | RTFParser |
Formati di compressione e confezionamento | org.apache.tika.parser.pkg e questo pacchetto utilizza la libreria Common compress | PackageParser e CompressorParser e le sue sottoclassi |
Formato testo | org.apache.tika.parser.txt | TXTParser |
Formati di feed e syndication | org.apache.tika.parser.feed | FeedParser |
Formati audio | org.apache.tika.parser.audio e org.apache.tika.parser.mp3 | AudioParser MidiParser Mp3- per mp3parser |
Imageparsers | org.apache.tika.parser.jpeg | JpegParser: per immagini jpeg |
Videoformati | org.apache.tika.parser.mp4 e org.apache.tika.parser.video questo parser utilizza internamente Simple Algorithm per analizzare i formati video flash | Mp4parser FlvParser |
file di classe java e file jar | org.apache.tika.parser.asm | ClassParser CompressorParser |
Mobxformat (messaggi di posta elettronica) | org.apache.tika.parser.mbox | MobXParser |
Formati cad | org.apache.tika.parser.dwg | DWGParser |
FontFormats | org.apache.tika.parser.font | TrueTypeParser |
programmi eseguibili e librerie | org.apache.tika.parser.executable | ExecutableParser |
Standard MIME
Gli standard MIME (Multipurpose Internet Mail Extensions) sono i migliori standard disponibili per l'identificazione dei tipi di documento. La conoscenza di questi standard aiuta il browser durante le interazioni interne.
Ogni volta che il browser incontra un file multimediale, sceglie un software compatibile disponibile con esso per visualizzarne il contenuto. Nel caso in cui non disponga di un'applicazione adatta per eseguire un particolare file multimediale, si consiglia all'utente di procurarsi il software plug-in adatto.
Digitare Detection in Tika
Tika supporta tutti i tipi di documenti multimediali Internet forniti in MIME. Ogni volta che un file viene passato attraverso Tika, rileva il file e il suo tipo di documento. Per rilevare i tipi di media, Tika utilizza internamente i seguenti meccanismi.
Estensioni di file
Il controllo delle estensioni dei file è il metodo più semplice e più utilizzato per rilevare il formato di un file. Molte applicazioni e sistemi operativi forniscono supporto per queste estensioni. Di seguito viene mostrata l'estensione di alcuni tipi di file conosciuti.
Nome del file | Estensione |
---|---|
Immagine | .jpg |
Audio | .mp3 |
file di archivio java | .vaso |
file di classe java | .classe |
Suggerimenti sul tipo di contenuto
Ogni volta che si recupera un file da un database o lo si allega a un altro documento, si potrebbe perdere il nome o l'estensione del file. In questi casi, i metadati forniti con il file vengono utilizzati per rilevare l'estensione del file.
Magic Byte
Osservando i byte grezzi di un file, puoi trovare alcuni modelli di caratteri univoci per ogni file. Alcuni file hanno speciali prefissi di byte chiamatimagic bytes appositamente realizzati e inclusi in un file allo scopo di identificare il tipo di file
Ad esempio, puoi trovare CA FE BA BE (formato esadecimale) in un file java e% PDF (formato ASCII) in un file pdf. Tika utilizza queste informazioni per identificare il tipo di supporto di un file.
Codifiche dei caratteri
I file con testo normale vengono codificati utilizzando diversi tipi di codifica dei caratteri. La sfida principale qui è identificare il tipo di codifica dei caratteri utilizzata nei file. Tika segue tecniche di codifica dei caratteri comeBom markers e Byte Frequencies per identificare il sistema di codifica utilizzato dal contenuto di testo normale.
Caratteri radice XML
Per rilevare i documenti XML, Tika analizza i documenti xml ed estrae le informazioni come elementi radice, spazi dei nomi e schemi di riferimento da cui è possibile trovare il vero tipo di supporto dei file.
Tipo di rilevamento utilizzando Facade Class
Il detect()metodo della classe di facciata viene utilizzato per rilevare il tipo di documento. Questo metodo accetta un file come input. Di seguito è mostrato un programma di esempio per il rilevamento del tipo di documento con la classe di facciata 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);
}
}
Salva il codice sopra come TypeDetection.java ed eseguilo dal prompt dei comandi utilizzando i seguenti comandi:
javac TypeDetection.java
java TypeDetection
audio/mpeg
Tika utilizza varie librerie di parser per estrarre il contenuto da determinati parser. Sceglie il parser giusto per estrarre il tipo di documento specificato.
Per analizzare i documenti, viene generalmente utilizzato il metodo parseToString () della classe di facciata Tika. Di seguito sono mostrati i passaggi coinvolti nel processo di analisi e questi sono astratti dal metodo Tika ParsertoString ().
Astrazione del processo di analisi -
Inizialmente, quando passiamo un documento a Tika, utilizza un meccanismo di rilevamento del tipo adatto disponibile con esso e rileva il tipo di documento.
Una volta che il tipo di documento è noto, sceglie un parser adatto dal suo repository parser. Il repository parser contiene classi che fanno uso di librerie esterne.
Quindi il documento viene passato per scegliere il parser che analizzerà il contenuto, estrarrà il testo e genererà anche eccezioni per formati illeggibili.
Estrazione di contenuti utilizzando Tika
Di seguito è riportato il programma per estrarre il testo da un file utilizzando la classe di facciata 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);
}
}
Salva il codice sopra come TikaExtraction.java ed eseguilo dal prompt dei comandi -
javac TikaExtraction.java
java TikaExtraction
Di seguito è riportato il contenuto di sample.txt.
Hi students welcome to tutorialspoint
Ti dà il seguente output:
Extracted Content: Hi students welcome to tutorialspoint
Estrazione del contenuto utilizzando l'interfaccia parser
Il pacchetto parser di Tika fornisce diverse interfacce e classi utilizzando le quali possiamo analizzare un documento di testo. Di seguito è riportato lo schema a blocchi diorg.apache.tika.parser pacchetto.
Sono disponibili diverse classi di parser, ad esempio PDF parser, Mp3Passer, OfficeParser, ecc., Per analizzare i rispettivi documenti individualmente. Tutte queste classi implementano l'interfaccia del parser.
CompositeParser
Il diagramma fornito mostra le classi di parser generiche di Tika: CompositeParser e AutoDetectParser. Poiché la classe CompositeParser segue il modello di progettazione composito, è possibile utilizzare un gruppo di istanze del parser come un singolo parser. La classe CompositeParser consente inoltre l'accesso a tutte le classi che implementano l'interfaccia del parser.
AutoDetectParser
Questa è una sottoclasse di CompositeParser e fornisce il rilevamento automatico del tipo. Utilizzando questa funzionalità, AutoDetectParser invia automaticamente i documenti in arrivo alle classi parser appropriate utilizzando la metodologia composita.
metodo parse ()
Insieme a parseToString (), puoi anche usare il metodo parse () dell'interfaccia del parser. Il prototipo di questo metodo è mostrato di seguito.
parse(InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context)
La tabella seguente elenca i quattro oggetti che accetta come parametri.
Sr.No. | Oggetto e descrizione |
---|---|
1 | InputStream stream Qualsiasi oggetto Inputstream che contiene il contenuto del file |
2 | ContentHandler handler Tika passa il documento come contenuto XHTML a questo gestore, dopodiché il documento viene elaborato utilizzando SAX API. Fornisce una post-elaborazione efficiente dei contenuti in un documento. |
3 | Metadata metadata L'oggetto metadati viene utilizzato sia come origine che come destinazione dei metadati del documento. |
4 | ParseContext context Questo oggetto viene utilizzato nei casi in cui l'applicazione client desidera personalizzare il processo di analisi. |
Esempio
Di seguito è riportato un esempio che mostra come viene utilizzato il metodo parse ().
Step 1 -
Per utilizzare il metodo parse () dell'interfaccia del parser, istanziare una qualsiasi delle classi che forniscono l'implementazione per questa interfaccia.
Esistono singole classi parser come PDFParser, OfficeParser, XMLParser, ecc. È possibile utilizzare uno qualsiasi di questi singoli parser di documenti. In alternativa, è possibile utilizzare CompositeParser o AutoDetectParser che utilizza internamente tutte le classi del parser ed estrae il contenuto di un documento utilizzando un parser adatto.
Parser parser = new AutoDetectParser();
(or)
Parser parser = new CompositeParser();
(or)
object of any individual parsers given in Tika Library
Step 2 -
Crea un oggetto classe gestore. Di seguito sono riportati i tre gestori di contenuti:
Sr.No. | Classe e descrizione |
---|---|
1 | BodyContentHandler Questa classe seleziona la parte del corpo dell'output XHTML e scrive quel contenuto nel writer di output o nel flusso di output. Quindi reindirizza il contenuto XHTML a un'altra istanza del gestore di contenuti. |
2 | LinkContentHandler Questa classe rileva e seleziona tutti i tag H-Ref del documento XHTML e li inoltra per l'utilizzo di strumenti come i web crawler. |
3 | TeeContentHandler Questa classe aiuta a utilizzare più strumenti contemporaneamente. |
Poiché il nostro obiettivo è estrarre il contenuto del testo da un documento, istanziare BodyContentHandler come mostrato di seguito -
BodyContentHandler handler = new BodyContentHandler( );
Step 3 -
Crea l'oggetto Metadati come mostrato di seguito -
Metadata metadata = new Metadata();
Step 4 -
Crea uno qualsiasi degli oggetti del flusso di input e passa il tuo file che dovrebbe essere estratto ad esso.
FileInputstream
Creare un'istanza di un oggetto file passando il percorso del file come parametro e passare questo oggetto al costruttore della classe FileInputStream.
Note - Il percorso passato all'oggetto file non deve contenere spazi.
Il problema con queste classi di flusso di input è che non supportano le letture ad accesso casuale, necessarie per elaborare alcuni formati di file in modo efficiente. Per risolvere questo problema, Tika fornisce TikaInputStream.
File file = new File(filepath)
FileInputStream inputstream = new FileInputStream(file);
(or)
InputStream stream = TikaInputStream.get(new File(filename));
Step 5 -
Crea un oggetto contesto di analisi come mostrato di seguito:
ParseContext context =new ParseContext();
Step 6 -
Istanziare l'oggetto parser, invocare il metodo di analisi e passare tutti gli oggetti richiesti, come mostrato nel prototipo di seguito -
parser.parse(inputstream, handler, metadata, context);
Di seguito è riportato il programma per l'estrazione del contenuto utilizzando l'interfaccia parser
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());
}
}
Salva il codice sopra come ParserExtraction.java ed eseguilo dal prompt dei comandi -
javac ParserExtraction.java
java ParserExtraction
Di seguito è riportato il contenuto di sample.txt
Hi students welcome to tutorialspoint
Se esegui il programma sopra, ti darà il seguente output:
File content : Hi students welcome to tutorialspoint
Oltre al contenuto, Tika estrae anche i metadati da un file. I metadati non sono altro che le informazioni aggiuntive fornite con un file. Se consideriamo un file audio, il nome dell'artista, il nome dell'album, il titolo rientrano nei metadati.
Standard XMP
L'Extensible Metadata Platform (XMP) è uno standard per l'elaborazione e l'archiviazione delle informazioni relative al contenuto di un file. E 'stato creato da Adobe Systems Inc . XMP fornisce standard per la definizione, la creazione e l'elaborazione dei metadati . Puoi incorporare questo standard in diversi formati di file come PDF , JPEG , JPEG , GIF , jpg , HTML ecc.
Classe di proprietà
Tika utilizza la classe Property per seguire la definizione della proprietà XMP. Fornisce le enumerazioni PropertyType e ValueType per acquisire il nome e il valore di un metadato.
Classe di metadati
Questa classe implementa varie interfacce come ClimateForcast , CativeCommons, Geographic , TIFF ecc. Per fornire supporto per vari modelli di metadati. Inoltre, questa classe fornisce vari metodi per estrarre il contenuto da un file.
Nomi dei metadati
Possiamo estrarre l'elenco di tutti i nomi dei metadati di un file dal suo oggetto metadati utilizzando i nomi dei metodi () . Restituisce tutti i nomi come un array di stringhe. Usando il nome dei metadati, possiamo ottenere il valore usando ilget()metodo. Prende un nome di metadati e restituisce un valore ad esso associato.
String[] metadaNames = metadata.names();
String value = metadata.get(name);
Estrazione dei metadati utilizzando il metodo Parse
Ogni volta che analizziamo un file usando parse (), passiamo un oggetto di metadati vuoto come uno dei parametri. Questo metodo estrae i metadati del file specificato (se quel file ne contiene) e li inserisce nell'oggetto metadati. Pertanto, dopo aver analizzato il file utilizzando parse (), possiamo estrarre i metadati da quell'oggetto.
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();
Di seguito è riportato il programma completo per estrarre i metadati da un file di testo.
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));
}
}
}
Salva il codice sopra come GetMetadata.java ed eseguilo dal prompt dei comandi utilizzando i seguenti comandi:
javac GetMetadata .java
java GetMetadata
Di seguito è riportata l'istantanea di boy.jpg
Se esegui il programma sopra, ti darà il seguente output:
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
Possiamo anche ottenere i nostri valori di metadati desiderati.
Aggiunta di nuovi valori di metadati
Possiamo aggiungere nuovi valori di metadati utilizzando il metodo add () della classe dei metadati. Di seguito è riportata la sintassi di questo metodo. Qui stiamo aggiungendo il nome dell'autore.
metadata.add(“author”,”Tutorials point”);
La classe Metadata ha proprietà predefinite incluse le proprietà ereditate da classi come ClimateForcast , CativeCommons, Geographic , ecc., Per supportare vari modelli di dati. Di seguito viene mostrato l'utilizzo del tipo di dati SOFTWARE ereditato dall'interfaccia TIFF implementata da Tika per seguire gli standard dei metadati XMP per i formati di immagine TIFF.
metadata.add(Metadata.SOFTWARE,"ms paint");
Di seguito è riportato il programma completo che dimostra come aggiungere valori di metadati a un determinato file. Qui l'elenco degli elementi di metadati viene visualizzato nell'output in modo da poter osservare la modifica nell'elenco dopo aver aggiunto nuovi valori.
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()));
}
}
Salva il codice sopra come classe AddMetadata.java ed eseguilo dal prompt dei comandi -
javac AddMetadata .java
java AddMetadata
Di seguito è riportato il contenuto di Example.txt
Hi students welcome to tutorialspoint
Se esegui il programma sopra, ti darà il seguente output:
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]
Impostazione dei valori per gli elementi di metadati esistenti
È possibile impostare valori per gli elementi di metadati esistenti utilizzando il metodo set (). La sintassi per impostare la proprietà date utilizzando il metodo set () è la seguente:
metadata.set(Metadata.DATE, new Date());
È inoltre possibile impostare più valori per le proprietà utilizzando il metodo set (). La sintassi per impostare più valori sulla proprietà Author utilizzando il metodo set () è la seguente:
metadata.set(Metadata.AUTHOR, "ram ,raheem ,robin ");
Di seguito è riportato il programma completo che mostra il metodo 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));
}
}
}
Salva il codice sopra come SetMetadata.java ed eseguilo dal prompt dei comandi -
javac SetMetadata.java
java SetMetadata
Di seguito è riportato il contenuto di example.txt.
Hi students welcome to tutorialspoint
Se esegui il programma precedente, otterrai il seguente output. Nell'output è possibile osservare gli elementi di metadati appena aggiunti.
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
Necessità di rilevamento della lingua
Per la classificazione dei documenti in base alla lingua in cui sono scritti in un sito Web multilingue, è necessario uno strumento di rilevamento della lingua. Questo strumento dovrebbe accettare documenti senza annotazioni sulla lingua (metadati) e aggiungere tali informazioni nei metadati del documento rilevando la lingua.
Algoritmi per la profilazione del corpus
Cos'è Corpus?
Per rilevare la lingua di un documento, viene costruito un profilo della lingua e confrontato con il profilo delle lingue conosciute. Il set di testo di queste lingue conosciute è noto comecorpus.
Un corpus è una raccolta di testi di una lingua scritta che spiega come la lingua viene utilizzata in situazioni reali.
Il corpus è sviluppato da libri, trascrizioni e altre risorse di dati come Internet. La precisione del corpus dipende dall'algoritmo di profiling che utilizziamo per inquadrare il corpus.
Cosa sono gli algoritmi di profilazione?
Il modo comune di rilevare le lingue è utilizzare i dizionari. Le parole utilizzate in una determinata parte di testo verranno abbinate a quelle presenti nei dizionari.
Un elenco di parole comuni utilizzate in una lingua sarà il corpus più semplice ed efficace per rilevare una particolare lingua, ad esempio articoli a, an, the in inglese.
Utilizzo di set di parole come corpus
Utilizzando set di parole, viene inquadrato un semplice algoritmo per trovare la distanza tra due corpora, che sarà uguale alla somma delle differenze tra le frequenze delle parole corrispondenti.
Tali algoritmi soffrono dei seguenti problemi:
Poiché la frequenza di corrispondenza delle parole è molto inferiore, l'algoritmo non può funzionare in modo efficiente con piccoli testi con poche frasi. Ha bisogno di molto testo per una corrispondenza accurata.
Non è in grado di rilevare i confini delle parole per le lingue con frasi composte e quelle che non hanno divisori di parole come spazi o segni di punteggiatura.
A causa di queste difficoltà nell'utilizzo di set di parole come corpus, vengono presi in considerazione singoli caratteri o gruppi di caratteri.
Utilizzo di set di caratteri come corpus
Poiché i caratteri comunemente usati in una lingua sono di numero finito, è facile applicare un algoritmo basato sulle frequenze delle parole piuttosto che sui caratteri. Questo algoritmo funziona ancora meglio nel caso di determinati set di caratteri utilizzati in una o pochissime lingue.
Questo algoritmo presenta i seguenti inconvenienti:
È difficile differenziare due lingue con frequenze di caratteri simili.
Non esiste uno strumento o un algoritmo specifico per identificare specificamente una lingua con l'aiuto (come corpus) del set di caratteri utilizzato da più lingue.
Algoritmo N-gram
Gli inconvenienti sopra menzionati hanno dato origine a un nuovo approccio all'uso di sequenze di caratteri di una data lunghezza per la creazione di profili. Tale sequenza di caratteri è chiamata in generale N-grammi, dove N rappresenta la lunghezza della sequenza di caratteri.
L'algoritmo N-gram è un approccio efficace per il rilevamento della lingua, soprattutto nel caso di lingue europee come l'inglese.
Questo algoritmo funziona bene con testi brevi.
Sebbene esistano algoritmi avanzati di profilazione linguistica per rilevare più lingue in un documento multilingue con caratteristiche più interessanti, Tika utilizza l'algoritmo di 3 grammi, poiché è adatto nella maggior parte delle situazioni pratiche.
Rilevamento della lingua in Tika
Tra tutte le 184 lingue standard standardizzate da ISO 639-1, Tika può rilevare 18 lingue. Il rilevamento della lingua in Tika viene eseguito utilizzando ilgetLanguage() metodo del LanguageIdentifierclasse. Questo metodo restituisce il nome in codice della lingua in formato String. Di seguito è riportato l'elenco delle 18 coppie di codici lingua rilevate da Tika:
da: danese | de: tedesco | et: estone | el: greco |
en: inglese | es: spagnolo | fi: finlandese | fr: francese |
hu: ungherese | è — islandese | it: italiano | nl: olandese |
no, norvegese | pl: polacco | pt: portoghese | ru: russo |
sv: svedese | th: tailandese |
Durante l'istanza di LanguageIdentifier class, è necessario passare il formato String del contenuto da estrarre o un file LanguageProfile oggetto di classe.
LanguageIdentifier object = new LanguageIdentifier(“this is english”);
Di seguito è riportato il programma di esempio per il rilevamento della lingua in 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);
}
}
Salva il codice sopra come LanguageDetection.java ed eseguirlo dal prompt dei comandi utilizzando i seguenti comandi:
javac LanguageDetection.java
java LanguageDetection
Se esegui il programma di cui sopra, restituisce il seguente output
Language of the given content is : en
Rilevamento della lingua di un documento
Per rilevare la lingua di un dato documento, devi analizzarlo usando il metodo parse (). Il metodo parse () analizza il contenuto e lo memorizza nell'oggetto gestore, che gli è stato passato come uno degli argomenti. Passare il formato String dell'oggetto gestore al costruttore diLanguageIdentifier classe come mostrato di seguito -
parser.parse(inputstream, handler, metadata, context);
LanguageIdentifier object = new LanguageIdentifier(handler.toString());
Di seguito è riportato il programma completo che dimostra come rilevare la lingua di un determinato 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());
}
}
Salva il codice sopra come SetMetadata.java ed eseguilo dal prompt dei comandi -
javac SetMetadata.java
java SetMetadata
Di seguito è riportato il contenuto di Example.txt.
Hi students welcome to tutorialspoint
Se esegui il programma sopra, ti darà il seguente output:
Language name :en
Insieme al vaso Tika, Tika fornisce un'applicazione di interfaccia utente grafica (GUI) e un'applicazione di interfaccia a riga di comando (CLI). Puoi eseguire un'applicazione Tika anche dal prompt dei comandi come altre applicazioni Java.
Interfaccia utente grafica (GUI)
Tika fornisce un file jar insieme al suo codice sorgente nel seguente collegamento https://tika.apache.org/download.html.
Scarica entrambi i file, imposta il classpath per il file jar.
Estrai la cartella zip del codice sorgente, apri la cartella tika-app.
Nella cartella estratta in "tika-1.6 \ tika-app \ src \ main \ java \ org \ apache \ Tika \ gui" vedrai due file di classe: ParsingTransferHandler.java e TikaGUI.java.
Compila entrambi i file di classe ed esegui il file di classe TikaGUI.java, si apre la seguente finestra.
Vediamo ora come utilizzare la GUI di Tika.
Sulla GUI, fare clic su Apri, sfogliare e selezionare un file da estrarre o trascinarlo nello spazio bianco della finestra.
Tika estrae il contenuto dei file e lo visualizza in cinque diversi formati, vale a dire. metadati, testo formattato, testo normale, contenuto principale e testo strutturato. Puoi scegliere uno dei formati che desideri.
Allo stesso modo, troverai anche la classe CLI nella cartella "tika-1.6 \ tikaapp \ src \ main \ java \ org \ apache \ tika \ cli".
L'illustrazione seguente mostra cosa può fare Tika. Quando rilasciamo l'immagine sulla GUI, Tika estrae e visualizza i suoi metadati.
Di seguito è riportato il programma per estrarre contenuto e metadati da un 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));
}
}
}
Salva il codice sopra come PdfParse.javae compilarlo dal prompt dei comandi utilizzando i seguenti comandi:
javac PdfParse.java
java PdfParse
Di seguito è riportato l'istantanea di example.pdf
Il PDF che stiamo passando ha le seguenti proprietà:
Dopo aver compilato il programma, otterrai l'output come mostrato di seguito.
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
Di seguito è riportato il programma per estrarre contenuto e metadati da 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));
}
}
}
Salva il codice sopra come OpenDocumentParse.javae compilarlo nel prompt dei comandi utilizzando i seguenti comandi:
javac OpenDocumentParse.java
java OpenDocumentParse
Di seguito è riportata un'istantanea del file example_open_document_presentation.odp.
Questo documento ha le seguenti proprietà:
Dopo aver compilato il programma, otterrai il seguente output.
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
Di seguito è riportato il programma per estrarre contenuto e metadati da un documento di 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));
}
}
}
Salva il codice sopra come MSExelParse.javae compilarlo dal prompt dei comandi utilizzando i seguenti comandi:
javac MSExcelParse.java
java MSExcelParse
Qui stiamo passando il seguente file Excel di esempio.
Il file Excel fornito ha le seguenti proprietà:
Dopo aver eseguito il programma sopra, otterrai il seguente output.
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
Di seguito è riportato il programma per estrarre contenuto e metadati da un documento di testo:
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));
}
}
}
Salva il codice sopra come TextParser.javae compilarlo dal prompt dei comandi utilizzando i seguenti comandi:
javac TextParser.java
java TextParser
Di seguito è riportata l'istantanea del file sample.txt -
Il documento di testo ha le seguenti proprietà:
Se esegui il programma precedente, otterrai il seguente output.
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
Di seguito è riportato il programma per estrarre contenuto e metadati da un 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));
}
}
}
Salva il codice sopra come HtmlParse.javae compilarlo dal prompt dei comandi utilizzando i seguenti comandi:
javac HtmlParse.java
java HtmlParse
Di seguito è riportata l'istantanea del file example.txt.
Il documento HTML ha le seguenti proprietà:
Se esegui il programma precedente, otterrai il seguente output.
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
Di seguito è riportato il programma per estrarre contenuto e metadati da un 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));
}
}
}
Salva il codice sopra come XmlParse.javae compilarlo dal prompt dei comandi utilizzando i seguenti comandi:
javac XmlParse.java
java XmlParse
Di seguito è riportata l'istantanea del file example.xml
Questo documento ha le seguenti proprietà:
Se esegui il programma sopra, otterrai il seguente output:
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
Di seguito è riportato il programma per estrarre contenuto e metadati da un file .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));
}
}
}
Salva il codice sopra come JavaClassParse.javae compilarlo dal prompt dei comandi utilizzando i seguenti comandi:
javac JavaClassParse.java
java JavaClassParse
Di seguito è riportata l'istantanea di Example.java che genererà Example.class dopo la compilazione.
Example.class il file ha le seguenti proprietà:
Dopo aver eseguito il programma sopra, otterrai il seguente output.
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
Di seguito è riportato il programma per estrarre contenuto e metadati da un file 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));
}
}
}
Salva il codice sopra come PackageParse.javae compilarlo dal prompt dei comandi utilizzando i seguenti comandi:
javac PackageParse.java
java PackageParse
Di seguito è riportata l'istantanea di Example.java che risiede all'interno del pacchetto.
Il file jar ha le seguenti proprietà:
Dopo aver eseguito il programma sopra, ti darà il seguente output:
Output -
Contents of the document:
META-INF/MANIFEST.MF
tutorialspoint/tika/examples/Example.class
Metadata of the document:
Content-Type: application/zip
Di seguito è riportato il programma per estrarre contenuto e metadati da un'immagine 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));
}
}
}
Salva il codice sopra come JpegParse.javae compilarlo dal prompt dei comandi utilizzando i seguenti comandi:
javac JpegParse.java
java JpegParse
Di seguito è riportata l'istantanea di Example.jpeg -
Il file JPEG ha le seguenti proprietà:
Dopo aver eseguito il programma, otterrai il seguente output.
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
Di seguito è riportato il programma per estrarre contenuto e metadati dai file 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));
}
}
}
Salva il codice sopra come JpegParse.java e compilalo dal prompt dei comandi utilizzando i seguenti comandi:
javac Mp4Parse.java
java Mp4Parse
Di seguito è riportata l'istantanea delle proprietà del file Example.mp4.
Dopo aver eseguito il programma sopra, otterrai il seguente output:
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
Di seguito è riportato il programma per estrarre contenuto e metadati da file 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));
}
}
}
Salva il codice sopra come JpegParse.javae compilarlo dal prompt dei comandi utilizzando i seguenti comandi:
javac Mp3Parse.java
java Mp3Parse
Il file Example.mp3 ha le seguenti proprietà:
Otterrai il seguente output dopo aver eseguito il programma. Se il file specificato ha dei testi, la nostra applicazione li catturerà e li visualizzerà insieme all'output.
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