منفذ Python في مكتبة Apache Tika التي تجعل Tika متاحًا باستخدام Tika Rest Server.
هذا يجعل Apache Tika متاحًا كمكتبة Python ، قابلة للتثبيت عبر setuptools و PIP والتثبيت السهل.
لاستخدام هذه المكتبة ، تحتاج إلى تثبيت Java 7+ على نظامك حيث يبدأ Tika-Python خادم Tika Rest في الخلفية.
مستوحاة من Aptivate Tika.
pip install tikapython setup.py buildpython setup.py install للحصول على هذا العمل في بيئة غير متصلة ، قم بتنزيل ملف Tika Server (كل من tika python-tika server.jar و tika-server.jar.md5 ، والذي يمكن العثور عليه هنا) وتعيين متغير بيئة tika_server_jar إلى tika_server_jar = "ملف: It to /tmp/tika-server-standard.jar وتشغيلها كعملية خلفية.
هذه هي الطريقة الوحيدة لتشغيل python-tika دون الوصول إلى الإنترنت. بدون هذه المجموعة ، يكون الافتراضي هو التحقق من إصدار Tika وسحبه في كل مرة من Apache.
تتم قراءة هذه مرة واحدة ، عندما يتم تحميل Tika/Tika.py في البداية واستخدامها طوال ذلك.
TIKA_VERSION - قم بتعيين سلسلة الإصدار ، على سبيل المثال ، 1.12 أو افتراضي إلى إصدار TIKA الحالي.TIKA_SERVER_JAR - اضبط على عنوان URL الكامل على جرة خادم TIKA عن بُعد لتنزيل وذاكرة التخزين المؤقت.TIKA_SERVER_ENDPOINT - ضبط على المضيف (محلي أو عن بعد) لجرة خادم TIKA قيد التشغيل.TIKA_CLIENT_ONLY - إذا تم ضبطه على TRUE ، فسيتم تجاهل TIKA_SERVER_JAR ، ويعتمد على قيمة TIKA_SERVER_ENDPOINT ويتعامل مع tika مثل عميل REST.TIKA_TRANSLATOR - تم تعيينه على اسم الفصل المؤهل بالكامل (الافتراضيات إلى Lingo24) لتنفيذ مترجم Tika.TIKA_SERVER_CLASSPATH - قم بتعيين على سلسلة (محددة بواسطة ":" لكل مسار إضافي) لإعداد مسار جرة Tika Server.TIKA_LOG_PATH - تم تعيينه على دليل مع أذونات الكتابة وسيتم وضع ملفات tika.log و tika-server.log في هذا الدليل.TIKA_PATH - تم تعيينه على دليل مع أذونات الكتابة وسيتم وضع ملف tika_server.jar في هذا الدليل.TIKA_JAVA - اضبط اسم وقت تشغيل Java ، EG ، java أو java9TIKA_STARTUP_SLEEP - عدد الثواني ( float ) للانتظار لكل شيك إذا تم إطلاق خادم TIKA في وقت التشغيلTIKA_STARTUP_MAX_RETRY - عدد الشيكات ( int ) لمحاولة بدء تشغيل خادم TIKA إذا تم إطلاقه في وقت التشغيلTIKA_JAVA_ARGS - تعيين وسيطات وقت تشغيل Java ، EG ، -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 جنبًا إلى جنب مع المكالمة التي هي مفيدة للتنفيذ متعدد الخطوط أو عندما يتم ربط/ربط Tika.
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' )توفر واجهة اكتشاف تصنيف نوع 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' ))لاحظ أنه يمكنك أيضًا استخدام طريقة محلل و detector. from_buffer (String | BufferediObase) لمحلل السلسلة أو البايت في بيثون و/أو اكتشاف نوع 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 عن طريق تعيين 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 Server عن طريق تعيين requestOptions على أساليب .from_file و .from_buffer (محلل ، فك ، اكتشاف ، تكوين ، لغة ، ترجمة). يجب أن يكون قاموس الحجج الذي سيتم نقله إلى طريقة الطلب. تحدد وثائق طريقة الطلب وسيطات صالحة. سيؤدي ذلك إلى تجاوز أي افتراضات باستثناء 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