توفر هذه الأداة روابط Apache Tika لـ PHP ، مما يسمح باستخراج النص والبيانات الوصفية من المستندات والصور والتنسيقات الأخرى.
الأوضاع التالية مدعومة:
يوصى بوضع الخادم لأنه أسرع 5 مرات ، ولكن بعض المضيفين المشتركين لا يسمحون بعمليات التشغيل في الخلفية.
على الرغم من أن المكتبة تحتوي على قائمة بالإصدارات المدعومة ، إلا أن أي إصدار من Apache Tika يجب أن يكون متوافقًا طالما يتم الحفاظ على التوافق المتخلف من قبل فريق Tika. لذلك ، ليس من الضروري انتظار تحديث المكتبة للعمل مع الإصدارات الجديدة من الأداة.
ملاحظة : سيظل إصدار PHP المدعوم متزامنًا مع أحدث فريق مدعوم من قبل فريق PHP
التثبيت باستخدام الملحن:
composer require vaites/php-apache-tikaإذا كنت ترغب في استخدام OCR ، يجب عليك تثبيت Tesseract:
sudo yum install tesseract (استخدم DNF بدلاً من Yum على Fedora 22 أو أكثر)sudo apt-get install tesseract-ocrbrew install tesseract (باستخدام Homebrew)scoop install tesseract (باستخدام SCOOP) تفترض المكتبة أن tesseract Binary في المسار ، بحيث يمكنك تجميعها بنفسك أو تثبيتها باستخدام أي طريقة أخرى.
ابدأ خادم Apache Tika بحذر:
java -jar tika-server-x.xx.jarإذا كنت تستخدم JRE بدلاً من JDK ، فيجب عليك التشغيل إذا كان لديك Java 9 أو أكثر:
java --add-modules java.se.ee -jar tika-server-x.xx.jarقم بتثبيت الفصل ، والتحقق مما إذا كانت الجرة موجودة أو تعمل الخادم:
$ client = Vaites ApacheTika Client:: make ( ' localhost ' , 9998 ); // server mode (default)
$ client = Vaites ApacheTika Client:: make ( ' /path/to/tika-app.jar ' ); // app mode إذا كنت ترغب في استخدام حقن التبعية ، فقم بتسلسل الفصل أو تأخير الشيك:
$ client = Vaites ApacheTika Client:: prepare ( ' localhost ' , 9998 );
$ client = Vaites ApacheTika Client:: prepare ( ' /path/to/tika-app.jar ' ); يمكنك استخدام عنوان URL أيضًا:
$ client = Vaites ApacheTika Client:: make ( ' http://localhost:9998 ' );
$ client = Vaites ApacheTika Client:: prepare ( ' http://localhost:9998 ' );استخدم الفصل لاستخراج النص من المستندات:
$ language = $ client -> getLanguage ( ' /path/to/your/document ' );
$ metadata = $ client -> getMetadata ( ' /path/to/your/document ' );
$ html = $ client -> getHTML ( ' /path/to/your/document ' );
$ text = $ client -> getText ( ' /path/to/your/document ' );أو استخدم لاستخراج النص من الصور:
$ client = Vaites ApacheTika Client:: make ( $ host , $ port );
$ metadata = $ client -> getMetadata ( ' /path/to/your/image ' );
$ text = $ client -> getText ( ' /path/to/your/image ' ); يمكنك استخدام عنوان URL بدلاً من مسار الملف وستقوم المكتبة بتنزيل الملف وتمريره إلى Apache Tika. ليست هناك حاجة لإضافة -enableUnsecureFeatures -enableFileUrl إلى سطر الأوامر عند بدء تشغيل الخادم ، كما هو موضح هنا.
إذا كنت تستخدم Apache Tika> = 2.0.0 ، فيمكنك تحديد HTTPFetcher واستخدام الخيار -enableUnsecureFeatures -enableFileUrl عند بدء تشغيل الخادم لجعل الخادم تنزيل الملفات عن بُعد عند تمرير عنوان URL بدلاً من اسم ملف. من أجل القيام بذلك ، يجب عليك تعيين اسم httpfetcher باستخدام $client->setFetcherName('yourFetcherName') .
فيما يلي القائمة الكاملة للطرق المتاحة
الطرق المتعلقة ملف Tika:
$ client -> getMetadata ( $ file );
$ client -> getRecursiveMetadata ( $ file , ' text ' );
$ client -> getLanguage ( $ file );
$ client -> getMIME ( $ file );
$ client -> getHTML ( $ file );
$ client -> getXHTML ( $ file ); // only CLI mode
$ client -> getText ( $ file );
$ client -> getMainText ( $ file );طرق أخرى متعلقة بالتيكا:
$ client -> getSupportedMIMETypes ();
$ client -> getIsMIMETypeSupported ( ' application/pdf ' );
$ client -> getAvailableDetectors ();
$ client -> getAvailableParsers ();
$ client -> getVersion ();طرق الترميز:
$ client -> getEncoding ();
$ client -> setEncoding ( ' UTF-8 ' );الأساليب ذات الصلة بالإصدارات المدعومة:
$ client -> getSupportedVersions ();
$ client -> isVersionSupported ( $ version );تعيين/الحصول على رد اتصال لقراءة التسلسل للاستجابة:
$ client -> setCallback ( $ callback );
$ client -> getCallback ();قم بتعيين/الحصول على حجم الجزء لقراءة Secuential:
$ client -> setChunkSize ( $ size );
$ client -> getChunkSize ();تمكين/تعطيل تنزيل الملفات عن بُعد الداخلية:
$ client -> setDownloadRemote ( true );
$ client -> getDownloadRemote ();اضبط اسم Fotcher:
$ client -> setFetcherName ( $ fetcher ); // one of FileSystemFetcher, HttpFetcher, S3Fetcher, GCSFetcher, or SolrFetcher
$ client -> getFetcherName ();تعيين/الحصول على مسارات جرة/جافا (وضع CLI فقط):
$ client -> setPath ( $ path );
$ client -> getPath ();
$ client -> setJava ( $ java );
$ client -> getJava ();
$ client -> setJavaArgs ( ' -JXmx4g ' );
$ client -> getJavaArgs ();
$ client -> setEnvVars ([ ' LANG ' => ' es_ES.UTF-8 ' ]);
$ client -> getEnvVars ();تعيين/الحصول على خصائص المضيف
$ client -> setHost ( $ host );
$ client -> getHost ();
$ client -> setPort ( $ port );
$ client -> getPort ();
$ client -> setUrl ( $ url );
$ client -> getUrl ();
$ client -> setRetries ( $ retries );
$ client -> getRetries ();قم بتعيين/الحصول على خيارات عميل Curl
$ client -> setOptions ( $ options );
$ client -> getOptions ();
$ client -> setOption ( $ option , $ value );
$ client -> getOption ( $ option );تعيين/الحصول على مهلة:
$ client -> setTimeout ( $ seconds );
$ client -> getTimeout ();قم بتعيين/الحصول على رؤوس HTTP (انظر Tikaserver):
$ client -> setHeader ( ' Foo ' , ' bar ' );
$ client -> getHeader ( ' Foo ' );
$ client -> setHeaders ([ ' Foo ' => ' bar ' , ' Bar ' => ' baz ' ]);
$ client -> getHeaders ();تعيين/الحصول على لغات OCR (انظر Tikaoch):
$ client -> setOCRLanguage ( $ language );
$ client -> setOCRLanguages ( $ languages );
$ client -> getOCRLanguages ();اضبط اسم Fotcher HTTP (لـ Tika> = 2.0.0 فقط ، انظر https://cwiki.apache.org/confluence/display/tika/tika-pipes)
$ client -> setFetcherName ( $ fetcherName )منذ الإصدار 1.0 هناك بعض التغييرات كسر:
$client->getRecursiveMetadata() إرجاع صفيف كما هو متوقعClient::getSupportedVersions() و Client::isVersionSupported() لا يمكن استدعاء طرق ثابتةClient::getAvailableDetectors() و Client::getAvailableParsers() متطابقة ولها تعريف جديدانظر changelog.md لمزيد من التفاصيل.
هذه المكتبة ليست سوى وكيل ، لذا إذا حصلت على ردود empy أو النتائج غير المتوقعة ، فإن السبب الأكثر شيوعًا هو Tika نفسه. اختبار بسيط هو استخدام واجهة المستخدم الرسومية للتحقق من الاستجابة:
java -jar tika-app-x.xx.jarإذا كانت النتائج هي نفسها ، فيجب عليك إلقاء نظرة على جيرا Tika وفتح مشكلة إذا لزم الأمر.
بشكل افتراضي ، يتم ترميز النص الذي تم إرجاعه باستخدام UTF-8 ، وطريقة Client::setEncoding() تسمح بتعيين الترميز المتوقع.
تم تصميم الاختبارات لتغطية جميع الميزات لجميع الإصدارات المدعومة من Apache Tika في وضع التطبيق ووضع الخادم. هناك بعض العينات للاختبار ضد:
هناك بعض المشكلات الموجودة أثناء الاختبارات ، لا تتعلق بهذه المكتبة: