TIKA - Extraction de contenu
Tika utilise diverses bibliothèques d'analyseurs pour extraire le contenu d'analyseurs donnés. Il choisit le bon analyseur pour extraire le type de document donné.
Pour l'analyse des documents, la méthode parseToString () de la classe de façade Tika est généralement utilisée. Vous trouverez ci-dessous les étapes impliquées dans le processus d'analyse et celles-ci sont résumées par la méthode Tika ParsertoString ().
Abstrait du processus d'analyse -
Au départ, lorsque nous transmettons un document à Tika, il utilise un mécanisme de détection de type approprié disponible avec celui-ci et détecte le type de document.
Une fois le type de document connu, il choisit un analyseur approprié dans son référentiel d'analyseurs. Le référentiel de l'analyseur contient des classes qui utilisent des bibliothèques externes.
Ensuite, le document est passé pour choisir l'analyseur qui analysera le contenu, extraira le texte et lèvera également des exceptions pour les formats illisibles.
Extraction de contenu à l'aide de Tika
Vous trouverez ci-dessous le programme d'extraction de texte d'un fichier à l'aide de la classe de façade 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);
}
}
Enregistrez le code ci-dessus sous TikaExtraction.java et exécutez-le à partir de l'invite de commande -
javac TikaExtraction.java
java TikaExtraction
Ci-dessous se trouve le contenu de sample.txt.
Hi students welcome to tutorialspoint
Il vous donne la sortie suivante -
Extracted Content: Hi students welcome to tutorialspoint
Extraction de contenu à l'aide de l'interface d'analyseur
Le package parser de Tika fournit plusieurs interfaces et classes à l'aide desquelles nous pouvons analyser un document texte. Vous trouverez ci-dessous le schéma de principe duorg.apache.tika.parser paquet.
Il existe plusieurs classes d'analyseurs disponibles, par exemple, l'analyseur pdf, Mp3Passer, OfficeParser, etc., pour analyser les documents respectifs individuellement. Toutes ces classes implémentent l'interface de l'analyseur.
CompositeParser
Le diagramme donné montre les classes d'analyseurs polyvalentes de Tika: CompositeParser et AutoDetectParser. Étant donné que la classe CompositeParser suit le modèle de conception composite, vous pouvez utiliser un groupe d'instances d'analyseur en tant qu'analyseur unique. La classe CompositeParser permet également d'accéder à toutes les classes qui implémentent l'interface de l'analyseur.
AutoDetectParser
Il s'agit d'une sous-classe de CompositeParser et il fournit une détection de type automatique. À l'aide de cette fonctionnalité, AutoDetectParser envoie automatiquement les documents entrants aux classes d'analyseur appropriées à l'aide de la méthodologie composite.
méthode parse ()
Avec parseToString (), vous pouvez également utiliser la méthode parse () de l'interface analyseur. Le prototype de cette méthode est présenté ci-dessous.
parse(InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context)
Le tableau suivant répertorie les quatre objets qu'il accepte comme paramètres.
N ° Sr. | Objet et description |
---|---|
1 | InputStream stream Tout objet Inputstream contenant le contenu du fichier |
2 | ContentHandler handler Tika transmet le document en tant que contenu XHTML à ce gestionnaire, puis le document est traité à l'aide de SAX API. Il permet un post-traitement efficace du contenu d'un document. |
3 | Metadata metadata L'objet de métadonnées est utilisé à la fois comme source et comme cible des métadonnées de document. |
4 | ParseContext context Cet objet est utilisé dans les cas où l'application cliente souhaite personnaliser le processus d'analyse. |
Exemple
Vous trouverez ci-dessous un exemple qui montre comment la méthode parse () est utilisée.
Step 1 -
Pour utiliser la méthode parse () de l'interface de l'analyseur, instanciez l'une des classes fournissant l'implémentation de cette interface.
Il existe des classes d'analyseurs individuelles telles que PDFParser, OfficeParser, XMLParser, etc. Vous pouvez utiliser n'importe lequel de ces analyseurs de documents individuels. Vous pouvez également utiliser CompositeParser ou AutoDetectParser qui utilise toutes les classes d'analyseur en interne et extrait le contenu d'un document à l'aide d'un analyseur approprié.
Parser parser = new AutoDetectParser();
(or)
Parser parser = new CompositeParser();
(or)
object of any individual parsers given in Tika Library
Step 2 -
Créez un objet de classe de gestionnaire. Vous trouverez ci-dessous les trois gestionnaires de contenu -
N ° Sr. | Classe et description |
---|---|
1 | BodyContentHandler Cette classe sélectionne la partie corps de la sortie XHTML et écrit ce contenu dans l'enregistreur de sortie ou le flux de sortie. Ensuite, il redirige le contenu XHTML vers une autre instance de gestionnaire de contenu. |
2 | LinkContentHandler Cette classe détecte et sélectionne toutes les balises H-Ref du document XHTML et les transmet pour l'utilisation d'outils tels que les robots d'exploration Web. |
3 | TeeContentHandler Cette classe aide à utiliser plusieurs outils simultanément. |
Puisque notre objectif est d'extraire le contenu du texte d'un document, instanciez BodyContentHandler comme indiqué ci-dessous -
BodyContentHandler handler = new BodyContentHandler( );
Step 3 -
Créez l'objet Metadata comme indiqué ci-dessous -
Metadata metadata = new Metadata();
Step 4 -
Créez l'un des objets de flux d'entrée et transmettez-lui votre fichier qui doit être extrait.
FileInputstream
Instanciez un objet fichier en passant le chemin du fichier en tant que paramètre et transmettez cet objet au constructeur de classe FileInputStream.
Note - Le chemin transmis à l'objet fichier ne doit pas contenir d'espaces.
Le problème avec ces classes de flux d'entrée est qu'elles ne prennent pas en charge les lectures à accès aléatoire, ce qui est nécessaire pour traiter efficacement certains formats de fichiers. Pour résoudre ce problème, Tika fournit TikaInputStream.
File file = new File(filepath)
FileInputStream inputstream = new FileInputStream(file);
(or)
InputStream stream = TikaInputStream.get(new File(filename));
Step 5 -
Créez un objet de contexte d'analyse comme indiqué ci-dessous -
ParseContext context =new ParseContext();
Step 6 -
Instanciez l'objet parser, appelez la méthode parse et transmettez tous les objets requis, comme indiqué dans le prototype ci-dessous -
parser.parse(inputstream, handler, metadata, context);
Vous trouverez ci-dessous le programme d'extraction de contenu à l'aide de l'interface parseur -
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());
}
}
Enregistrez le code ci-dessus sous ParserExtraction.java et exécutez-le à partir de l'invite de commande -
javac ParserExtraction.java
java ParserExtraction
Ci-dessous, le contenu de sample.txt
Hi students welcome to tutorialspoint
Si vous exécutez le programme ci-dessus, il vous donnera la sortie suivante -
File content : Hi students welcome to tutorialspoint