Un puerto de Python de la biblioteca Apache Tika que hace que Tika esté disponible con el servidor Tika REST.
Esto hace que Apache Tika esté disponible como una biblioteca de Python, instalable a través de SetupTools, PIP e instalación fácil.
Para usar esta biblioteca, debe tener instalado Java 7+ en su sistema a medida que Tika-Python inicia el servidor Tika REST en segundo plano.
Inspirado por Aptivate Tika.
pip install tikapython setup.py buildpython setup.py install To get this working in a disconnected environment, download a tika server file (both tika-server.jar and tika-server.jar.md5, which can be found here) and set the TIKA_SERVER_JAR environment variable to TIKA_SERVER_JAR="file:////tika-server-standard.jar" which successfully tells python-tika to "download" this file and Muévalo a /tmp/tika-server-standard.jar y ejecute como proceso de fondo.
Esta es la única forma de ejecutar python-tika sin acceso a Internet. Sin este conjunto, el valor predeterminado es verificar la versión de Tika y extraer el último cada vez de Apache.
Estos se leen una vez, cuando tika/tika.py se carga y se usa inicialmente en todo momento después de eso.
TIKA_VERSION - Establecer en la cadena de versión, por ejemplo, 1.12 o predeterminado a la versión Tika actual.TIKA_SERVER_JAR : establezca en la URL completa en el jar remoto del servidor Tika para descargar y caché.TIKA_SERVER_ENDPOINT - Establezca en el host (local o remoto) para la ejecución del jar de servidor Tika.TIKA_CLIENT_ONLY : si se establece en True, entonces se ignora TIKA_SERVER_JAR , y se basa en el valor de TIKA_SERVER_ENDPOINT y trata a Tika como un cliente REST.TIKA_TRANSLATOR - Establecer en el nombre de clase totalmente calificado (predeterminado a Lingo24) para la implementación del traductor Tika.TIKA_SERVER_CLASSPATH - Establecer en una cadena (delimitada por ':' para cada ruta adicional) para prevenir la ruta JAR de Tika Server.TIKA_LOG_PATH : establezca en un directorio con permisos de escritura y los archivos tika.log y tika-server.log se colocarán en este directorio.TIKA_PATH : establezca en un directorio con permisos de escritura y el archivo tika_server.jar se colocará en este directorio.TIKA_JAVA - Establezca el nombre de tiempo de ejecución de Java, por ejemplo, java o java9TIKA_STARTUP_SLEEP - Número de segundos ( float ) para esperar por verificación si el servidor Tika se inicia en tiempo de ejecuciónTIKA_STARTUP_MAX_RETRY - Número de verificaciones ( int ) para intentar el inicio del servidor Tika si se inicia en tiempo de ejecuciónTIKA_JAVA_ARGS - Establecer argumentos de tiempo de ejecución de Java, por ejemplo, -Xmx4gTIKA_LOG_FILE - Establezca el nombre de archivo para el archivo de registro. Valor predeterminado: tika.log . Si es una cadena vacía ( '' ), no se crea ningún archivo de registro. #!/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" ])La interfaz de analizador extrae texto y metadatos utilizando la interfaz /rmeta. Esta es una de las mejores formas de extraer el contenido interno de XHTML.
Nota:
La interfaz de analizador necesita la siguiente variable de entorno establecida en la consola para la impresión del contenido extraído. 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" ])Opcionalmente, puede pasar la URL del servidor Tika junto con la llamada lo que es útil para la ejecución de múltiples instancias o cuando Tika está marcado/vinculado.
parsed = parser . from_file ( '/path/to/file' , 'http://tika:9998/tika' )
string_parsed = parser . from_buffer ( 'Good evening, Dave' , 'http://tika:9998/tika' )También puedes pasar una transmisión binaria
with open(file, 'rb') as file_obj:
response = tika.parser.from_file(file_obj)
Dado que se permite la compresión de Tika 1.24.1 GZIP de transmisiones de entrada y salida.
La compresión de entrada se puede lograr con GZIP o 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()))
Y salida con el encabezado:
with open(file, 'rb') as file_obj:
return tika.parser.from_file(file_obj, headers={'Accept-Encoding': 'gzip, deflate'})
La interfaz de analizador puede generar opcionalmente el contenido como XHTML en lugar de texto sin formato.
Nota:
La interfaz de analizador necesita la siguiente variable de entorno establecida en la consola para la impresión del contenido extraído. 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. La interfaz desempaquetada maneja los metadatos y la extracción de texto en una sola llamada y devuelve internamente un tarball de metadatos y entradas de texto que se desempaquetan internamente, reduciendo la carga de cables para la extracción.
#!/usr/bin/env python
import tika
from tika import unpack
parsed = unpack . from_file ( '/path/to/file' )La interfaz Detect proporciona una clasificación de tipo MIME IANA para el archivo proporcionado.
#!/usr/bin/env python
import tika
from tika import detector
print ( detector . from_file ( '/path/to/file' ))La interfaz de configuración le permite inspeccionar la configuración del entorno de Tika Server, incluida los analizadores, los tipos de MIME y los detectores con los que se ha configurado el servidor.
#!/usr/bin/env python
import tika
from tika import config
print ( config . getParsers ())
print ( config . getMimeTypes ())
print ( config . getDetectors ())La interfaz de detección de idiomas proporciona un código de lenguaje de 2 caracteres texto en base al texto en el archivo proporcionado.
#!/usr/bin/env python
from tika import language
print ( language . from_file ( '/path/to/file' ))La interfaz Traducido traduce el texto extraído automáticamente por Tika desde el idioma de origen al idioma de destino.
#!/usr/bin/env python
from tika import translate
print ( translate . from_file ( '/path/to/spanish' , 'es' , 'en' ))Tenga en cuenta que también puede usar un método analizador y detector .From_Buffer (String | BufferedioBase) para analizar dinámicamente un búfer de cadena o bytes en Python y/o detectar su tipo MIME. Esto es útil si ya ha cargado el contenido en la memoria.
string_parsed = parser . from_buffer ( 'Good evening, Dave' )
byte_data : bytes = b'B xc3 xa4 ume'
parsed = parser . from_buffer ( io . BytesIO ( byte_data ))Puede configurar TIKA para usar el modo de solo cliente configurando
import tika
tika . TikaClientOnly = TrueLuego puede ejecutar cualquiera de los métodos y omitirá completamente la verificación para ver si el servicio en Localhost se está ejecutando y omitir imprimir los mensajes de verificación.
Puede actualizar el ClassPath que utiliza Tika Server configurando el ClassPath como un conjunto de ':' Strings delimitadas. Por ejemplo, si desea que Tika-Python funcione con GeotopicParsing, puede hacer esto, reemplazar las rutas a continuación con sus propias rutas, como se identifica aquí y asegúrese de haber hecho esto:
Kill Tika Server (si ya se está ejecutando):
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" ] Puede personalizar la solicitud HTTP saliente al servidor TIKA estableciendo requestOptions en .from_file y .from_buffer Debe ser un diccionario de argumentos que se pasarán al método de solicitud. La documentación del método de solicitud especifica argumentos válidos. Esto anulará los valores predeterminados, excepto url y params / data .
from tika import parser
parsed = parser . from_file ( '/path/to/file' , requestOptions = { 'timeout' : 120 }) Cuando instala Tika-Python, también obtiene una nueva herramienta de cliente de línea de comandos, tika-python instalado en su directorio/Path/To/Python/Bin.
Las opciones y la ayuda para la herramienta de línea de comandos se pueden ver escribiendo tika-python sin ningún argumento. Esto también descargará una copia del jar Tika-Server y lo comenzará si aún no lo ha hecho.
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)Envíalos a Chris A. Mattmann.
Gracias al programa DARPA MEMEX por financiar la mayoría de las partes originales de este trabajo.
Licencia Apache, versión 2