Esta herramienta proporciona enlaces de Apache Tika para PHP, lo que permite extraer texto y metadatos de documentos, imágenes y otros formatos.
Se admiten los siguientes modos:
Se recomienda el modo del servidor porque es 5 veces más rápido, pero algunos hosts compartidos no permiten procesos de ejecución en segundo plano.
Aunque la biblioteca contiene una lista de versiones compatibles, cualquier versión de Apache Tika debe ser compatible siempre que el equipo de Tika mantenga la compatibilidad hacia atrás. Por lo tanto, no es necesario esperar a que una actualización de la biblioteca funcione con las nuevas versiones de la herramienta.
Nota : La versión PHP compatible permanecerá sincronizada con lo último compatible con PHP Team
Instalar usando el compositor:
composer require vaites/php-apache-tikaSi desea usar OCR, debe instalar Tesseract:
sudo yum install tesseract (use DNF en lugar de yum en Fedora 22 o mayor)sudo apt-get install tesseract-ocrbrew install tesseract (usando Homebrew)scoop install tesseract (usando SCOOP) La biblioteca asume que tesseract Binary está en la ruta, por lo que puede compilarlo usted mismo o instalar utilizando cualquier otro método.
Inicie el servidor Apache Tika con precaución:
java -jar tika-server-x.xx.jarSi está utilizando JRE en lugar de JDK, debe ejecutar si tiene Java 9 o más:
java --add-modules java.se.ee -jar tika-server-x.xx.jarInstanciar la clase, verificando si JAR existe o se está ejecutando:
$ client = Vaites ApacheTika Client:: make ( ' localhost ' , 9998 ); // server mode (default)
$ client = Vaites ApacheTika Client:: make ( ' /path/to/tika-app.jar ' ); // app mode Si desea utilizar la inyección de dependencia, sea serializar la clase o simplemente retrasar el cheque:
$ client = Vaites ApacheTika Client:: prepare ( ' localhost ' , 9998 );
$ client = Vaites ApacheTika Client:: prepare ( ' /path/to/tika-app.jar ' ); También puedes usar una URL:
$ client = Vaites ApacheTika Client:: make ( ' http://localhost:9998 ' );
$ client = Vaites ApacheTika Client:: prepare ( ' http://localhost:9998 ' );Use la clase para extraer texto de los 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 ' );O usar para extraer texto de las imágenes:
$ client = Vaites ApacheTika Client:: make ( $ host , $ port );
$ metadata = $ client -> getMetadata ( ' /path/to/your/image ' );
$ text = $ client -> getText ( ' /path/to/your/image ' ); Puede usar una URL en lugar de una ruta de archivo y la biblioteca descargará el archivo y lo pasará a Apache Tika. No hay necesidad de agregar -enableUnsecureFeatures -enableFileUrl a la línea de comandos al iniciar el servidor, como se describe aquí.
Si usa Apache Tika> = 2.0.0, puede definir un httpfetcher y usar la opción -enableUnsecureFeatures -enableFileUrl al iniciar el servidor para que el servidor descargue archivos remotos al pasar una url en lugar de un nombre de archivo. Para hacerlo, debe establecer el nombre del httpfetcher usando $client->setFetcherName('yourFetcherName') .
Aquí está la lista completa de métodos disponibles.
Métodos relacionados con el archivo 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 );Otros métodos relacionados con Tika:
$ client -> getSupportedMIMETypes ();
$ client -> getIsMIMETypeSupported ( ' application/pdf ' );
$ client -> getAvailableDetectors ();
$ client -> getAvailableParsers ();
$ client -> getVersion ();Métodos de codificación:
$ client -> getEncoding ();
$ client -> setEncoding ( ' UTF-8 ' );Métodos relacionados con versiones compatibles:
$ client -> getSupportedVersions ();
$ client -> isVersionSupported ( $ version );Establecer/obtener una devolución de llamada para la lectura secuencial de la respuesta:
$ client -> setCallback ( $ callback );
$ client -> getCallback ();Establezca/obtenga el tamaño del fragmento para la lectura segura:
$ client -> setChunkSize ( $ size );
$ client -> getChunkSize ();Habilitar/deshabilitar el descargador de archivos remoto interno:
$ client -> setDownloadRemote ( true );
$ client -> getDownloadRemote ();Establezca el nombre de la búsqueda:
$ client -> setFetcherName ( $ fetcher ); // one of FileSystemFetcher, HttpFetcher, S3Fetcher, GCSFetcher, or SolrFetcher
$ client -> getFetcherName ();Set/get jar/java rutas (solo 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 ();Establecer/obtener propiedades de host
$ client -> setHost ( $ host );
$ client -> getHost ();
$ client -> setPort ( $ port );
$ client -> getPort ();
$ client -> setUrl ( $ url );
$ client -> getUrl ();
$ client -> setRetries ( $ retries );
$ client -> getRetries ();Establecer/obtener opciones de cliente CURL
$ client -> setOptions ( $ options );
$ client -> getOptions ();
$ client -> setOption ( $ option , $ value );
$ client -> getOption ( $ option );Establecer/obtener tiempo de espera:
$ client -> setTimeout ( $ seconds );
$ client -> getTimeout ();Establecer/obtener encabezados HTTP (ver Tikaserver):
$ client -> setHeader ( ' Foo ' , ' bar ' );
$ client -> getHeader ( ' Foo ' );
$ client -> setHeaders ([ ' Foo ' => ' bar ' , ' Bar ' => ' baz ' ]);
$ client -> getHeaders ();Establecer/obtener idiomas OCR (ver tikaocr):
$ client -> setOCRLanguage ( $ language );
$ client -> setOCRLanguages ( $ languages );
$ client -> getOCRLanguages ();Establezca el nombre http fetcher (para tika> = 2.0.0 solo, ver https://cwiki.apache.org/confluence/display/tika/tika-pipes)
$ client -> setFetcherName ( $ fetcherName )Desde la versión 1.0, hay algunos cambios de ruptura:
$client->getRecursiveMetadata() devuelve una matriz como se esperabaClient::getSupportedVersions() y Client::isVersionSupported() Los métodos no se pueden llamar estáticamenteClient::getAvailableDetectors() y Client::getAvailableParsers() son idénticos y tienen una nueva definiciónConsulte ChangeLog.md para más detalles.
Esta biblioteca es solo un proxy , por lo que si obtiene respuestas empy o resultados inesperados, la causa más común es el propio Tika. Una prueba simple es usar la GUI para verificar la respuesta:
java -jar tika-app-x.xx.jarSi los resultados son los mismos, debe echar un vistazo a Jira de Tika y abrir un problema si es necesario.
Por defecto, el texto devuelto está codificado con UTF-8, y el método Client::setEncoding() permite establecer la codificación esperada.
Las pruebas están diseñadas para cubrir todas las características para todas las versiones compatibles de Apache Tika en modo de aplicación y en modo de servidor. Hay algunas muestras para probar contra:
Se encuentran algunos problemas durante las pruebas, no relacionados con esta biblioteca: