พอร์ต Python ของไลบรารี Apache Tika ที่ทำให้ Tika พร้อมใช้งานโดยใช้เซิร์ฟเวอร์ Tika Rest
สิ่งนี้ทำให้ Apache Tika พร้อมใช้งานเป็นไลบรารี Python ติดตั้งได้ผ่าน setuptools, Pip และ Easy Install
ในการใช้ไลบรารีนี้คุณจะต้องติดตั้ง Java 7+ ในระบบของคุณเนื่องจาก Tika-Python เริ่มต้นเซิร์ฟเวอร์ Tika Rest ในพื้นหลัง
แรงบันดาลใจจาก Aptivate Tika
pip install tikapython setup.py buildpython setup.py install หากต้องการทำงานนี้ในสภาพแวดล้อมที่ไม่เชื่อมต่อให้ดาวน์โหลดไฟล์เซิร์ฟเวอร์ Tika (ทั้ง tika-server.jar และ tika-server.jar.md5 ซึ่งสามารถพบได้ที่นี่) และตั้งค่าตัวแปร tika_server_jar เป็น python-tika = "ไฟล์: มันถึง /tmp/tika-server-standard.jar และทำงานเป็นกระบวนการพื้นหลัง
นี่เป็นวิธีเดียวที่จะเรียกใช้ python-tika โดยไม่ต้องใช้อินเทอร์เน็ต หากไม่มีชุดนี้ค่าเริ่มต้นคือการตรวจสอบเวอร์ชัน Tika และดึงล่าสุดทุกครั้งจาก Apache
สิ่งเหล่านี้จะถูกอ่านหนึ่งครั้งเมื่อ tika/tika.py ถูกโหลดและใช้งานในตอนแรกหลังจากนั้น
TIKA_VERSION - ตั้งค่าเป็นสตริงเวอร์ชันเช่น 1.12 หรือค่าเริ่มต้นเป็นเวอร์ชัน Tika ปัจจุบันTIKA_SERVER_JAR - ตั้งค่าเป็น URL เต็มรูปแบบเป็น jar เซิร์ฟเวอร์ Tika ระยะไกลเพื่อดาวน์โหลดและแคชTIKA_SERVER_ENDPOINT - ตั้งค่าเป็นโฮสต์ (ท้องถิ่นหรือรีโมต) สำหรับ jar เซิร์ฟเวอร์ Tika ที่รันTIKA_CLIENT_ONLY - ถ้าตั้งค่าเป็นจริงดังนั้น TIKA_SERVER_JAR จะถูกละเว้นและขึ้นอยู่กับค่าสำหรับ TIKA_SERVER_ENDPOINT และปฏิบัติต่อ tika เหมือนลูกค้าที่เหลือTIKA_TRANSLATOR - ตั้งค่าเป็นชื่อคลาสที่ผ่านการรับรองอย่างสมบูรณ์ (ค่าเริ่มต้นเป็น Lingo24) สำหรับการใช้งาน Tika TranslatorTIKA_SERVER_CLASSPATH - ตั้งค่าเป็นสตริง (คั่นด้วย ':' สำหรับแต่ละเส้นทางเพิ่มเติม) เพื่อเติมเต็มไปยังเส้นทาง Jar Server ServerTIKA_LOG_PATH - ตั้งค่าเป็นไดเรกทอรีที่มีสิทธิ์เขียนและไฟล์ tika.log และ tika-server.log จะถูกวางไว้ในไดเรกทอรีนี้TIKA_PATH - ตั้งค่าเป็นไดเรกทอรีที่มีสิทธิ์เขียนและไฟล์ tika_server.jar จะถูกวางไว้ในไดเรกทอรีนี้TIKA_JAVA - ตั้งชื่อ Java Runtime เช่น java หรือ java9TIKA_STARTUP_SLEEP - จำนวนวินาที ( float ) เพื่อรอการตรวจสอบว่าเซิร์ฟเวอร์ Tika เปิดตัวเมื่อรันไทม์TIKA_STARTUP_MAX_RETRY - จำนวนการตรวจสอบ ( int ) เพื่อพยายามเริ่มต้นเซิร์ฟเวอร์ Tika หากเปิดตัวเมื่อรันไทม์TIKA_JAVA_ARGS - ตั้งค่าอาร์กิวเมนต์ Java Runtime, เช่น -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 ภายใน
บันทึก:
อินเทอร์เฟซ Parser ต้องการตัวแปรสภาพแวดล้อมต่อไปนี้ที่ตั้งอยู่บนคอนโซลสำหรับการพิมพ์เนื้อหาที่สกัด 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 พร้อมกับการโทรที่มีประโยชน์สำหรับการดำเนินการหลายอินสแตนซ์หรือเมื่อ 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'})
อินเทอร์เฟซ Parser สามารถเลือกเอาต์พุตเนื้อหาเป็น XHTML ได้มากกว่าข้อความธรรมดา
บันทึก:
อินเทอร์เฟซ Parser ต้องการตัวแปรสภาพแวดล้อมต่อไปนี้ที่ตั้งอยู่บนคอนโซลสำหรับการพิมพ์เนื้อหาที่สกัด 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. อินเทอร์เฟซ UNUPNACT จัดการทั้งข้อมูลเมตาและการสกัดข้อความในการโทรครั้งเดียวและส่งคืน tarball ของเมตาดาต้าและรายการข้อความที่ไม่ได้บรรจุภายในที่ไม่ได้บรรจุภายใน
#!/usr/bin/env python
import tika
from tika import unpack
parsed = unpack . from_file ( '/path/to/file' )อินเทอร์เฟซตรวจจับให้การจำแนกประเภท MIME IANA สำหรับไฟล์ที่ให้ไว้
#!/usr/bin/env python
import tika
from tika import detector
print ( detector . from_file ( '/path/to/file' ))อินเทอร์เฟซ config ช่วยให้คุณสามารถตรวจสอบการกำหนดค่าของเซิร์ฟเวอร์เซิร์ฟเวอร์ Tika รวมถึงตัวแยกวิเคราะห์ประเภท 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 (สตริง | 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 ใช้โดยการตั้งค่า classpath เป็นชุดของ ':' สตริงที่คั่นด้วย ตัวอย่างเช่นหากคุณต้องการให้ 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" ] คุณสามารถปรับแต่งคำขอ HTTP ขาออกไปยังเซิร์ฟเวอร์ TIKA โดยการตั้ง requestOptions บน .from_file และ .from_buffer วิธี (parser, unpack, ตรวจจับ, กำหนดค่า, ภาษา, แปล) มันควรจะเป็นพจนานุกรมอาร์กิวเมนต์ที่จะส่งผ่านไปยังวิธีการร้องขอ เอกสารวิธีการร้องขอระบุอาร์กิวเมนต์ที่ถูกต้อง สิ่งนี้จะแทนที่ค่าเริ่มต้นใด ๆ ยกเว้น 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 โดยไม่มีข้อโต้แย้งใด ๆ สิ่งนี้จะดาวน์โหลดสำเนาของ Jar 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)ส่งพวกเขาไปที่ Chris A. Mattmann
ขอบคุณโปรแกรม DARPA MEMEX สำหรับการระดมทุนส่วนใหญ่ของงานนี้ส่วนใหญ่
ใบอนุญาต Apache เวอร์ชัน 2