Apache Tika庫的Python端口,它使Tika使用Tika Rest服務器可用。
這使Apache Tika可作為Python庫可用,可通過Setuptools,pip和Easy Installs安裝。
要使用此庫,您需要在系統上安裝Java 7+,因為Tika-Python在後台啟動Tika Rest服務器。
受到Tika的啟發。
pip install tikapython setup.py buildpython setup.py installTo 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將其移至/tmp/tika-server-standard.jar ,並作為背景過程運行。
這是不訪問Internet的Python-Tika運行python-tika的唯一方法。沒有此集合,默認值是檢查Tika版本並每次從Apache上拉最新信息。
當Tika/tika.py最初加載並在此之後使用時,這些都是讀取的。
TIKA_VERSION設置為版本字符串,例如,1.12或默認為當前tika版本。TIKA_SERVER_JAR設置為完整的URL到遠程tika服務器罐以下載和緩存。TIKA_SERVER_ENDPOINT將運行的Tika Server JAR設置為主機(本地或遠程)。TIKA_CLIENT_ONLY如果設置為true,則TIKA_SERVER_JAR被忽略,並依賴TIKA_SERVER_ENDPOINT的值,並像對待tika一樣對待tika。TIKA_TRANSLATOR設置為Tika Translator實現的完全資格的類名稱(默認為Lingo24)。TIKA_SERVER_CLASSPATH設置為字符串(由每次路徑界定為':'),以預到Tika Server Jar Path。TIKA_LOG_PATH設置為帶有寫入權限的目錄, tika.log和tika-server.log文件將放置在此目錄中。TIKA_PATH設置為帶有寫入權限的目錄, tika_server.jar文件將放置在此目錄中。TIKA_JAVA設置Java運行時名稱,例如, java或java9TIKA_STARTUP_SLEEP秒數( float )等待每次檢查是否在運行時啟動tika服務器TIKA_STARTUP_MAX_RETRY如果在運行時啟動tika Server啟動的檢查數( int )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" ])可選地,您可以將Tika Server URL與呼叫一起傳遞,以使多個實體執行有用的內容或tika dockerzed/linked時。
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. 拆卸界面在單個呼叫中處理元數據和文本提取,並內部返回元數據的tarball和文本條目,該條目內部被包裝,從而減少了電線負載以進行提取。
#!/usr/bin/env python
import tika
from tika import unpack
parsed = unpack . from_file ( '/path/to/file' )檢測接口為提供的文件提供了IANA MIME類型分類。
#!/usr/bin/env python
import tika
from tika import detector
print ( detector . from_file ( '/path/to/file' ))配置接口允許您檢查Tika Server環境的配置,包括對服務器配置的解析器,MIME類型和檢測器。
#!/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' ))翻譯界面將Tika自動提取的文本從源語言自動提取為目標語言。
#!/usr/bin/env python
from tika import translate
print ( translate . from_file ( '/path/to/spanish' , 'es' , 'en' ))注意,您還可以使用解析器和檢測器.from_buffer(String | BufferedIobase)方法在Python中動態解析字符串或字節緩衝區和/或檢測其MIME類型。如果您已經將內容加載到內存中,這將很有用。
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使用的類路徑。例如,如果您想讓Tika-Python與GeotopicParsing一起工作,則可以執行此操作,用自己的路徑替換下面的路徑,並確保您已經完成了此操作:
殺死tika服務器(如果已經運行):
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_file和.from_buffer方法(解析器,打開包裝,檢測,配置,語言,翻譯)上設置requestOptions將OuseptOptions設置為TIKA服務器。它應該是將傳遞給請求方法的論點字典。請求方法文檔指定有效的參數。除url和params / data外,這將覆蓋所有默認值。
from tika import parser
parsed = parser . from_file ( '/path/to/file' , requestOptions = { 'timeout' : 120 })安裝Tika-Python時,您還將獲得一個新的命令行客戶端工具, tika-python安裝在您的/路徑/to/python/bin目錄中。
可以通過在沒有任何參數的情況下鍵入tika-python來看到命令行工具的選項和幫助。這還將下載Tika-Server Jar的副本,如果您還沒有這樣做,請啟動它。
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)將它們發送給Chris A. Mattmann。
感謝DARPA MEMEX計劃為這項工作的大部分原始部分提供資金。
Apache許可證,版本2