Этот инструмент предоставляет привязки Apache Tika для PHP, что позволяет извлекать текст и метаданные из документов, изображений и других форматов.
Поддерживаются следующие режимы:
Режим сервера рекомендуется, потому что в 5 раз быстрее, но некоторые общие хосты не позволяют процессам запуска в фоновом режиме.
Хотя библиотека содержит список поддерживаемых версий, любая версия Apache Tika должна быть совместимой, пока команда Tika поддерживается обратной совместимостью. Поэтому нет необходимости ждать, пока обновление библиотеки будет работать с новыми версиями инструмента.
Примечание . Поддерживаемая версия PHP останется синхронизированной с последней поддержкой PHP Team
Установите с помощью композитора:
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 находится на пути, поэтому вы можете скомпилировать его самостоятельно или установить, используя любой другой метод.
Запустите сервер 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Создать экземпляр класса, проверить, существует ли 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') .
Вот полный список доступных методов
Методы, связанные с файлами тики:
$ 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 ();Установите/получите размер чанка для Secuence Read:
$ client -> setChunkSize ( $ size );
$ client -> getChunkSize ();Включите/отключите внутренний удаленный загрузчик файлов:
$ client -> setDownloadRemote ( true );
$ client -> getDownloadRemote ();Установите имя выбора:
$ client -> setFetcherName ( $ fetcher ); // one of FileSystemFetcher, HttpFetcher, S3Fetcher, GCSFetcher, or SolrFetcher
$ client -> getFetcherName ();Установить/получить пути Jar/Java (только режим 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 (см. Тикаокра):
$ client -> setOCRLanguage ( $ language );
$ client -> setOCRLanguages ( $ languages );
$ client -> getOCRLanguages ();Установите имя http fetcher (только для tika> = 2.0.0, см.
$ client -> setFetcherName ( $ fetcherName )С версией 1.0 есть некоторые нарушительные изменения:
$client->getRecursiveMetadata() возвращает массив, как и ожидалосьClient::getSupportedVersions() и Client::isVersionSupported() Методы нельзя назвать статическиClient::getAvailableDetectors() и Client::getAvailableParsers() идентичны и имеют новое определениеСмотрите ChangeLog.md для более подробной информации.
Эта библиотека является лишь прокси , поэтому, если вы получите ответы Empy или неожиданные результаты, наиболее распространенной причиной является сама Тика. Простой тест использует графический интерфейс для проверки ответа:
java -jar tika-app-x.xx.jarЕсли результаты одинаковы, вы должны взглянуть на Jira's Tika и при необходимости открыть проблему.
По умолчанию возвращенный текст кодируется с UTF-8, а метод Client::setEncoding() позволяет устанавливать ожидаемое кодирование.
Тесты предназначены для охвата всех функций для всех поддерживаемых версий Apache Tika в режиме приложения и режима сервера. Есть несколько образцов для проверки:
Есть некоторые проблемы, обнаруженные во время тестов, не связанных с этой библиотекой: