Порт Python библиотеки Apache Tika, который делает Tika доступным с использованием сервера Tika Rest.
Это делает Apache Tika доступным в виде библиотеки Python, установленной через Setuptools, PIP и Easy Install.
Чтобы использовать эту библиотеку, вам нужно установить Java 7+ в вашей системе, поскольку Tika-Python запускает сервер REST 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 move it to /tmp/tika-server-standard.jar и запустить в качестве фонового процесса.
Это единственный способ запустить python-tika без доступа к Интернету. Без этого набора по умолчанию можно проверить версию Tika и каждый раз потащить из Apache.
Они читаются один раз, когда Tika/Tika.py изначально загружается и используется на протяжении всего этого.
TIKA_VERSION - установить на строку версии, например, 1.12 или по умолчанию в текущую версию Tika.TIKA_SERVER_JAR - установлен на полный URL -адрес для удаленной банки Tika Server для загрузки и кэша.TIKA_SERVER_ENDPOINT - установить на хост (локальный или удаленный) для запуска банки Tika Server.TIKA_CLIENT_ONLY - если установлен в TRUE, то TIKA_SERVER_JAR игнорируется и опирается на значение для TIKA_SERVER_ENDPOINT и относится к тике как к клиенту отдыха.TIKA_TRANSLATOR - установлен на полностью квалифицированное имя класса (по умолчанию Lingo24) для реализации Tika Translator.TIKA_SERVER_CLASSPATH - установить на строку (разграничивается ':' для каждого дополнительного пути) для подготовки к пути Jar Tika Server.TIKA_LOG_PATH - установить в каталог с разрешениями на запись, и файлы tika.log и tika-server.log будут размещены в этом каталоге.TIKA_PATH - установить в каталог с разрешениями на запись, и файл tika_server.jar будет размещен в этом каталоге.TIKA_JAVA - установите имя времени выполнения Java, например, java или java9TIKA_STARTUP_SLEEP - количество секунд ( float ), чтобы подождать за проверку, если Tika Server запускается во время выполнения.TIKA_STARTUP_MAX_RETRY - Количество чеков ( int ), чтобы попытаться начать запуск сервера Tika, если запустить во время выполнения.TIKA_JAVA_ARGS - установить аргументы времени выполнения Java, например, -Xmx4gTIKA_LOG_FILE - установите имя файла для файла журнала. По умолчанию: tika.log . Если это пустая строка ( '' ), файл журнала не создан. #!/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" ])Интерфейс анализатора извлекает текст и метаданные с использованием интерфейса /rmeta. Это один из лучших способов получить внутренний контент XHTML.
Примечание:
Интерфейс анализатора нуждается в следующей переменной среды, установленной на консоли для печати извлеченного контента. 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" ])При желании вы можете передать URL-адрес Tika Server вместе с вызовом, что полезно для выполнения с несколькими инстанциями или когда Tika Dockerzed/связана.
parsed = parser . from_file ( '/path/to/file' , 'http://tika:9998/tika' )
string_parsed = parser . from_buffer ( 'Good evening, Dave' , 'http://tika:9998/tika' )Вы также можете пройти бинарный поток
with open(file, 'rb') as file_obj:
response = tika.parser.from_file(file_obj)
Поскольку TIKA 1.24.1 GZIP сжатие входных и выходных потоков разрешено.
Входное сжатие может быть достигнуто с помощью GZIP или 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()))
И вывод с заголовком:
with open(file, 'rb') as file_obj:
return tika.parser.from_file(file_obj, headers={'Accept-Encoding': 'gzip, deflate'})
Интерфейс синтаксического анализатора способен выводить контент как xhtml, а не простой текст.
Примечание:
Интерфейс анализатора нуждается в следующей переменной среды, установленной на консоли для печати извлеченного контента. 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. Интерфейс распаковки обрабатывает как метаданные, так и текстовые извлечения за один вызов, и внутренне возвращает бревно из метаданных и текстовых записей, которые внутренне распаковываются, уменьшая нагрузку на проволоки для извлечения.
#!/usr/bin/env python
import tika
from tika import unpack
parsed = unpack . from_file ( '/path/to/file' )Интерфейс Detect предоставляет классификацию типа Iana Mime для предоставленного файла.
#!/usr/bin/env python
import tika
from tika import detector
print ( detector . from_file ( '/path/to/file' ))Интерфейс конфигурации позволяет вам проверять конфигурацию среды Tika Server, включая то, что были настроены на то, с чего были настроены сервер.
#!/usr/bin/env python
import tika
from tika import config
print ( config . getParsers ())
print ( config . getMimeTypes ())
print ( config . getDetectors ())Интерфейс обнаружения языка предоставляет 2 -код языка символов, написанный на основе текста в предоставленном файле.
#!/usr/bin/env python
from tika import language
print ( language . from_file ( '/path/to/file' ))Интерфейс Translate переводит текст, автоматически извлеченный Tika из исходного языка на язык назначения.
#!/usr/bin/env python
from tika import translate
print ( translate . from_file ( '/path/to/spanish' , 'es' , 'en' ))ПРИМЕЧАНИЕ. Вы также можете использовать метод анализатора и детектор .FROM_BUFFER (String | Buffereiobase) для динамического анализации строки или буфера байтов в Python и/или обнаружения типа падения. Это полезно, если вы уже загрузили контент в память.
string_parsed = parser . from_buffer ( 'Good evening, Dave' )
byte_data : bytes = b'B xc3 xa4 ume'
parsed = parser . from_buffer ( io . BytesIO ( byte_data ))Вы можете настроить Tika для использования только клиентского режима, настройка
import tika
tika . TikaClientOnly = TrueЗатем вы можете запустить любой из методов, и он полностью пропустит проверку, чтобы увидеть, работает ли служба на LocalHost, и опустить печать чековых сообщений.
Вы можете обновить группу ClassPath, которую использует Tika Server, установив ClassPath как набор «:» разграниченные строки. Например, если вы хотите заставить Tika-Python работать с GeotopicParsing, вы можете сделать это, заменить пути ниже своими собственными путями, как указано здесь и убедитесь, что вы сделали это:
Убейте Tika Server (если уже работает):
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" ] Вы .from_buffer настроить исходящий HTTP -запрос на Tika Server, установив методы requestOptions .from_file . Это должен быть словарь аргументов, который будет передаваться методу запроса. В документации метода запроса указывается допустимые аргументы. Это будет переопределять любые значения по умолчанию, за исключением url и params / data .
from tika import parser
parsed = parser . from_file ( '/path/to/file' , requestOptions = { 'timeout' : 120 }) Когда вы устанавливаете Tika-Python, вы также получаете новый инструмент клиента командной строки, tika-python установленного в вашем каталоге/Path/To/Python/Bin.
Параметры и помощь для инструмента командной строки можно увидеть путем набора tika-python без каких-либо аргументов. Это также загрузит копию банки Tika-Server и начнет ее, если вы еще этого не сделали.
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)Отправьте их Крису А. Мэттманну.
Благодаря программе DARPA MEMEX за финансирование большинства первоначальных частей этой работы.
Лицензия Apache, версия 2