Un port Python de la bibliothèque Tika Apache qui rend Tika disponible à l'aide du serveur TIKA REST.
Cela rend Apache Tika disponible en tant que bibliothèque Python, installable via setuptools, PIP et Easy Install.
Pour utiliser cette bibliothèque, vous devez faire installer Java 7+ sur votre système alors que Tika-Python démarre le serveur TIKA REST en arrière-plan.
Inspiré par le Tika Aptivat.
pip install tikapython setup.py buildpython setup.py install Pour que cela fonctionne dans un environnement déconnecté, téléchargez un fichier de serveur Tika (Tika-server.jar et python-tika -server.jar.md5, qui peut être trouvé ici) et définissez la variable d'environnement tika_server_jar sur Tika_Server_jar = "File: ///tika-server-standard.jar" vers /tmp/tika-server-standard.jar et exécutez comme processus d'arrière-plan.
C'est le seul moyen d'exécuter python-tika sans accès Internet. Sans cet ensemble, la valeur par défaut est de vérifier la version Tika et de tirer plus tard à chaque fois d'Apache.
Ceux-ci sont lus une fois, lorsque Tika / tika.py est initialement chargé et utilisé partout après cela.
TIKA_VERSION - Définir sur la chaîne de version, par exemple, 1.12 ou par défaut sur la version TIKA actuelle.TIKA_SERVER_JAR - Réglez à l'URL complète dans le pot Tika Server distant pour télécharger et cache.TIKA_SERVER_ENDPOINT - Définissez sur l'hôte (local ou distant) pour le pot Tika Server en cours d'exécution.TIKA_CLIENT_ONLY - Si défini sur true, alors TIKA_SERVER_JAR est ignoré et s'appuie sur la valeur de TIKA_SERVER_ENDPOINT et traite Tika comme un client de repos.TIKA_TRANSLATOR - Définir sur le nom de classe entièrement qualifié (par défaut à Lingo24) pour l'implémentation du traducteur TIKA.TIKA_SERVER_CLASSPATH - Définir sur une chaîne (délimitée par ':' pour chaque chemin supplémentaire) pour appliquer le chemin du pot Tika Server.TIKA_LOG_PATH - réglé sur un répertoire avec des autorisations d'écriture et les fichiers tika.log et tika-server.log seront placés dans ce répertoire.TIKA_PATH - Défini sur un répertoire avec des autorisations d'écriture et le fichier tika_server.jar sera placé dans ce répertoire.TIKA_JAVA - Définissez le nom d'exécution de Java, par exemple, java ou java9TIKA_STARTUP_SLEEP - Nombre de secondes ( float ) pour attendre par chèque si le serveur Tika est lancé lors de l'exécutionTIKA_STARTUP_MAX_RETRY - Nombre de chèques ( int ) pour tenter le démarrage du serveur TIKA s'il est lancé à l'exécutionTIKA_JAVA_ARGS - Définissez les arguments Java Runtime, par exemple, -Xmx4gTIKA_LOG_FILE - Définissez le nom de fichier du fichier journal. Par défaut: tika.log . S'il s'agit d'une chaîne vide ( '' ), aucun fichier de journal n'est créé. #!/usr/bin/env python
import tika
tika . initVM ()
from tika import parser
parsed = parser . from_file ( '/path/to/file' )
print ( parsed [ "metadata" ])
print ( parsed [ "content" ])L'interface de l'analyseur extrait du texte et des métadonnées à l'aide de l'interface / RMETA. C'est l'une des meilleures façons d'obtenir le contenu interne XHTML extrait.
Note:
L'interface de l'analyseur a besoin de la variable d'environnement suivante définie sur la console pour l'impression du contenu extrait. export PYTHONIOENCODING=utf8
#!/usr/bin/env python
import tika
from tika import parser
parsed = parser . from_file ( '/path/to/file' )
print ( parsed [ "metadata" ])
print ( parsed [ "content" ])Facultativement, vous pouvez transmettre l'URL du serveur TIKA avec l'appel ce qui est utile pour l'exécution multi-instance ou lorsque Tika est dockerzé / lié.
parsed = parser . from_file ( '/path/to/file' , 'http://tika:9998/tika' )
string_parsed = parser . from_buffer ( 'Good evening, Dave' , 'http://tika:9998/tika' )Vous pouvez également passer un ruisseau binaire
with open(file, 'rb') as file_obj:
response = tika.parser.from_file(file_obj)
Étant donné que la compression GZIP TIKA 1.24.1 des flux d'entrée et de sortie est autorisée.
La compression d'entrée peut être obtenue avec GZIP ou ZLIB:
import zlib
with open(file, 'rb') as file_obj:
return tika.parser.from_buffer(zlib.compress(file_obj.read()))
...
import gzip
with open(file, 'rb') as file_obj:
return tika.parser.from_buffer(gzip.compress(file_obj.read()))
Et sortie avec l'en-tête:
with open(file, 'rb') as file_obj:
return tika.parser.from_file(file_obj, headers={'Accept-Encoding': 'gzip, deflate'})
L'interface de l'analyseur est éventuellement capable de sortir le contenu sous le nom de XHTML plutôt que de texte brut.
Note:
L'interface de l'analyseur a besoin de la variable d'environnement suivante définie sur la console pour l'impression du contenu extrait. export PYTHONIOENCODING=utf8
#!/usr/bin/env python
import tika
from tika import parser
parsed = parser . from_file ( '/path/to/file' , xmlContent = True )
print ( parsed [ "metadata" ])
print ( parsed [ "content" ])
# Note: This is also available when parsing from the buffer. L'interface de déballage gère à la fois les métadonnées et l'extraction de texte en un seul appel et renvoie en interne un tarball de métadonnées et des entrées de texte qui est déballée en interne, réduisant la charge métallique pour l'extraction.
#!/usr/bin/env python
import tika
from tika import unpack
parsed = unpack . from_file ( '/path/to/file' )L'interface de détection fournit une classification de type IANA MIME pour le fichier fourni.
#!/usr/bin/env python
import tika
from tika import detector
print ( detector . from_file ( '/path/to/file' ))L'interface de configuration vous permet d'inspecter la configuration de l'environnement du serveur Tika, y compris les analyseurs, les types de mime et les détecteurs avec lesquels le serveur a été configuré.
#!/usr/bin/env python
import tika
from tika import config
print ( config . getParsers ())
print ( config . getMimeTypes ())
print ( config . getDetectors ())L'interface de détection de langue fournit un code de langue à 2 caractères textait en fonction du texte dans le fichier fourni.
#!/usr/bin/env python
from tika import language
print ( language . from_file ( '/path/to/file' ))L'interface Translate traduit le texte automatiquement extrait par Tika de la langue source vers la langue de destination.
#!/usr/bin/env python
from tika import translate
print ( translate . from_file ( '/path/to/spanish' , 'es' , 'en' ))Remarque Vous pouvez également utiliser une méthode d'analyseur et de détecteur .from_buffer (String | Bufferediobase) pour analyser dynamiquement un tampon de chaîne ou d'octets dans Python et / ou de détecter son type de mime. Ceci est utile si vous avez déjà chargé le contenu en mémoire.
string_parsed = parser . from_buffer ( 'Good evening, Dave' )
byte_data : bytes = b'B xc3 xa4 ume'
parsed = parser . from_buffer ( io . BytesIO ( byte_data ))Vous pouvez définir Tika pour utiliser le mode client uniquement en définissant
import tika
tika . TikaClientOnly = TrueEnsuite, vous pouvez exécuter l'une des méthodes et il omettra pleinement le chèque pour voir si le service sur LocalHost est en cours d'exécution et omettra l'impression des messages de vérification.
Vous pouvez mettre à jour le CLASSPATH que le serveur TIKA utilise en définissant le ClassPath comme un ensemble de ':' chaînes délimitées. Par exemple, si vous souhaitez faire travailler Tika-Python avec GeotopicParsing, vous pouvez le faire, remplacer les chemins ci-dessous par vos propres chemins, comme identifié ici et assurez-vous que vous l'avez fait:
Kill Tika Server (si déjà en cours d'exécution):
ps aux | grep java | grep Tika
kill -9 PID import tika . tika
import os
from tika import parser
home = os . getenv ( 'HOME' )
tika . tika . TikaServerClasspath = home + '/git/geotopicparser-utils/mime:' + home + '/git/geotopicparser-utils/models/polar'
parsed = parser . from_file ( home + '/git/geotopicparser-utils/geotopics/polar.geot' )
print parsed [ "metadata" ] Vous pouvez personnaliser la demande HTTP sortante au serveur TIKA en définissant requestOptions sur les méthodes .from_file et .from_buffer (analyser, déballer, détecter, config, langage, tradlater). Il devrait s'agir d'un dictionnaire d'arguments qui sera transmis à la méthode de demande. La documentation de la méthode de demande spécifie des arguments valides. Cela remplacera les valeurs par défaut, sauf pour url et params / data .
from tika import parser
parsed = parser . from_file ( '/path/to/file' , requestOptions = { 'timeout' : 120 }) Lorsque vous installez Tika-Python, vous obtenez également un nouvel outil client de ligne de commande, tika-python installé dans votre répertoire / path / vers / python / bin.
Les options et l'aide pour l'outil de ligne de commande peuvent être vues en tapant tika-python sans aucun argument. Cela téléchargera également une copie du pot Tika-Server et le démarrera si vous ne l'avez pas déjà fait.
tika.py [-v] [-o < outputDir > ] [--server < TikaServerEndpoint > ] [--install < UrlToTikaServerJar > ] [--port < portNumber > ] < command > < option > < urlOrPathToFile >
tika.py parse all test.pdf test2.pdf (write output JSON metadata files for test1.pdf_meta.json and test2.pdf_meta.json)
tika.py detect type test.pdf (returns mime-type as text/plain)
tika.py language file french.txt (returns language e.g., fr as text/plain)
tika.py translate fr:en french.txt (translates the file french.txt from french to english)
tika.py config mime-types (see what mime-types the Tika Server can handle)
A simple python and command-line client for Tika using the standalone Tika server (JAR file).
All commands return results in JSON format by default (except text in text/plain).
To parse docs, use:
tika.py parse < meta | text | all > < path >
To check the configuration of the Tika server, use:
tika.py config < mime-types | detectors | parsers >
Commands:
parse = parse the input file and write a JSON doc file.ext_meta.json containing the extracted metadata, text, or both
detect type = parse the stream and ' detect ' the MIME/media type, return in text/plain
language file = parse the file stream and identify the language of the text, return its 2 character code in text/plain
translate src:dest = parse and extract text and then translate the text from source language to destination language
config = return a JSON doc describing the configuration of the Tika server (i.e. mime-types it
can handle, or installed detectors or parsers)
Arguments:
urlOrPathToFile = file to be parsed, if URL it will first be retrieved and then passed to Tika
Switches:
--verbose, -v = verbose mode
--encode, -e = encode response in UTF-8
--csv, -c = report detect output in comma-delimited format
--server < TikaServerEndpoint > = use a remote Tika Server at this endpoint, otherwise use local server
--install < UrlToTikaServerJar > = download and exec Tika Server (JAR file), starting server on default port 9998
Example usage as python client:
-- from tika import runCommand, parse1
-- jsonOutput = runCommand( ' parse ' , ' all ' , filename)
or
-- jsonOutput = parse1( ' all ' , filename)Envoyez-les à Chris A. Mattmann.
Merci au programme DARPA MEMEX pour le financement de la plupart des parties originales de ce travail.
Licence Apache, version 2