Esta ferramenta fornece ligações Apache Tika para PHP, permitindo extrair texto e metadados de documentos, imagens e outros formatos.
Os modos a seguir são suportados:
O modo de servidor é recomendado porque é 5 vezes mais rápido, mas alguns hosts compartilhados não permitem processos de execução em segundo plano.
Embora a biblioteca contenha uma lista de versões suportadas, qualquer versão do Apache Tika deve ser compatível enquanto a compatibilidade com versões anteriores for mantida pela equipe Tika. Portanto, não é necessário aguardar uma atualização da biblioteca trabalhar com as novas versões da ferramenta.
Nota : A versão PHP suportada permanecerá sincronizada com o mais recente suportado pela equipe PHP
Instale usando o compositor:
composer require vaites/php-apache-tikaSe você deseja usar OCR, você deve instalar o TESSERACT:
sudo yum install tesseract (use DNF em vez de Yum no Fedora 22 ou mais)sudo apt-get install tesseract-ocrbrew install tesseract (usando homebrew)scoop install tesseract (usando SCOOP) A biblioteca pressupõe que o Binário tesseract esteja no caminho, para que você possa compilá -lo ou instalar usando qualquer outro método.
Inicie o servidor Apache Tika com cautela:
java -jar tika-server-x.xx.jarSe você estiver usando JRE em vez de JDK, deve executar se tiver Java 9 ou maior:
java --add-modules java.se.ee -jar tika-server-x.xx.jarInstanciar a classe, verificando se o JAR existe ou o servidor estiver em execução:
$ client = Vaites ApacheTika Client:: make ( ' localhost ' , 9998 ); // server mode (default)
$ client = Vaites ApacheTika Client:: make ( ' /path/to/tika-app.jar ' ); // app mode Se você deseja usar a injeção de dependência, serialize a classe ou apenas adie a verificação:
$ client = Vaites ApacheTika Client:: prepare ( ' localhost ' , 9998 );
$ client = Vaites ApacheTika Client:: prepare ( ' /path/to/tika-app.jar ' ); Você também pode usar um URL:
$ client = Vaites ApacheTika Client:: make ( ' http://localhost:9998 ' );
$ client = Vaites ApacheTika Client:: prepare ( ' http://localhost:9998 ' );Use a classe para extrair texto de documentos:
$ 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 ' );Ou use para extrair texto de imagens:
$ client = Vaites ApacheTika Client:: make ( $ host , $ port );
$ metadata = $ client -> getMetadata ( ' /path/to/your/image ' );
$ text = $ client -> getText ( ' /path/to/your/image ' ); Você pode usar um URL em vez de um caminho de arquivo e a biblioteca baixará o arquivo e o passará para o Apache Tika. Não há necessidade de adicionar -enableUnsecureFeatures -enableFileUrl para comandar a linha ao iniciar o servidor, conforme descrito aqui.
Se você usar o Apache Tika> = 2.0.0, poderá definir um httpfetcher e usar a opção -enableUnsecureFeatures -enableFileUrl ao iniciar o servidor para fazer o servidor baixar arquivos remotos ao passar um URL em vez de um nome de arquivo. Para fazer isso, você deve definir o nome do httpFetcher usando $client->setFetcherName('yourFetcherName') .
Aqui estão a lista completa dos métodos disponíveis
Métodos relacionados ao arquivo 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 );Outros métodos relacionados a Tika:
$ client -> getSupportedMIMETypes ();
$ client -> getIsMIMETypeSupported ( ' application/pdf ' );
$ client -> getAvailableDetectors ();
$ client -> getAvailableParsers ();
$ client -> getVersion ();Métodos de codificação:
$ client -> getEncoding ();
$ client -> setEncoding ( ' UTF-8 ' );Versões suportadas Métodos relacionados:
$ client -> getSupportedVersions ();
$ client -> isVersionSupported ( $ version );Defina/obtenha um retorno de chamada para leitura seqüencial da resposta:
$ client -> setCallback ( $ callback );
$ client -> getCallback ();Defina/obtenha o tamanho do pedaço para leitura secuencial:
$ client -> setChunkSize ( $ size );
$ client -> getChunkSize ();Ativar/desativar o download interno de arquivo remoto:
$ client -> setDownloadRemote ( true );
$ client -> getDownloadRemote ();Defina o nome do buscador:
$ client -> setFetcherName ( $ fetcher ); // one of FileSystemFetcher, HttpFetcher, S3Fetcher, GCSFetcher, or SolrFetcher
$ client -> getFetcherName ();Defina/obtenha caminhos JAR/Java (apenas o modo 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 ();Defina/obtenha propriedades do host
$ client -> setHost ( $ host );
$ client -> getHost ();
$ client -> setPort ( $ port );
$ client -> getPort ();
$ client -> setUrl ( $ url );
$ client -> getUrl ();
$ client -> setRetries ( $ retries );
$ client -> getRetries ();Definir/obter opções de cliente Curl
$ client -> setOptions ( $ options );
$ client -> getOptions ();
$ client -> setOption ( $ option , $ value );
$ client -> getOption ( $ option );Defina/obtenha tempo limite:
$ client -> setTimeout ( $ seconds );
$ client -> getTimeout ();Defina/obtenha cabeçalhos HTTP (consulte Tikaserver):
$ client -> setHeader ( ' Foo ' , ' bar ' );
$ client -> getHeader ( ' Foo ' );
$ client -> setHeaders ([ ' Foo ' => ' bar ' , ' Bar ' => ' baz ' ]);
$ client -> getHeaders ();Definir/obter idiomas OCR (consulte Tikaocr):
$ client -> setOCRLanguage ( $ language );
$ client -> setOCRLanguages ( $ languages );
$ client -> getOCRLanguages ();Defina o nome HTTP Fetcher (apenas para tika> = 2.0.0, consulte https://cwiki.apache.org/confluence/display/tika/tika-pipes)
$ client -> setFetcherName ( $ fetcherName )Como a versão 1.0, há algumas mudanças de ruptura:
$client->getRecursiveMetadata() retorna uma matriz conforme esperadoClient::getSupportedVersions() e Client::isVersionSupported() Métodos não podem ser chamados estaticamenteClient::getAvailableDetectors() e Client::getAvailableParsers() são idênticos e têm uma nova definiçãoConsulte Changelog.md para mais detalhes.
Essa biblioteca é apenas um proxy , portanto, se você obtiver respostas empigadas ou resultados inesperados, a causa mais comum é a própria tika. Um teste simples está usando a GUI para verificar a resposta:
java -jar tika-app-x.xx.jarSe os resultados forem iguais, você deverá dar uma olhada no Jira de Tika e abrir um problema, se necessário.
Por padrão, o texto retornado é codificado com o método UTF-8 e o método Client::setEncoding() permite definir a codificação esperada.
Os testes são projetados para cobrir todos os recursos para todas as versões suportadas do Apache Tika no modo APP e no modo de servidor. Existem algumas amostras para testar contra:
Existem alguns problemas encontrados durante os testes, não relacionados a esta biblioteca: