Ein Python -Port der Apache Tika -Bibliothek, mit der Tika mit dem Tika -Restserver verfügbar ist.
Dadurch wird Apache Tika als Python -Bibliothek verfügbar, die über Setuptools, PIP und einfache Installation installierbar ist.
Um diese Bibliothek zu verwenden, müssen Java 7+ in Ihrem System installiert sein, da Tika-Python den Tika-Restserver im Hintergrund startet.
Inspiriert von aptivatem Tika.
pip install tikapython setup.py buildpython setup.py install Um dies in einer unzusammenhängenden Umgebung zum Arbeiten zu bringen, laden Sie eine Tika-Serverdatei (sowohl Tika-server.jar und Tika-server.jar.md5, die hier zu finden sind) herunter und setzen die Tika_Server_Jar-Umgebungsvariable auf Tika_Server_jar = "Datei: /// python-tika standard.jard.jar. Verschieben Sie es in /tmp/tika-server-standard.jar und führen Sie als Hintergrundprozess aus.
Dies ist die einzige Möglichkeit, python-tika ohne Internetzugang zu betreiben. Ohne diesen Satz besteht die Standardeinstellung darin, die Tika -Version zu überprüfen und jedes Mal die neueste von Apache zu ziehen.
Diese werden einmal gelesen, wenn Tika/tika.py anfänglich geladen und danach verwendet wird.
TIKA_VERSION - Setzen Sie auf die Versionszeichenfolge, z. B. 1.12 oder standardmäßig auf die aktuelle Tika -Version.TIKA_SERVER_JAR - auf die vollständige URL auf das Remote Tika Server Jar einstellen, um sie herunterzuladen und zu cache.TIKA_SERVER_ENDPOINT - Setzen Sie auf den Host (lokal oder remote) für das ausgeführte Tika -Server -Glas.TIKA_CLIENT_ONLY - Wenn Sie auf True gesetzt sind, wird TIKA_SERVER_JAR ignoriert und stützt sich auf den Wert für TIKA_SERVER_ENDPOINT und behandelt Tika wie einen REST -Client.TIKA_TRANSLATOR - Für die Tika -Übersetzer -Implementierung auf den voll qualifizierten Klassennamen (Standard an LINGO24) eingestellt.TIKA_SERVER_CLASSPATH - Setzen Sie auf eine Zeichenfolge (abgenommen durch ':' Für jeden zusätzlichen Pfad), um sich auf den Tika -Server -Jar -Pfad vorzubereiten.TIKA_LOG_PATH - In ein Verzeichnis mit Schreibberechtigungen festgelegt, und die Dateien tika.log und tika-server.log werden in diesem Verzeichnis platziert.TIKA_PATH - In ein Verzeichnis mit Schreibberechtigungen festgelegt und die Datei tika_server.jar in diesem Verzeichnis platziert.TIKA_JAVA - Setzen Sie den Java -Laufzeitnamen, z. B. java oder java9TIKA_STARTUP_SLEEP - Anzahl der Sekunden ( float ) zum Warten pro Überprüfen, ob der Tika -Server zur Laufzeit gestartet wirdTIKA_STARTUP_MAX_RETRY - Anzahl der Überprüfungen ( int ), die versuchen, ein Tika -Server -Start zu erhalten, wenn er zur Laufzeit gestartet wirdTIKA_JAVA_ARGS - Setzen Sie Java -Laufzeitargumente, z. -Xmx4gTIKA_LOG_FILE - Stellen Sie den Dateinamen für die Protokolldatei fest. Standard: tika.log . Wenn es sich um eine leere Zeichenfolge ( '' ) handelt, wird keine Protokolldatei erstellt. #!/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" ])Die Parser -Schnittstelle extrahiert Text und Metadaten mit der /rmeta -Schnittstelle. Dies ist eine der besseren Möglichkeiten, um den internen XHTML -Inhalt extrahieren zu lassen.
Notiz:
Die Parser -Schnittstelle benötigt die folgende Umgebungsvariable, die auf der Konsole zum Drucken des extrahierten Inhalts eingestellt ist. 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" ])Optional können Sie die Tika-Server-URL zusammen mit dem Anruf übergeben, was für die Ausführung von Multi-Instance-Ausführung nützlich ist oder wenn TIKA docerzed/verknüpft ist.
parsed = parser . from_file ( '/path/to/file' , 'http://tika:9998/tika' )
string_parsed = parser . from_buffer ( 'Good evening, Dave' , 'http://tika:9998/tika' )Sie können auch einen Binärstrom übergeben
with open(file, 'rb') as file_obj:
response = tika.parser.from_file(file_obj)
Da Tika 1.24.1 GZIP -Komprimierung von Eingangs- und Ausgangsströmen zulässig ist.
Die Eingangskomprimierung kann mit GZIP oder ZLIB erreicht werden:
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()))
Und mit dem Header ausgeben:
with open(file, 'rb') as file_obj:
return tika.parser.from_file(file_obj, headers={'Accept-Encoding': 'gzip, deflate'})
Die Parser -Schnittstelle ist optional in der Lage, den Inhalt als XHTML und nicht als einfacher Text auszugeben.
Notiz:
Die Parser -Schnittstelle benötigt die folgende Umgebungsvariable, die auf der Konsole zum Drucken des extrahierten Inhalts eingestellt ist. 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. Die Auspackschnittstelle übernimmt sowohl Metadaten als auch Textextraktion in einem einzigen Anruf und kehrt intern einen Tarball aus Metadaten und Texteinträgen zurück, der intern ausgepackt ist, wodurch die Drahtlast für die Extraktion verringert wird.
#!/usr/bin/env python
import tika
from tika import unpack
parsed = unpack . from_file ( '/path/to/file' )Die Erkennungsschnittstelle bietet eine IANA -MIME -MIME -Klassifizierung für die bereitgestellte Datei.
#!/usr/bin/env python
import tika
from tika import detector
print ( detector . from_file ( '/path/to/file' ))Mit der Konfigurationsschnittstelle können Sie die Konfiguration der Tika -Server -Umgebung inspizieren, einschließlich welcher Parser, MIME -Typen und -Detektoren der Server konfiguriert wurde.
#!/usr/bin/env python
import tika
from tika import config
print ( config . getParsers ())
print ( config . getMimeTypes ())
print ( config . getDetectors ())Die Spracherkennungsschnittstelle enthält einen 2 -Zeichen -Sprachcode, der basierend auf dem Text in der angegebenen Datei geschrieben wurde.
#!/usr/bin/env python
from tika import language
print ( language . from_file ( '/path/to/file' ))Die Übersetzungsschnittstelle übersetzt den von TIKA automatisch extrahierten Text aus der Quellsprache in die Zielsprache.
#!/usr/bin/env python
from tika import translate
print ( translate . from_file ( '/path/to/spanish' , 'es' , 'en' ))Beachten Sie, dass Sie auch eine Parser- und Detektor -Methode verwenden können. Dies ist nützlich, wenn Sie den Inhalt bereits in den Speicher geladen haben.
string_parsed = parser . from_buffer ( 'Good evening, Dave' )
byte_data : bytes = b'B xc3 xa4 ume'
parsed = parser . from_buffer ( io . BytesIO ( byte_data ))Sie können TIKA so einstellen
import tika
tika . TikaClientOnly = TrueAnschließend können Sie eine der Methoden ausführen, und es wird die Überprüfung vollständig ausführen, um festzustellen, ob der Dienst auf Localhost ausgeführt wird, und das Drucken der Check -Meldungen auszulassen.
Sie können den Klassenpfad aktualisieren, den Tika Server verwendet, indem Sie den Klassenpfad als Satz von ':' Grenzkämpfer festlegen. Wenn Sie beispielsweise Tika-Python mit Geotopicparsing arbeiten lassen möchten, können Sie dies tun, die folgenden Pfade durch Ihre eigenen Pfade ersetzen, wie hier identifiziert, und sicherstellen, dass Sie dies getan haben:
TIKA -Server töten (falls bereits ausgeführt):
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" ] Sie können die ausgehende HTTP -Anforderung an Tika Server anpassen, indem Sie requestOptions auf den Methoden .from_file und .from_buffer einstellen (Parser, Auspacken, Erkennung, Konfiguration, Sprache, Übersetzung). Es sollte ein Wörterbuch von Argumenten sein, die an die Anforderungsmethode übergeben werden. Die Anforderungsmethodedokumentation gibt gültige Argumente an. Dadurch wird Standards mit Ausnahme von url und params / data überschrieben.
from tika import parser
parsed = parser . from_file ( '/path/to/file' , requestOptions = { 'timeout' : 120 }) Wenn Sie Tika-Python installieren, erhalten Sie auch ein neues Befehlszeilen-Client-Tool, tika-python in Ihrem Verzeichnis/Pfad/TO/Python/Bin.
Die Optionen und Hilfe für das Befehlszeilen-Tool können durch Eingeben von tika-python ohne Argumente angezeigt werden. Dadurch wird auch eine Kopie des Tika-Server-Jar heruntergeladen und startet sie, wenn Sie dies noch nicht getan haben.
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)Senden Sie sie an Chris A. Mattmann.
Dank des DARPA -Memex -Programms für die Finanzierung der meisten ursprünglichen Teile dieser Arbeit.
Apache -Lizenz, Version 2