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