เครื่องมือนี้ให้การผูก 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อินสแตนซ์คลาสตรวจสอบว่า 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 );วิธีอื่น ๆ ที่เกี่ยวข้องกับ Tika:
$ 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 ();ตั้งชื่อ Fetcher:
$ 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 ();SET/GET OCR LANGUES
$ 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 และเปิดปัญหาหากจำเป็น
โดยค่าเริ่มต้นข้อความที่ส่งคืนจะถูกเข้ารหัสด้วย UTF-8 และ Client::setEncoding() อนุญาตให้ตั้งค่าการเข้ารหัสที่คาดหวัง
การทดสอบได้รับการออกแบบมาเพื่อ ครอบคลุมคุณสมบัติทั้งหมดสำหรับ Apache Tika ทุกรุ่นที่รองรับ ในโหมดแอพและโหมดเซิร์ฟเวอร์ มีตัวอย่างไม่กี่ตัวอย่างที่จะทดสอบ:
มีปัญหาบางอย่างที่พบในระหว่างการทดสอบไม่เกี่ยวข้องกับห้องสมุดนี้: