이 도구는 PHP에 대한 Apache Tika 바인딩을 제공하여 문서, 이미지 및 기타 형식에서 텍스트 및 메타 데이터를 추출 할 수 있습니다.
다음 모드가 지원됩니다.
서버 모드는 5 배 빠르기 때문에 권장되지만 일부 공유 호스트는 백그라운드에서 실행 프로세스를 허용하지 않습니다.
라이브러리에는 지원되는 버전 목록이 포함되어 있지만 Apache Tika의 모든 버전은 Tika 팀이 후진 호환성을 유지하는 한 호환됩니다. 따라서 도서관의 업데이트가 새로운 버전의 도구와 함께 작동하기를 기다릴 필요는 없습니다.
참고 : 지원되는 PHP 버전은 PHP 팀의 최신 지원과 동기화됩니다.
작곡가를 사용하여 설치 :
composer require vaites/php-apache-tikaOCR을 사용하려면 TesserAct를 설치해야합니다.
sudo yum install tesseract (Fedora 22 이상에서 yum 대신 DNF 사용)sudo apt-get install tesseract-ocrbrew install tesseract (홈브류 사용)scoop install tesseract (Scoop 사용) 라이브러리는 tesseract Binary가 경로에 있다고 가정하므로 직접 컴파일하거나 다른 방법을 사용하여 설치할 수 있습니다.
주의해서 Apache Tika 서버를 시작하십시오.
java -jar tika-server-x.xx.jarJDK 대신 JRE를 사용하는 경우 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를 정의하고 파일 이름 대신 URL을 전달할 때 서버가 원격 파일을 다운로드하기 위해 서버를 시작할 때 -enableUnsecureFeatures -enableFileUrl 옵션을 사용할 수 있습니다. 그렇게하려면 $client->setFetcherName('yourFetcherName') 사용하여 httpfetcher의 이름을 설정해야합니다.
사용 가능한 방법의 전체 목록은 다음과 같습니다
티카 파일 관련 방법 :
$ 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 ();Secuental Read의 청크 크기를 설정/가져옵니다.
$ client -> setChunkSize ( $ size );
$ client -> getChunkSize ();내부 원격 파일 다운로더 활성화/비활성화 :
$ client -> setDownloadRemote ( true );
$ client -> getDownloadRemote ();페치 이름을 설정하십시오.
$ client -> setFetcherName ( $ fetcher ); // one of FileSystemFetcher, HttpFetcher, S3Fetcher, GCSFetcher, or SolrFetcher
$ client -> getFetcherName ();Set/Get 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 ();클라이언트 옵션을 설정/받기
$ 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 언어 설정/받기 (Tikaocr 참조) :
$ client -> setOCRLanguage ( $ language );
$ client -> setOCRLanguages ( $ languages );
$ client -> getOCRLanguages ();http fetcher 이름을 설정하십시오 (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 자체입니다. 간단한 테스트는 GUI를 사용하여 응답을 확인하는 것입니다.
java -jar tika-app-x.xx.jar결과가 동일하면 Tika의 Jira를 살펴보고 필요한 경우 문제를 열어야합니다.
기본적으로 반환 된 텍스트는 UTF-8으로 인코딩되며 Client::setEncoding() 메소드를 사용하면 예상 인코딩을 설정할 수 있습니다.
테스트는 앱 모드 및 서버 모드에서 지원되는 모든 지원 버전의 Apache Tika에 대한 모든 기능을 다루도록 설계되었습니다. 테스트 할 몇 가지 샘플이 있습니다.
이 라이브러리와 관련이없는 테스트 중에 발견 된 몇 가지 문제가 있습니다.