Port Python dari perpustakaan Apache Tika yang membuat Tika tersedia menggunakan server Tika Rest.
Ini membuat Apache Tika tersedia sebagai perpustakaan Python, dapat diinstal melalui setuptools, PIP, dan pemasangan mudah.
Untuk menggunakan pustaka ini, Anda harus menginstal Java 7+ pada sistem Anda saat Tika-Python memulai server Tika Rest di latar belakang.
Terinspirasi oleh Aptivate Tika.
pip install tikapython setup.py buildpython setup.py install Untuk membuat ini bekerja di lingkungan yang terputus, unduh file server Tika (baik tika-server.jar dan tika-server.jar.md5, yang dapat ditemukan di sini) dan mengatur variabel lingkungan Tika_jar yang berturut- python-tika " itu ke /tmp/tika-server-standard.jar dan jalankan sebagai proses latar belakang.
Ini adalah satu-satunya cara untuk menjalankan python-tika tanpa akses internet. Tanpa set ini, standarnya adalah untuk memeriksa versi Tika dan menarik terbaru setiap kali dari Apache.
Ini dibaca sekali, ketika Tika/Tika.py awalnya dimuat dan digunakan sepanjang setelah itu.
TIKA_VERSION - Setel ke string versi, misalnya 1.12 atau default ke versi Tika saat ini.TIKA_SERVER_JAR - Setel ke URL lengkap ke toples server Tika jarak jauh untuk diunduh dan cache.TIKA_SERVER_ENDPOINT - diatur ke host (lokal atau remote) untuk toples server Tika yang sedang berjalan.TIKA_CLIENT_ONLY - Jika diatur ke true, maka TIKA_SERVER_JAR diabaikan, dan bergantung pada nilai untuk TIKA_SERVER_ENDPOINT dan memperlakukan Tika seperti klien istirahat.TIKA_TRANSLATOR - diatur ke nama kelas yang sepenuhnya memenuhi syarat (default ke Lingo24) untuk implementasi penerjemah Tika.TIKA_SERVER_CLASSPATH - diatur ke string (dibatasi oleh ':' untuk setiap jalur tambahan) untuk diatur ke jalur jar tika server.TIKA_LOG_PATH - Atur ke direktori dengan izin tulis dan file tika.log dan tika-server.log akan ditempatkan di direktori ini.TIKA_PATH - Disetel ke direktori dengan izin tulis dan file tika_server.jar akan ditempatkan di direktori ini.TIKA_JAVA - Tetapkan nama runtime java, misalnya, java atau java9TIKA_STARTUP_SLEEP - Jumlah detik ( float ) untuk menunggu per cek apakah server Tika diluncurkan saat runtimeTIKA_STARTUP_MAX_RETRY - Jumlah cek ( int ) untuk mencoba startup server TIKA jika diluncurkan saat runtimeTIKA_JAVA_ARGS - atur argumen runtime java, misalnya, -Xmx4gTIKA_LOG_FILE - Atur nama file untuk file log. Default: tika.log . Jika itu adalah string kosong ( '' ), tidak ada file log yang dibuat. #!/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" ])Antarmuka parser mengekstrak teks dan metadata menggunakan antarmuka /rmeta. Ini adalah salah satu cara yang lebih baik untuk mendapatkan konten XHTML internal yang diekstraksi.
Catatan:
Antarmuka parser membutuhkan variabel lingkungan berikut yang ditetapkan pada konsol untuk mencetak konten yang diekstraksi. 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" ])Secara opsional, Anda dapat lulus URL server Tika bersama dengan panggilan apa yang berguna untuk eksekusi multi-instansi atau ketika Tika dockerzed/ditautkan.
parsed = parser . from_file ( '/path/to/file' , 'http://tika:9998/tika' )
string_parsed = parser . from_buffer ( 'Good evening, Dave' , 'http://tika:9998/tika' )Anda juga dapat melewati aliran biner
with open(file, 'rb') as file_obj:
response = tika.parser.from_file(file_obj)
Karena TIKA 1.24.1 GZIP kompresi aliran input dan output diperbolehkan.
Kompresi input dapat dicapai dengan GZIP atau 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()))
Dan output dengan header:
with open(file, 'rb') as file_obj:
return tika.parser.from_file(file_obj, headers={'Accept-Encoding': 'gzip, deflate'})
Antarmuka parser secara opsional dapat mengeluarkan konten sebagai xhtml daripada teks biasa.
Catatan:
Antarmuka parser membutuhkan variabel lingkungan berikut yang ditetapkan pada konsol untuk mencetak konten yang diekstraksi. 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. Antarmuka Unpack menangani baik metadata dan ekstraksi teks dalam satu panggilan dan secara internal mengembalikan kembali tarball metadata dan entri teks yang secara internal dibongkar, mengurangi beban kawat untuk ekstraksi.
#!/usr/bin/env python
import tika
from tika import unpack
parsed = unpack . from_file ( '/path/to/file' )Antarmuka Deteksi menyediakan klasifikasi tipe IANA MIME untuk file yang disediakan.
#!/usr/bin/env python
import tika
from tika import detector
print ( detector . from_file ( '/path/to/file' ))Antarmuka konfigurasi memungkinkan Anda untuk memeriksa konfigurasi lingkungan server Tika termasuk parser, tipe MIME, dan detektor yang telah dikonfigurasi dengan server.
#!/usr/bin/env python
import tika
from tika import config
print ( config . getParsers ())
print ( config . getMimeTypes ())
print ( config . getDetectors ())Antarmuka deteksi bahasa menyediakan kode bahasa 2 karakter yang diekspresikan berdasarkan teks dalam file yang disediakan.
#!/usr/bin/env python
from tika import language
print ( language . from_file ( '/path/to/file' ))Antarmuka Terjemahan menerjemahkan teks secara otomatis diekstraksi oleh Tika dari bahasa sumber ke bahasa tujuan.
#!/usr/bin/env python
from tika import translate
print ( translate . from_file ( '/path/to/spanish' , 'es' , 'en' ))Catatan Anda juga dapat menggunakan metode parser dan detektor .from_buffer (string | bufferediobase) untuk secara dinamis menguraikan string atau byte buffer dalam python dan/atau mendeteksi tipe mime -nya. Ini berguna jika Anda sudah memasukkan konten ke dalam memori.
string_parsed = parser . from_buffer ( 'Good evening, Dave' )
byte_data : bytes = b'B xc3 xa4 ume'
parsed = parser . from_buffer ( io . BytesIO ( byte_data ))Anda dapat mengatur Tika untuk menggunakan mode hanya klien dengan mengatur
import tika
tika . TikaClientOnly = TrueKemudian Anda dapat menjalankan salah satu metode dan itu akan sepenuhnya menghilangkan cek untuk melihat apakah layanan di LocalHost sedang berjalan dan menghilangkan mencetak pesan cek.
Anda dapat memperbarui ClassPath yang digunakan server Tika dengan mengatur ClassPath sebagai satu set ':' String Delimited. Misalnya jika Anda ingin membuat Tika-Python bekerja dengan geotopicparsing, Anda dapat melakukan ini, mengganti jalur di bawah ini dengan jalur Anda sendiri, seperti yang diidentifikasi di sini dan pastikan bahwa Anda telah melakukan ini:
Bunuh server Tika (jika sudah berjalan):
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" ] Anda dapat menyesuaikan permintaan http keluar ke server Tika dengan mengatur requestOptions di Metode .from_file dan .from_buffer (parser, buka pack, deteksi, konfigurasi, bahasa, translasi). Itu harus menjadi kamus argumen yang akan diteruskan ke metode permintaan. Dokumentasi metode permintaan menentukan argumen yang valid. Ini akan menimpa default apa pun kecuali url dan params / data .
from tika import parser
parsed = parser . from_file ( '/path/to/file' , requestOptions = { 'timeout' : 120 }) Saat Anda menginstal Tika-Python, Anda juga mendapatkan alat klien baris perintah baru, tika-python diinstal di direktori/Path/to/Python/bin Anda.
Opsi dan bantuan untuk alat baris perintah dapat dilihat dengan mengetik tika-python tanpa argumen apa pun. Ini juga akan mengunduh salinan toples Tika-Server dan memulainya jika Anda belum melakukannya.
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)Kirim mereka ke Chris A. Mattmann.
Berkat program DARPA MEMEX untuk mendanai sebagian besar bagian asli dari karya ini.
Lisensi Apache, Versi 2