TIKA - คู่มือฉบับย่อ

Apache Tika คืออะไร?

  • Apache Tika เป็นไลบรารีที่ใช้สำหรับการตรวจจับชนิดเอกสารและการแยกเนื้อหาจากไฟล์รูปแบบต่างๆ

  • ภายใน Tika ใช้ตัวแยกวิเคราะห์เอกสารต่างๆที่มีอยู่และเทคนิคการตรวจจับประเภทเอกสารเพื่อตรวจจับและดึงข้อมูล

  • การใช้ Tika เราสามารถพัฒนาตัวตรวจจับประเภทสากลและตัวแยกเนื้อหาเพื่อแยกข้อความที่มีโครงสร้างและข้อมูลเมตาจากเอกสารประเภทต่างๆเช่นสเปรดชีตเอกสารข้อความรูปภาพ PDF และแม้แต่รูปแบบอินพุตมัลติมีเดียได้ในระดับหนึ่ง

  • Tika มี API ทั่วไปเดียวสำหรับการแยกวิเคราะห์ไฟล์รูปแบบต่างๆ ใช้ไลบรารีตัวแยกวิเคราะห์เฉพาะที่มีอยู่สำหรับเอกสารแต่ละประเภท

  • ไลบรารีตัวแยกวิเคราะห์ทั้งหมดเหล่านี้ถูกห่อหุ้มภายใต้อินเทอร์เฟซเดียวที่เรียกว่า Parser interface.

ทำไม Tika?

ตาม filext.com มีเนื้อหาประมาณ 15k ถึง 51k ประเภทและจำนวนนี้เพิ่มขึ้นทุกวัน ข้อมูลจะถูกจัดเก็บในรูปแบบต่างๆเช่นเอกสารข้อความสเปรดชีต excel ไฟล์ PDF รูปภาพและไฟล์มัลติมีเดียเพื่อตั้งชื่อไม่กี่ ดังนั้นแอปพลิเคชันเช่นเครื่องมือค้นหาและระบบจัดการเนื้อหาจึงจำเป็นต้องมีการสนับสนุนเพิ่มเติมเพื่อให้ดึงข้อมูลออกจากประเภทเอกสารเหล่านี้ได้ง่าย Apache Tika ทำหน้าที่นี้โดยจัดเตรียม API ทั่วไปเพื่อค้นหาและดึงข้อมูลจากไฟล์หลายรูปแบบ

แอพพลิเคชั่น Apache Tika

มีแอพพลิเคชั่นมากมายที่ใช้ประโยชน์จาก Apache Tika ในที่นี้เราจะพูดถึงแอพพลิเคชั่นที่โดดเด่นบางตัวซึ่งขึ้นอยู่กับ Apache Tika เป็นหลัก

เครื่องมือค้นหา

Tika ใช้กันอย่างแพร่หลายในขณะที่พัฒนาเครื่องมือค้นหาเพื่อจัดทำดัชนีเนื้อหาข้อความของเอกสารดิจิทัล

  • เครื่องมือค้นหาคือระบบประมวลผลข้อมูลที่ออกแบบมาเพื่อค้นหาข้อมูลและเอกสารที่จัดทำดัชนีจากเว็บ

  • Crawler เป็นองค์ประกอบสำคัญของเครื่องมือค้นหาที่รวบรวมข้อมูลผ่านเว็บเพื่อดึงเอกสารที่จะจัดทำดัชนีโดยใช้เทคนิคการจัดทำดัชนี หลังจากนั้นโปรแกรมรวบรวมข้อมูลจะถ่ายโอนเอกสารที่จัดทำดัชนีเหล่านี้ไปยังส่วนประกอบการแยก

  • หน้าที่ขององค์ประกอบการแยกคือการแยกข้อความและข้อมูลเมตาจากเอกสาร เนื้อหาและข้อมูลเมตาที่แยกออกมาดังกล่าวมีประโยชน์มากสำหรับเครื่องมือค้นหา ส่วนประกอบการสกัดนี้มี Tika

  • จากนั้นเนื้อหาที่แยกแล้วจะถูกส่งไปยังตัวสร้างดัชนีของเครื่องมือค้นหาที่ใช้เพื่อสร้างดัชนีการค้นหา นอกเหนือจากนี้เครื่องมือค้นหายังใช้เนื้อหาที่แยกออกมาในรูปแบบอื่น ๆ อีกมากมายเช่นกัน

การวิเคราะห์เอกสาร

  • ในด้านปัญญาประดิษฐ์มีเครื่องมือบางอย่างในการวิเคราะห์เอกสารโดยอัตโนมัติในระดับความหมายและดึงข้อมูลทุกประเภทจากเอกสารเหล่านี้

  • ในแอปพลิเคชันดังกล่าวเอกสารจะถูกจัดประเภทตามเงื่อนไขที่โดดเด่นในเนื้อหาที่แยกออกมาของเอกสาร

  • เครื่องมือเหล่านี้ใช้ประโยชน์จาก Tika ในการแยกเนื้อหาเพื่อวิเคราะห์เอกสารที่แตกต่างกันไปตั้งแต่ข้อความธรรมดาไปจนถึงเอกสารดิจิทัล

การจัดการสินทรัพย์ดิจิทัล

  • องค์กรบางแห่งจัดการสินทรัพย์ดิจิทัลของตนเช่นภาพถ่าย ebooks ภาพวาดเพลงและวิดีโอโดยใช้แอปพลิเคชันพิเศษที่เรียกว่าการจัดการสินทรัพย์ดิจิทัล (DAM)

  • แอปพลิเคชันดังกล่าวใช้ความช่วยเหลือของตัวตรวจจับประเภทเอกสารและตัวแยกข้อมูลเมตาเพื่อจัดประเภทเอกสารต่างๆ

การวิเคราะห์เนื้อหา

  • เว็บไซต์เช่น Amazon แนะนำเนื้อหาที่ออกใหม่ของเว็บไซต์ให้กับผู้ใช้แต่ละคนตามความสนใจ โดยทำตามเว็บไซต์เหล่านี้machine learning techniquesหรือใช้ความช่วยเหลือของเว็บไซต์โซเชียลมีเดียเช่น Facebook เพื่อดึงข้อมูลที่จำเป็นเช่นไลค์และความสนใจของผู้ใช้ ข้อมูลที่รวบรวมนี้จะอยู่ในรูปแบบของแท็ก html หรือรูปแบบอื่น ๆ ที่ต้องการการตรวจจับและการแยกประเภทเนื้อหาเพิ่มเติม

  • สำหรับการวิเคราะห์เนื้อหาของเอกสารเรามีเทคโนโลยีที่ใช้เทคนิคการเรียนรู้ของเครื่องเช่น UIMA และ Mahout. เทคโนโลยีเหล่านี้มีประโยชน์ในการจัดกลุ่มและวิเคราะห์ข้อมูลในเอกสาร

  • Apache Mahoutเป็นเฟรมเวิร์กที่ให้อัลกอริทึม ML บน Apache Hadoop ซึ่งเป็นแพลตฟอร์มคลาวด์คอมพิวติ้ง Mahout จัดเตรียมสถาปัตยกรรมโดยทำตามเทคนิคการทำคลัสเตอร์และการกรองบางอย่าง ด้วยการปฏิบัติตามสถาปัตยกรรมนี้โปรแกรมเมอร์สามารถเขียนอัลกอริทึม ML ของตนเองเพื่อสร้างคำแนะนำโดยใช้การผสมผสานข้อความและข้อมูลเมตาต่างๆ ในการจัดหาอินพุตให้กับอัลกอริทึมเหล่านี้ Mahout เวอร์ชันล่าสุดใช้ Tika เพื่อแยกข้อความและข้อมูลเมตาจากเนื้อหาไบนารี

  • Apache UIMAวิเคราะห์และประมวลผลภาษาโปรแกรมต่างๆและสร้างคำอธิบายประกอบ UIMA ภายในจะใช้ Tika Annotator เพื่อแยกข้อความเอกสารและข้อมูลเมตา

ประวัติศาสตร์

ปี การพัฒนา
พ.ศ. 2549 ความคิดของ Tika ถูกฉายต่อหน้าคณะกรรมการบริหารโครงการของ Lucene
พ.ศ. 2549 มีการพูดถึงแนวคิดของ Tika และประโยชน์ในโครงการ Jackrabbit
พ.ศ. 2550 ทิก้าเข้าไปในตู้อบอาปาเช่
พ.ศ. 2551 เปิดตัวเวอร์ชัน 0.1 และ 0.2 และ Tika จบการศึกษาจากศูนย์บ่มเพาะไปยังโครงการย่อย Lucene
2552 เวอร์ชัน 0.3, 0.4 และ 0.5 ได้รับการเผยแพร่แล้ว
พ.ศ. 2553 เวอร์ชัน 0.6 และ 0.7 ได้รับการเผยแพร่และ Tika ได้เข้าสู่โครงการ Apache ระดับบนสุด
2554 Tika 1.0 วางจำหน่ายและหนังสือเรื่อง Tika "Tika in Action" ก็ออกในปีเดียวกัน

สถาปัตยกรรมระดับแอปพลิเคชันของ Tika

โปรแกรมเมอร์แอปพลิเคชันสามารถรวม Tika ในแอปพลิเคชันของตนได้อย่างง่ายดาย Tika มี Command Line Interface และ GUI เพื่อให้ใช้งานง่าย

ในบทนี้เราจะพูดถึงโมดูลสำคัญสี่โมดูลที่ประกอบกันเป็นสถาปัตยกรรม Tika ภาพประกอบต่อไปนี้แสดงสถาปัตยกรรมของ Tika พร้อมกับโมดูลสี่โมดูล -

  • กลไกการตรวจจับภาษา
  • กลไกการตรวจจับ MIME
  • อินเทอร์เฟซ Parser
  • ชั้น Tika Facade

กลไกการตรวจจับภาษา

เมื่อใดก็ตามที่ส่งเอกสารข้อความไปยัง Tika เอกสารนั้นจะตรวจพบภาษาที่ใช้เขียน ยอมรับเอกสารที่ไม่มีคำอธิบายประกอบภาษาและเพิ่มข้อมูลนั้นในข้อมูลเมตาของเอกสารโดยการตรวจจับภาษา

เพื่อรองรับการระบุภาษา Tika มีคลาสที่เรียกว่า Language Identifier ในแพ็คเกจ org.apache.tika.languageและที่เก็บการระบุภาษาภายในซึ่งมีอัลกอริทึมสำหรับการตรวจหาภาษาจากข้อความที่กำหนด Tika ใช้อัลกอริทึม N-gram ภายในสำหรับการตรวจจับภาษา

กลไกการตรวจจับ MIME

Tika สามารถตรวจจับประเภทเอกสารตามมาตรฐาน MIME เริ่มต้นการตรวจสอบประเภท MIME ใน Tika จะกระทำโดยใช้org.apache.tika.mime.mimeTypes มันใช้อินเทอร์เฟซorg.apache.tika.detect.Detectorสำหรับการตรวจจับชนิดเนื้อหาส่วนใหญ่

Tika ภายในใช้เทคนิคต่างๆเช่นไฟล์ globs คำแนะนำประเภทเนื้อหาไบต์เวทย์มนตร์การเข้ารหัสอักขระและเทคนิคอื่น ๆ อีกมากมาย

พาร์เซอร์อินเทอร์เฟซ

อินเทอร์เฟซตัวแยกวิเคราะห์ของ org.apache.tika.parser เป็นอินเทอร์เฟซหลักสำหรับการแยกวิเคราะห์เอกสารใน Tika อินเทอร์เฟซนี้แยกข้อความและข้อมูลเมตาจากเอกสารและสรุปสำหรับผู้ใช้ภายนอกที่ยินดีที่จะเขียนปลั๊กอินตัวแยกวิเคราะห์

การใช้คลาสตัวแยกวิเคราะห์คอนกรีตที่แตกต่างกันโดยเฉพาะสำหรับเอกสารแต่ละประเภท Tika รองรับรูปแบบเอกสารจำนวนมาก คลาสเฉพาะของรูปแบบเหล่านี้ให้การสนับสนุนสำหรับรูปแบบเอกสารที่แตกต่างกันไม่ว่าจะโดยการใช้ตรรกะตัวแยกวิเคราะห์โดยตรงหรือโดยใช้ไลบรารีตัวแยกวิเคราะห์ภายนอก

ชั้น Tika Facade

การใช้คลาส Tika facade เป็นวิธีที่ง่ายและตรงที่สุดในการเรียก Tika จาก Java และเป็นไปตามรูปแบบการออกแบบซุ้ม คุณสามารถค้นหาคลาส Tika facade ได้ในแพ็คเกจ org.apache.tika ของ Tika API

โดยการนำกรณีการใช้งานพื้นฐาน Tika ทำหน้าที่เป็นนายหน้าของภูมิทัศน์ โดยสรุปความซับซ้อนพื้นฐานของไลบรารี Tika เช่นกลไกการตรวจจับ MIME อินเตอร์เฟสตัวแยกวิเคราะห์และกลไกการตรวจจับภาษาและให้อินเทอร์เฟซที่เรียบง่ายแก่ผู้ใช้

คุณสมบัติของ Tika

  • Unified parser Interface- Tika รวมไลบรารีตัวแยกวิเคราะห์ของบุคคลที่สามทั้งหมดไว้ในอินเทอร์เฟซตัวแยกวิเคราะห์เดียว เนื่องจากคุณลักษณะนี้ผู้ใช้จะหลีกหนีจากภาระในการเลือกไลบรารีตัวแยกวิเคราะห์ที่เหมาะสมและใช้งานตามประเภทไฟล์ที่พบ

  • Low memory usage- Tika ใช้ทรัพยากรหน่วยความจำน้อยลงดังนั้นจึงสามารถฝังกับแอปพลิเคชัน Java ได้อย่างง่ายดาย นอกจากนี้เรายังสามารถใช้ Tika ภายในแอปพลิเคชันที่ทำงานบนแพลตฟอร์มที่มีทรัพยากรน้อยเช่น PDA มือถือ

  • Fast processing - สามารถตรวจจับและดึงเนื้อหาอย่างรวดเร็วจากแอปพลิเคชันได้

  • Flexible metadata - Tika เข้าใจโมเดลข้อมูลเมตาทั้งหมดที่ใช้อธิบายไฟล์

  • Parser integration - Tika สามารถใช้ไลบรารีตัวแยกวิเคราะห์ต่างๆที่มีให้สำหรับเอกสารแต่ละประเภทในแอปพลิเคชันเดียว

  • MIME type detection - Tika สามารถตรวจจับและแยกเนื้อหาจากสื่อทุกประเภทที่รวมอยู่ในมาตรฐาน MIME

  • Language detection - Tika มีคุณสมบัติการระบุภาษาดังนั้นจึงสามารถใช้ในเอกสารตามประเภทภาษาในเว็บไซต์หลายภาษา

ฟังก์ชั่นของ Tika

Tika รองรับฟังก์ชันที่หลากหลาย -

  • การตรวจหาประเภทเอกสาร
  • การแยกเนื้อหา
  • การแยกข้อมูลเมตา
  • การตรวจจับภาษา

การตรวจจับประเภทเอกสาร

Tika ใช้เทคนิคการตรวจจับต่างๆและตรวจจับประเภทของเอกสารที่กำหนดให้

การแยกเนื้อหา

Tika มีไลบรารีตัวแยกวิเคราะห์ที่สามารถแยกวิเคราะห์เนื้อหาของรูปแบบเอกสารต่างๆและแยกออกได้ หลังจากตรวจพบชนิดของเอกสารแล้วจะเลือกตัวแยกวิเคราะห์ที่เหมาะสมจากที่เก็บตัวแยกวิเคราะห์และส่งผ่านเอกสาร ชั้นเรียนต่างๆของ Tika มีวิธีการแยกวิเคราะห์รูปแบบเอกสารที่แตกต่างกัน

การแยกข้อมูลเมตา

นอกจากเนื้อหาแล้ว Tika จะแยกข้อมูลเมตาของเอกสารด้วยขั้นตอนเดียวกับในการแยกเนื้อหา สำหรับเอกสารบางประเภท Tika มีคลาสสำหรับดึงข้อมูลเมตา

การตรวจจับภาษา

ภายใน Tika ทำตามอัลกอริทึมเช่น n-gramเพื่อตรวจหาภาษาของเนื้อหาในเอกสารที่กำหนด Tika ขึ้นอยู่กับคลาสเช่นLanguageidentifier และ Profiler สำหรับการระบุภาษา

บทนี้จะนำคุณเข้าสู่กระบวนการตั้งค่า Apache Tika บน Windows และ Linux จำเป็นต้องมีการดูแลผู้ใช้ในขณะติดตั้ง Apache Tika

ความต้องการของระบบ

JDK Java SE 2 JDK 1.6 หรือสูงกว่า
หน่วยความจำ RAM 1 GB (แนะนำ)
พื้นที่ดิสก์ ไม่มีข้อกำหนดขั้นต่ำ
เวอร์ชันระบบปฏิบัติการ Windows XP ขึ้นไปลินุกซ์

ขั้นตอนที่ 1: ตรวจสอบการติดตั้ง Java

ในการตรวจสอบการติดตั้ง Java ให้เปิดคอนโซลและดำเนินการดังต่อไปนี้ java คำสั่ง

ระบบปฏิบัติการ งาน คำสั่ง
Windows เปิดคอนโซลคำสั่ง \> java - รุ่น
ลินุกซ์ เปิดเทอร์มินัลคำสั่ง $ java -version

หาก Java ได้รับการติดตั้งอย่างถูกต้องบนระบบของคุณคุณควรได้รับหนึ่งในผลลัพธ์ต่อไปนี้ขึ้นอยู่กับแพลตฟอร์มที่คุณกำลังทำงานอยู่

ระบบปฏิบัติการ เอาต์พุต
Windows

เวอร์ชัน Java "1.7.0_60"

Java (TM) SE Run Time Environment (บิวด์ 1.7.0_60-b19)

Java Hotspot (TM) 64-bit Server VM (build 24.60-b09, mixed mode)

ลูนิกซ์

เวอร์ชัน java "1.7.0_25"

เปิด JDK Runtime Environment (rhel-2.3.10.4.el6_4-x86_64)

เปิด JDK 64-Bit Server VM (สร้าง 23.7-b01 โหมดผสม)

  • เราถือว่าผู้อ่านของบทช่วยสอนนี้ติดตั้ง Java 1.7.0_60 ในระบบของพวกเขาก่อนที่จะดำเนินการต่อสำหรับบทช่วยสอนนี้

  • ในกรณีที่คุณไม่มี Java SDK ให้ดาวน์โหลดเวอร์ชันปัจจุบันจากไฟล์ https://www.oracle.com/technetwork/java/javase/downloads/index.html and have it installed.

ขั้นตอนที่ 2: การตั้งค่าสภาพแวดล้อม Java

ตั้งค่าตัวแปรสภาวะแวดล้อม JAVA_HOME ให้ชี้ไปยังตำแหน่งไดเร็กทอรีฐานที่ติดตั้ง Java บนเครื่องของคุณ ตัวอย่างเช่น,

ระบบปฏิบัติการ เอาต์พุต
Windows ตั้งค่าตัวแปรสภาพแวดล้อม JAVA_HOME เป็น C: \ ProgramFiles \ java \ jdk1.7.0_60
ลินุกซ์ ส่งออก JAVA_HOME = / usr / local / java-current

ผนวกพา ธ แบบเต็มของตำแหน่งคอมไพเลอร์ Java เข้ากับ System Path

ระบบปฏิบัติการ เอาต์พุต
Windows ต่อท้ายสตริง; C: \ Program Files \ Java \ jdk1.7.0_60 \ bin ต่อท้ายตัวแปรระบบ PATH
ลินุกซ์ ส่งออก PATH = $ PATH: $ JAVA_HOME / bin /

ตรวจสอบคำสั่ง java-version จาก command prompt ตามที่อธิบายไว้ข้างต้น

ขั้นตอนที่ 3: การตั้งค่าสภาพแวดล้อม Apache Tika

โปรแกรมเมอร์สามารถรวม Apache Tika ในสภาพแวดล้อมได้โดยใช้ไฟล์

  • บรรทัดคำสั่ง,
  • Tika API
  • อินเทอร์เฟซบรรทัดคำสั่ง (CLI) ของ Tika
  • อินเทอร์เฟซผู้ใช้แบบกราฟิก (GUI) ของ Tika หรือ
  • ซอร์สโค้ด

สำหรับวิธีการเหล่านี้ก่อนอื่นคุณต้องดาวน์โหลดซอร์สโค้ดของ Tika

คุณจะพบซอร์สโค้ดของ Tika ได้ที่ https://Tika.apache.org/download.html, ซึ่งคุณจะพบสองลิงค์ -

  • apache-tika-1.6-src.zip - มีซอร์สโค้ดของ Tika และ

  • Tika -app-1.6.jar - เป็นไฟล์ jar ที่มีแอปพลิเคชัน Tika

ดาวน์โหลดสองไฟล์นี้ ภาพรวมของเว็บไซต์อย่างเป็นทางการของ Tika แสดงอยู่ด้านล่าง

หลังจากดาวน์โหลดไฟล์แล้วให้ตั้งค่า classpath สำหรับไฟล์ jar tika-app-1.6.jar. เพิ่มพา ธ ที่สมบูรณ์ของไฟล์ jar ดังแสดงในตารางด้านล่าง

ระบบปฏิบัติการ เอาต์พุต
Windows ต่อท้ายสตริง“ C: \ jars \ Tika-app-1.6.jar” กับตัวแปรสภาพแวดล้อมผู้ใช้ CLASSPATH
ลินุกซ์

ส่งออก CLASSPATH = $ CLASSPATH -

/usr/share/jars/Tika-app-1.6.tar -

Apache มีแอปพลิเคชัน Tika ซึ่งเป็นแอปพลิเคชัน Graphical User Interface (GUI) โดยใช้ Eclipse

Tika-Maven สร้างโดยใช้ Eclipse

  • เปิด eclipse และสร้างโครงการใหม่

  • หากคุณไม่มี Maven ใน Eclipse ของคุณให้ตั้งค่าโดยทำตามขั้นตอนที่กำหนด

    • เปิดการเชื่อมโยง https://wiki.eclipse.org/M2E_updatesite_and_gittags คุณจะพบปลั๊กอิน m2e ที่เผยแพร่ในรูปแบบตาราง

  • เลือกเวอร์ชันล่าสุดและบันทึกเส้นทางของ url ในคอลัมน์ p2 url

  • ตอนนี้ทบทวนคราสในแถบเมนูคลิก Helpและเลือก Install New Software จากเมนูแบบเลื่อนลง

  • คลิก Addพิมพ์ชื่อที่ต้องการเนื่องจากเป็นทางเลือก ตอนนี้วาง URL ที่บันทึกไว้ในไฟล์Location ฟิลด์

  • ปลั๊กอินใหม่จะถูกเพิ่มพร้อมชื่อที่คุณเลือกในขั้นตอนก่อนหน้าทำเครื่องหมายที่ช่องข้างหน้าแล้วคลิก Next.

  • ดำเนินการติดตั้ง เมื่อเสร็จสิ้นให้รีสตาร์ท Eclipse

  • ตอนนี้คลิกขวาที่โครงการและในไฟล์ configure ตัวเลือกเลือก convert to maven project.

  • ตัวช่วยใหม่สำหรับการสร้างปอมใหม่ปรากฏขึ้น ป้อนรหัสกลุ่มเป็น org.apache.tika ป้อน Tika เวอร์ชันล่าสุดเลือกไฟล์packaging เป็นขวดแล้วคลิก Finish.

ติดตั้งโครงการ Maven เรียบร้อยแล้วและโครงการของคุณถูกแปลงเป็น Maven ตอนนี้คุณต้องกำหนดค่าไฟล์ pom.xml

กำหนดค่าไฟล์ XML

รับการพึ่งพา Tika maven จากhttps://mvnrepository.com/artifact/org.apache.tika

ด้านล่างนี้คือการพึ่งพา Maven ที่สมบูรณ์ของ Apache Tika

<dependency>
   <groupId>org.apache.Tika</groupId>
   <artifactId>Tika-core</artifactId>
   <version>1.6</version>

   <groupId>org.apache.Tika</groupId>
   <artifactId> Tika-parsers</artifactId>
   <version> 1.6</version>

   <groupId> org.apache.Tika</groupId>
   <artifactId>Tika</artifactId>
   <version>1.6</version>

   <groupId>org.apache.Tika</groupId>
   < artifactId>Tika-serialization</artifactId>
   < version>1.6< /version>

   < groupId>org.apache.Tika< /groupId>
   < artifactId>Tika-app< /artifactId>
   < version>1.6< /version>

   <groupId>org.apache.Tika</groupId>
   <artifactId>Tika-bundle</artifactId>
   <version>1.6</version>
</dependency>

ผู้ใช้สามารถฝัง Tika ในแอปพลิเคชันของตนโดยใช้คลาส Tika facade มีวิธีการสำรวจฟังก์ชันทั้งหมดของ Tika เนื่องจากเป็นชั้นด้านหน้าอาคาร Tika จึงแยกแยะความซับซ้อนเบื้องหลังการทำงาน นอกจากนี้ผู้ใช้ยังสามารถใช้คลาสต่างๆของ Tika ในแอปพลิเคชันของตนได้อีกด้วย

Tika Class (ซุ้ม)

นี่คือชั้นที่โดดเด่นที่สุดของห้องสมุด Tika และเป็นไปตามรูปแบบการออกแบบซุ้ม ดังนั้นจึงสรุปการใช้งานภายในทั้งหมดและมีวิธีการง่ายๆในการเข้าถึงฟังก์ชัน Tika ตารางต่อไปนี้แสดงรายการตัวสร้างของคลาสนี้พร้อมกับคำอธิบาย

package - org.apache.tika

class - ทิก้า

ซีเนียร์ ตัวสร้างและคำอธิบาย
1

Tika ()

ใช้การกำหนดค่าเริ่มต้นและสร้างคลาส Tika

2

Tika (Detector detector)

สร้างส่วนหน้าของ Tika โดยยอมรับอินสแตนซ์ตัวตรวจจับเป็นพารามิเตอร์

3

Tika (Detector detector, Parser parser)

สร้างส่วนหน้าของ Tika โดยยอมรับอินสแตนซ์ตัวตรวจจับและตัวแยกวิเคราะห์เป็นพารามิเตอร์

4

Tika (Detector detector, Parser parser, Translator translator)

สร้างส่วนหน้าของ Tika โดยยอมรับตัวตรวจจับตัวแยกวิเคราะห์และอินสแตนซ์ตัวแปลเป็นพารามิเตอร์

5

Tika (TikaConfig config)

สร้างส่วนหน้าของ Tika โดยการยอมรับวัตถุของคลาส TikaConfig เป็นพารามิเตอร์

วิธีการและคำอธิบาย

ต่อไปนี้เป็นวิธีการที่สำคัญของชั้นซุ้ม Tika -

ซีเนียร์ วิธีการและคำอธิบาย
1

แยกวิเคราะห์ToString (File ไฟล์)

วิธีนี้และตัวแปรทั้งหมดจะแยกวิเคราะห์ไฟล์ที่ส่งผ่านเป็นพารามิเตอร์และส่งคืนเนื้อหาข้อความที่แยกออกมาในรูปแบบ String โดยค่าเริ่มต้นความยาวของพารามิเตอร์สตริงนี้ถูก จำกัด

2

int getMaxStringLength ()

ส่งคืนความยาวสูงสุดของสตริงที่ส่งคืนโดยเมธอด parseToString

3

เป็นโมฆะ setMaxStringLength (int maxStringLength)

ตั้งค่าความยาวสูงสุดของสตริงที่ส่งคืนโดยเมธอด parseToString

4

ผู้อ่าน parse (File ไฟล์)

เมธอดนี้และตัวแปรทั้งหมดจะแยกวิเคราะห์ไฟล์ที่ส่งผ่านเป็นพารามิเตอร์และส่งคืนเนื้อหาข้อความที่แยกออกมาในรูปแบบของอ็อบเจ็กต์ java.io.reader

5

สตริง detect (InputStream กระแส, Metadata ข้อมูลเมตา)

วิธีนี้และตัวแปรทั้งหมดยอมรับออบเจ็กต์ InputStream และออบเจ็กต์ Metadata เป็นพารามิเตอร์ตรวจจับชนิดของเอกสารที่กำหนดและส่งคืนชื่อชนิดเอกสารเป็นวัตถุสตริง วิธีนี้เป็นนามธรรมของกลไกการตรวจจับที่ Tika ใช้

6

สตริง translate (InputStream ข้อความ, String ภาษาเป้าหมาย)

วิธีนี้และตัวแปรทั้งหมดยอมรับออบเจ็กต์ InputStream และสตริงที่แสดงถึงภาษาที่เราต้องการให้แปลข้อความของเราและแปลข้อความที่กำหนดให้เป็นภาษาที่ต้องการโดยพยายามตรวจหาภาษาต้นทางโดยอัตโนมัติ

พาร์เซอร์อินเทอร์เฟซ

นี่คืออินเทอร์เฟซที่ใช้งานโดยคลาส parser ทั้งหมดของแพ็คเกจ Tika

package - org.apache.tika.parser

Interface - โปรแกรมแยกวิเคราะห์

วิธีการและคำอธิบาย

ต่อไปนี้เป็นวิธีการที่สำคัญของอินเทอร์เฟซ Tika Parser -

ซีเนียร์ วิธีการและคำอธิบาย
1

parse (InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context)

วิธีนี้จะแยกวิเคราะห์เอกสารที่กำหนดเป็นลำดับเหตุการณ์ XHTML และ SAX หลังจากแยกวิเคราะห์แล้วจะวางเนื้อหาเอกสารที่แยกไว้ในออบเจ็กต์ของคลาส ContentHandler และข้อมูลเมตาในออบเจ็กต์ของคลาส Metadata

คลาสข้อมูลเมตา

คลาสนี้ใช้อินเทอร์เฟซที่หลากหลายเช่น CreativeCommons, Geographic, HttpHeaders, Message, MSOffice, ClimateForcast, TIFF, TikaMetadataKeys, TikaMimeKeys, Serializable เพื่อรองรับโมเดลข้อมูลต่างๆ ตารางต่อไปนี้แสดงรายการตัวสร้างและวิธีการของคลาสนี้พร้อมกับคำอธิบาย

package - org.apache.tika.metadata

class - ข้อมูลเมตา

ซีเนียร์ ตัวสร้างและคำอธิบาย
1

Metadata()

สร้างข้อมูลเมตาใหม่ที่ว่างเปล่า

ซีเนียร์ วิธีการและคำอธิบาย
1

add (Property property, String value)

เพิ่มการแม็พคุณสมบัติ / ค่าข้อมูลเมตาให้กับเอกสารที่กำหนด การใช้ฟังก์ชันนี้เราสามารถกำหนดค่าเป็นคุณสมบัติ

2

add (String name, String value)

เพิ่มการแม็พคุณสมบัติ / ค่าข้อมูลเมตาให้กับเอกสารที่กำหนด ด้วยวิธีนี้เราสามารถตั้งค่าชื่อใหม่ให้กับข้อมูลเมตาที่มีอยู่ของเอกสาร

3

String get (Property property)

ส่งคืนค่า (ถ้ามี) ของคุณสมบัติข้อมูลเมตาที่กำหนด

4

String get (String name)

ส่งคืนค่า (ถ้ามี) ของชื่อข้อมูลเมตาที่กำหนด

5

Date getDate (Property property)

ส่งกลับค่าคุณสมบัติ Date metadata

6

String[] getValues (Property property)

ส่งคืนค่าทั้งหมดของคุณสมบัติข้อมูลเมตา

7

String[] getValues (String name)

ส่งคืนค่าทั้งหมดของชื่อข้อมูลเมตาที่กำหนด

8

String[] names()

ส่งคืนชื่อทั้งหมดขององค์ประกอบข้อมูลเมตาในออบเจ็กต์ข้อมูลเมตา

9

set (Property property, Date date)

ตั้งค่าวันที่ของคุณสมบัติข้อมูลเมตาที่กำหนด

10

set(Property property, String[] values)

ตั้งค่าหลายค่าให้กับคุณสมบัติข้อมูลเมตา

คลาสตัวระบุภาษา

คลาสนี้ระบุภาษาของเนื้อหาที่กำหนด ตารางต่อไปนี้แสดงรายการตัวสร้างของคลาสนี้พร้อมกับคำอธิบาย

package - org.apache.tika.language

class - ตัวระบุภาษา

ซีเนียร์ ตัวสร้างและคำอธิบาย
1

LanguageIdentifier (LanguageProfile profile)

สร้างตัวระบุภาษาทันที ที่นี่คุณต้องส่งผ่านวัตถุ LanguageProfile เป็นพารามิเตอร์

2

LanguageIdentifier (String content)

ตัวสร้างนี้สามารถสร้างอินสแตนซ์ตัวระบุภาษาได้โดยส่งผ่านสตริงจากเนื้อหาข้อความ

ซีเนียร์ วิธีการและคำอธิบาย
1

String getLanguage ()

ส่งคืนภาษาที่กำหนดให้กับอ็อบเจ็กต์ LanguageIdentifier ปัจจุบัน

รูปแบบไฟล์รองรับโดย Tika

ตารางต่อไปนี้แสดงรูปแบบไฟล์ที่ Tika รองรับ

รูปแบบไฟล์ ไลบรารีแพ็คเกจ ชั้นเรียนใน Tika
XML org.apache.tika.parser.xml XMLParser
HTML org.apache.tika.parser.html และใช้ Tagsoup Library HtmlParser
เอกสารประกอบ MS-Office Ole2 จนถึง 2007 ooxml 2007 เป็นต้นไป

org.apache.tika.parser.microsoft

org.apache.tika.parser.microsoft.ooxml และใช้ไลบรารี Apache Poi

OfficeParser (ole2)

OOXMLParser (ooxml)

รูปแบบ OpenDocument openoffice org.apache.tika.parser.odf OpenOfficeParser
รูปแบบเอกสารพกพา (PDF) org.apache.tika.parser.pdf และแพ็คเกจนี้ใช้ไลบรารี Apache PdfBox PDFParser
รูปแบบสิ่งพิมพ์อิเล็กทรอนิกส์ (หนังสือดิจิทัล) org.apache.tika.parser.epub EpubParser
รูปแบบ Rich Text org.apache.tika.parser.rtf RTFParser
รูปแบบการบีบอัดและบรรจุภัณฑ์ org.apache.tika.parser.pkg และแพ็กเกจนี้ใช้ไลบรารีบีบอัดทั่วไป PackageParser และ CompressorParser และคลาสย่อย
รูปแบบข้อความ org.apache.tika.parser.txt TXTarser
รูปแบบฟีดและการเผยแพร่ org.apache.tika.parser.feed FeedParser
รูปแบบเสียง org.apache.tika.parser.audio และ org.apache.tika.parser.mp3 AudioParser MidiParser Mp3- สำหรับ mp3parser
Imageparsers org.apache.tika.parser.jpeg JpegParser - สำหรับรูปภาพ jpeg
รูปแบบวิดีโอ org.apache.tika.parser.mp4 และ org.apache.tika.parser.video ตัวแยกวิเคราะห์นี้ภายในใช้ Simple Algorithm เพื่อแยกวิเคราะห์รูปแบบวิดีโอแฟลช Mp4parser FlvParser
ไฟล์คลาส java และไฟล์ jar org.apache.tika.parser.asm ClassParser CompressorParser
Mobxformat (ข้อความอีเมล) org.apache.tika.parser.mbox MobXParser
รูปแบบ CAD org.apache.tika.parser.dwg DWGParser
FontFormats org.apache.tika.parser.font TrueTypeParser
โปรแกรมปฏิบัติการและไลบรารี org.apache.tika.parser.executable ExecutableParser

มาตรฐาน MIME

มาตรฐาน Multipurpose Internet Mail Extensions (MIME) เป็นมาตรฐานที่ดีที่สุดสำหรับการระบุประเภทเอกสาร ความรู้เกี่ยวกับมาตรฐานเหล่านี้ช่วยให้เบราว์เซอร์ในระหว่างการโต้ตอบภายใน

เมื่อใดก็ตามที่เบราว์เซอร์พบไฟล์มีเดียเบราว์เซอร์จะเลือกซอฟต์แวร์ที่เข้ากันได้ที่มีให้เพื่อแสดงเนื้อหา ในกรณีที่ไม่มีแอปพลิเคชั่นที่เหมาะสมในการเรียกใช้ไฟล์มีเดียโดยเฉพาะขอแนะนำให้ผู้ใช้รับซอฟต์แวร์ปลั๊กอินที่เหมาะสม

ประเภทการตรวจจับใน Tika

Tika รองรับเอกสารสื่ออินเทอร์เน็ตทุกประเภทที่มีให้ใน MIME เมื่อใดก็ตามที่ไฟล์ถูกส่งผ่าน Tika จะตรวจพบไฟล์และประเภทเอกสาร ในการตรวจจับประเภทสื่อ Tika จะใช้กลไกต่อไปนี้ภายใน

นามสกุลไฟล์

การตรวจสอบนามสกุลไฟล์เป็นวิธีที่ง่ายที่สุดและใช้กันอย่างแพร่หลายในการตรวจหารูปแบบของไฟล์ แอปพลิเคชันและระบบปฏิบัติการจำนวนมากให้การสนับสนุนส่วนขยายเหล่านี้ ด้านล่างนี้คือนามสกุลของไฟล์ประเภทที่รู้จักกันไม่กี่ประเภท

ชื่อไฟล์ Extention
ภาพ .jpg
เสียง .mp3
ไฟล์เก็บถาวร java .jar
ไฟล์คลาส java .class

คำแนะนำประเภทเนื้อหา

เมื่อใดก็ตามที่คุณดึงไฟล์จากฐานข้อมูลหรือแนบไปกับเอกสารอื่นคุณอาจสูญเสียชื่อหรือนามสกุลของไฟล์ ในกรณีเช่นนี้ข้อมูลเมตาที่ให้มาพร้อมกับไฟล์จะถูกใช้เพื่อตรวจหานามสกุลไฟล์

ไบต์มหัศจรรย์

เมื่อสังเกตไบต์ดิบของไฟล์คุณจะพบรูปแบบอักขระที่ไม่ซ้ำกันสำหรับแต่ละไฟล์ ไฟล์บางไฟล์มีคำนำหน้าไบต์พิเศษที่เรียกว่าmagic bytes ที่จัดทำขึ้นเป็นพิเศษและรวมอยู่ในไฟล์เพื่อวัตถุประสงค์ในการระบุประเภทไฟล์

ตัวอย่างเช่นคุณสามารถค้นหา CA FE BA BE (รูปแบบเลขฐานสิบหก) ในไฟล์ java และ% PDF (รูปแบบ ASCII) ในไฟล์ pdf Tika ใช้ข้อมูลนี้เพื่อระบุประเภทสื่อของไฟล์

การเข้ารหัสอักขระ

ไฟล์ที่มีข้อความธรรมดาถูกเข้ารหัสโดยใช้การเข้ารหัสอักขระประเภทต่างๆ ความท้าทายหลักคือการระบุประเภทของการเข้ารหัสอักขระที่ใช้ในไฟล์ Tika ทำตามเทคนิคการเข้ารหัสอักขระเช่นBom markers และ Byte Frequencies เพื่อระบุระบบการเข้ารหัสที่ใช้โดยเนื้อหาข้อความธรรมดา

อักขระรูท XML

ในการตรวจหาเอกสาร XML Tika จะแยกวิเคราะห์เอกสาร xml และแยกข้อมูลเช่นองค์ประกอบรูทเนมสเปซและสกีมาที่อ้างอิงจากตำแหน่งที่สามารถพบชนิดสื่อที่แท้จริงของไฟล์ได้

การตรวจจับประเภทโดยใช้ Facade Class

detect()วิธีการของคลาสซุ้มใช้ในการตรวจจับประเภทเอกสาร วิธีนี้ยอมรับไฟล์เป็นอินพุต ด้านล่างนี้เป็นโปรแกรมตัวอย่างสำหรับการตรวจจับประเภทเอกสารด้วยคลาส Tika facade

import java.io.File;

import org.apache.tika.Tika;

public class Typedetection {

   public static void main(String[] args) throws Exception {

      //assume example.mp3 is in your current directory
      File file = new File("example.mp3");//
      
      //Instantiating tika facade class 
      Tika tika = new Tika();
      
      //detecting the file type using detect method
      String filetype = tika.detect(file);
      System.out.println(filetype);
   }
}

บันทึกรหัสด้านบนเป็น TypeDetection.java และเรียกใช้จากพรอมต์คำสั่งโดยใช้คำสั่งต่อไปนี้ -

javac TypeDetection.java
java TypeDetection 

audio/mpeg

Tika ใช้ไลบรารีตัวแยกวิเคราะห์ต่างๆเพื่อแยกเนื้อหาจากตัวแยกวิเคราะห์ที่กำหนด เลือกตัวแยกวิเคราะห์ที่เหมาะสมสำหรับการแยกประเภทเอกสารที่กำหนด

สำหรับการแยกวิเคราะห์เอกสารมักใช้เมธอด parseToString () ของคลาส Tika facade ด้านล่างนี้เป็นขั้นตอนที่เกี่ยวข้องในกระบวนการแยกวิเคราะห์และสิ่งเหล่านี้ถูกสรุปโดยวิธี Tika ParsertoString ()

การแยกกระบวนการแยกวิเคราะห์ -

  • เริ่มแรกเมื่อเราส่งเอกสารไปยัง Tika จะใช้กลไกการตรวจจับประเภทที่เหมาะสมที่มีอยู่และตรวจจับประเภทเอกสาร

  • เมื่อทราบชนิดเอกสารแล้วจะเลือกตัวแยกวิเคราะห์ที่เหมาะสมจากที่เก็บตัวแยกวิเคราะห์ ที่เก็บตัวแยกวิเคราะห์มีคลาสที่ใช้ไลบรารีภายนอก

  • จากนั้นเอกสารจะถูกส่งไปเพื่อเลือกตัวแยกวิเคราะห์ซึ่งจะแยกวิเคราะห์เนื้อหาแยกข้อความและโยนข้อยกเว้นสำหรับรูปแบบที่อ่านไม่ได้

การแยกเนื้อหาโดยใช้ Tika

ด้านล่างนี้เป็นโปรแกรมสำหรับการแยกข้อความจากไฟล์โดยใช้คลาส Tika facade -

import java.io.File;
import java.io.IOException;

import org.apache.tika.Tika;
import org.apache.tika.exception.TikaException;

import org.xml.sax.SAXException;

public class TikaExtraction {
	
   public static void main(final String[] args) throws IOException, TikaException {

      //Assume sample.txt is in your current directory		        
      File file = new File("sample.txt");
      
      //Instantiating Tika facade class
      Tika tika = new Tika();
      String filecontent = tika.parseToString(file);
      System.out.println("Extracted Content: " + filecontent);
   }		 
}

บันทึกรหัสด้านบนเป็น TikaExtraction.java และเรียกใช้จากพรอมต์คำสั่ง -

javac TikaExtraction.java 
java TikaExtraction

ด้านล่างนี้เป็นเนื้อหาของ sample.txt

Hi students welcome to tutorialspoint

ให้ผลลัพธ์ดังต่อไปนี้ -

Extracted Content: Hi students welcome to tutorialspoint

การแยกเนื้อหาโดยใช้ Parser Interface

แพ็กเกจตัวแยกวิเคราะห์ของ Tika มีอินเทอร์เฟซและคลาสต่างๆที่เราสามารถแยกวิเคราะห์เอกสารข้อความได้ ให้ด้านล่างคือแผนภาพบล็อกของไฟล์org.apache.tika.parser แพ็คเกจ

มีคลาส parser หลายแบบเช่น pdf parser, Mp3Passer, OfficeParser ฯลฯ เพื่อแยกวิเคราะห์เอกสารตามลำดับ คลาสเหล่านี้ทั้งหมดใช้อินเทอร์เฟซ parser

CompositeParser

แผนภาพที่ระบุแสดงคลาส parser วัตถุประสงค์ทั่วไปของ Tika: CompositeParser และ AutoDetectParser. เนื่องจากคลาส CompositeParser เป็นไปตามรูปแบบการออกแบบคอมโพสิตคุณจึงสามารถใช้กลุ่มของอินสแตนซ์ตัวแยกวิเคราะห์เป็นตัวแยกวิเคราะห์เดียว คลาส CompositeParser ยังอนุญาตให้เข้าถึงคลาสทั้งหมดที่ใช้อินเตอร์เฟสตัวแยกวิเคราะห์

AutoDetectParser

นี่คือคลาสย่อยของ CompositeParser และมีการตรวจจับประเภทอัตโนมัติ การใช้ฟังก์ชันนี้ AutoDetectParser จะส่งเอกสารขาเข้าโดยอัตโนมัติไปยังคลาส parser ที่เหมาะสมโดยใช้วิธีการแบบผสม

แยกวิเคราะห์ () วิธีการ

นอกจาก parseToString () แล้วคุณยังสามารถใช้เมธอด parse () ของ parser Interface ได้อีกด้วย ต้นแบบของวิธีนี้แสดงไว้ด้านล่าง

parse(InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context)

ตารางต่อไปนี้แสดงรายการอ็อบเจ็กต์สี่รายการที่ยอมรับเป็นพารามิเตอร์

ซีเนียร์ วัตถุและคำอธิบาย
1

InputStream stream

ออบเจ็กต์ Inputstream ใด ๆ ที่มีเนื้อหาของไฟล์

2

ContentHandler handler

Tika ส่งเอกสารเป็นเนื้อหา XHTML ไปยังเครื่องจัดการนี้หลังจากนั้นเอกสารจะถูกประมวลผลโดยใช้ SAX API ช่วยให้การประมวลผลเนื้อหาในเอกสารหลังการประมวลผลมีประสิทธิภาพ

3

Metadata metadata

ออบเจ็กต์ข้อมูลเมตาถูกใช้เป็นทั้งต้นทางและเป้าหมายของข้อมูลเมตาของเอกสาร

4

ParseContext context

อ็อบเจ็กต์นี้ใช้ในกรณีที่ไคลเอนต์แอ็พพลิเคชันต้องการปรับแต่งกระบวนการแยกวิเคราะห์

ตัวอย่าง

ให้ด้านล่างเป็นตัวอย่างที่แสดงวิธีการใช้ parse () วิธีการ

Step 1 -

ในการใช้เมธอด parse () ของอินเตอร์เฟส parser ให้สร้างอินสแตนซ์ของคลาสใด ๆ ที่ให้การใช้งานสำหรับอินเทอร์เฟซนี้

มีคลาสตัวแยกวิเคราะห์แต่ละคลาสเช่น PDFParser, OfficeParser, XMLParser เป็นต้นคุณสามารถใช้ตัวแยกวิเคราะห์เอกสารใด ๆ เหล่านี้ได้ หรือคุณสามารถใช้ CompositeParser หรือ AutoDetectParser ที่ใช้คลาส parser ทั้งหมดภายในและแยกเนื้อหาของเอกสารโดยใช้ parser ที่เหมาะสม

Parser parser = new AutoDetectParser();
   (or)
Parser parser = new CompositeParser();  
   (or)        
object of any individual parsers given in Tika Library

Step 2 -

สร้างอ็อบเจ็กต์คลาสตัวจัดการ ด้านล่างนี้คือตัวจัดการเนื้อหาสามตัว -

ซีเนียร์ ชั้นเรียนและคำอธิบาย
1

BodyContentHandler

คลาสนี้เลือกส่วนเนื้อหาของเอาต์พุต XHTML และเขียนเนื้อหานั้นไปยังตัวเขียนเอาต์พุตหรือเอาต์พุตสตรีม จากนั้นจะเปลี่ยนเส้นทางเนื้อหา XHTML ไปยังอินสแตนซ์ตัวจัดการเนื้อหาอื่น

2

LinkContentHandler

คลาสนี้จะตรวจจับและเลือกแท็ก H-Ref ทั้งหมดของเอกสาร XHTML และส่งต่อสำหรับการใช้เครื่องมือเช่นโปรแกรมรวบรวมข้อมูลเว็บ

3

TeeContentHandler

คลาสนี้ช่วยในการใช้เครื่องมือหลายอย่างพร้อมกัน

เนื่องจากเป้าหมายของเราคือการแยกเนื้อหาข้อความจากเอกสารให้สร้างอินสแตนซ์ BodyContentHandler ดังที่แสดงด้านล่าง -

BodyContentHandler handler = new BodyContentHandler( );

Step 3 -

สร้างวัตถุ Metadata ดังที่แสดงด้านล่าง -

Metadata metadata = new Metadata();

Step 4 -

สร้างอ็อบเจ็กต์สตรีมอินพุตใด ๆ และส่งไฟล์ของคุณที่ควรแตกออกไป

FileInputstream

สร้างอินสแตนซ์อ็อบเจ็กต์ไฟล์โดยส่งพา ธ ไฟล์เป็นพารามิเตอร์และส่งอ็อบเจ็กต์นี้ไปยังคอนสตรัคเตอร์คลาส FileInputStream

Note - เส้นทางที่ส่งผ่านไปยังออบเจ็กต์ไฟล์ไม่ควรมีช่องว่าง

ปัญหาของคลาสสตรีมอินพุตเหล่านี้คือไม่รองรับการอ่านแบบเข้าถึงโดยสุ่มซึ่งจำเป็นในการประมวลผลไฟล์บางรูปแบบอย่างมีประสิทธิภาพ เพื่อแก้ไขปัญหานี้ Tika ให้ TikaInputStream

File  file = new File(filepath)
FileInputStream inputstream = new FileInputStream(file);
   (or)
InputStream stream = TikaInputStream.get(new File(filename));

Step 5 -

สร้างวัตถุบริบทแยกวิเคราะห์ดังที่แสดงด้านล่าง -

ParseContext context =new ParseContext();

Step 6 -

สร้างอินสแตนซ์อ็อบเจ็กต์ parser เรียกใช้เมธอด parse และส่งผ่านอ็อบเจ็กต์ทั้งหมดที่ต้องการดังแสดงในต้นแบบด้านล่าง -

parser.parse(inputstream, handler, metadata, context);

ด้านล่างนี้เป็นโปรแกรมสำหรับการแยกเนื้อหาโดยใช้อินเทอร์เฟซตัวแยกวิเคราะห์ -

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class ParserExtraction {
	
   public static void main(final String[] args) throws IOException,SAXException, TikaException {

      //Assume sample.txt is in your current directory
      File file = new File("sample.txt");
      
      //parse method parameters
      Parser parser = new AutoDetectParser();
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(file);
      ParseContext context = new ParseContext();
      
      //parsing the file
      parser.parse(inputstream, handler, metadata, context);
      System.out.println("File content : " + Handler.toString());
   }
}

บันทึกรหัสด้านบนเป็น ParserExtraction.java และเรียกใช้จากพรอมต์คำสั่ง -

javac  ParserExtraction.java 
java  ParserExtraction

ด้านล่างนี้เป็นเนื้อหาของ sample.txt

Hi students welcome to tutorialspoint

หากคุณรันโปรแกรมข้างต้นโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้ -

File content : Hi students welcome to tutorialspoint

นอกจากเนื้อหาแล้ว Tika ยังแยกข้อมูลเมตาจากไฟล์ ข้อมูลเมตาคืออะไรนอกจากข้อมูลเพิ่มเติมที่มาพร้อมกับไฟล์ หากเราพิจารณาไฟล์เสียงชื่อศิลปินชื่ออัลบั้มชื่อจะอยู่ภายใต้ข้อมูลเมตา

มาตรฐาน XMP

Extensible Metadata Platform (XMP) เป็นมาตรฐานสำหรับการประมวลผลและจัดเก็บข้อมูลที่เกี่ยวข้องกับเนื้อหาของไฟล์ มันถูกสร้างขึ้นโดยAdobe Systems Inc XMP ให้มาตรฐานสำหรับการกำหนด, การสร้างและการประมวลผลของเมตาดาต้า คุณสามารถฝังมาตรฐานนี้ลงในไฟล์ได้หลายรูปแบบเช่นPDF , JPEG , JPEG , GIF , jpg , HTMLเป็นต้น

ชั้นทรัพย์สิน

Tika ใช้คลาส Property เพื่อทำตามนิยามคุณสมบัติ XMP จัดเตรียมPropertyTypeและValueType enums เพื่อบันทึกชื่อและค่าของข้อมูลเมตา

คลาสข้อมูลเมตา

คลาสนี้ใช้อินเทอร์เฟซต่างๆเช่นClimateForcast , CativeCommons, Geographic , TIFF เป็นต้นเพื่อให้การสนับสนุนโมเดลข้อมูลเมตาต่างๆ นอกจากนี้คลาสนี้ยังมีวิธีการต่างๆในการแยกเนื้อหาออกจากไฟล์

ชื่อข้อมูลเมตา

เราสามารถแยกรายชื่อของชื่อข้อมูลเมตาของไฟล์จากวัตถุข้อมูลเมตาของมันโดยใช้วิธีการชื่อ () ส่งคืนชื่อทั้งหมดเป็นสตริงอาร์เรย์ ใช้ชื่อของข้อมูลเมตาเราสามารถรับค่าโดยใช้get()วิธี. ใช้ชื่อข้อมูลเมตาและส่งคืนค่าที่เกี่ยวข้อง

String[] metadaNames = metadata.names();

String value = metadata.get(name);

การแยกข้อมูลเมตาโดยใช้วิธีแยกวิเคราะห์

เมื่อใดก็ตามที่เราแยกวิเคราะห์ไฟล์โดยใช้ parse () เราจะส่งออบเจ็กต์ข้อมูลเมตาที่ว่างเปล่าเป็นหนึ่งในพารามิเตอร์ วิธีนี้จะแยกข้อมูลเมตาของไฟล์ที่กำหนด (หากไฟล์นั้นมี) และวางไว้ในออบเจ็กต์ข้อมูลเมตา ดังนั้นหลังจากแยกวิเคราะห์ไฟล์โดยใช้ parse () เราสามารถแยกข้อมูลเมตาจากวัตถุนั้นได้

Parser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();   //empty metadata object 
FileInputStream inputstream = new FileInputStream(file);
ParseContext context = new ParseContext();
parser.parse(inputstream, handler, metadata, context);

// now this metadata object contains the extracted metadata of the given file.
metadata.metadata.names();

ด้านล่างนี้เป็นโปรแกรมที่สมบูรณ์ในการแยกข้อมูลเมตาจากไฟล์ข้อความ

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class GetMetadata {
	
   public static void main(final String[] args) throws IOException, TikaException {
	
      //Assume that boy.jpg is in your current directory
      File file = new File("boy.jpg");

      //Parser method parameters
      Parser parser = new AutoDetectParser();
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(file);
      ParseContext context = new ParseContext();
      
      parser.parse(inputstream, handler, metadata, context);
      System.out.println(handler.toString());

      //getting the list of all meta data elements 
      String[] metadataNames = metadata.names();

      for(String name : metadataNames) {		        
         System.out.println(name + ": " + metadata.get(name));
      }
   }
}

บันทึกรหัสด้านบนเป็น GetMetadata.java และเรียกใช้จากพรอมต์คำสั่งโดยใช้คำสั่งต่อไปนี้ -

javac  GetMetadata .java
java  GetMetadata

ด้านล่างเป็นภาพรวมของ boy.jpg

หากคุณรันโปรแกรมข้างต้นโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้ -

X-Parsed-By: org.apache.tika.parser.DefaultParser
Resolution Units: inch
Compression Type: Baseline
Data Precision: 8 bits
Number of Components: 3
tiff:ImageLength: 3000
Component 2: Cb component: Quantization table 1, Sampling factors 1 horiz/1 vert
Component 1: Y component: Quantization table 0, Sampling factors 2 horiz/2 vert
Image Height: 3000 pixels
X Resolution: 300 dots
Original Transmission Reference:
   53616c7465645f5f2368da84ca932841b336ac1a49edb1a93fae938b8db2cb3ec9cc4dc28d7383f1
Image Width: 4000 pixels
IPTC-NAA record: 92 bytes binary data
Component 3: Cr component: Quantization table 1, Sampling factors 1 horiz/1 vert
tiff:BitsPerSample: 8
Application Record Version: 4
tiff:ImageWidth: 4000
Content-Type: image/jpeg
Y Resolution: 300 dots

เรายังสามารถรับค่าข้อมูลเมตาที่ต้องการได้อีกด้วย

การเพิ่มค่า Metadata ใหม่

เราสามารถเพิ่มค่าเมทาดาทาใหม่โดยใช้เมธอด add () ของคลาสเมทาดาทา ให้ด้านล่างเป็นไวยากรณ์ของวิธีนี้ ที่นี่เรากำลังเพิ่มชื่อผู้แต่ง

metadata.add(“author”,”Tutorials point”);

คลาส Metadata มีคุณสมบัติที่กำหนดไว้ล่วงหน้ารวมถึงคุณสมบัติที่สืบทอดมาจากคลาสเช่นClimateForcast , CativeCommons, Geographicเป็นต้นเพื่อสนับสนุนโมเดลข้อมูลต่างๆ ด้านล่างนี้คือการใช้ประเภทข้อมูล SOFTWARE ที่สืบทอดมาจากอินเทอร์เฟซ TIFF ที่ Tika นำมาใช้เพื่อปฏิบัติตามมาตรฐานข้อมูลเมตา XMP สำหรับรูปแบบภาพ TIFF

metadata.add(Metadata.SOFTWARE,"ms paint");

ด้านล่างนี้เป็นโปรแกรมที่สมบูรณ์ที่สาธิตวิธีการเพิ่มค่าข้อมูลเมตาให้กับไฟล์ที่กำหนด ที่นี่รายการขององค์ประกอบข้อมูลเมตาจะแสดงในผลลัพธ์เพื่อให้คุณสามารถสังเกตการเปลี่ยนแปลงในรายการหลังจากเพิ่มค่าใหม่

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class AddMetadata {

   public static void main(final String[] args) throws IOException, SAXException, TikaException {

      //create a file object and assume sample.txt is in your current directory
      File file = new File("Example.txt");

      //Parser method parameters
      Parser parser = new AutoDetectParser();
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(file);
      ParseContext context = new ParseContext();

      //parsing the document
      parser.parse(inputstream, handler, metadata, context);

      //list of meta data elements before adding new elements
      System.out.println( " metadata elements :"  +Arrays.toString(metadata.names()));

      //adding new meta data name value pair
      metadata.add("Author","Tutorials Point");
      System.out.println(" metadata name value pair is successfully added");
      
      //printing all the meta data elements after adding new elements
      System.out.println("Here is the list of all the metadata 
         elements after adding new elements");
      System.out.println( Arrays.toString(metadata.names()));
   }
}

บันทึกรหัสด้านบนเป็นคลาส AddMetadata.java และเรียกใช้จากพรอมต์คำสั่ง -

javac  AddMetadata .java 
java  AddMetadata

ด้านล่างเป็นเนื้อหาของ Example.txt

Hi students welcome to tutorialspoint

หากคุณรันโปรแกรมข้างต้นโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้ -

metadata elements of the given file :
[Content-Encoding, Content-Type] 
enter the number of metadata name value pairs to be added 1
enter metadata1name: 
Author enter metadata1value: 
Tutorials point metadata name value pair is successfully added
Here is the list of all the metadata elements  after adding new elements
[Content-Encoding, Author, Content-Type]

การตั้งค่าให้กับองค์ประกอบข้อมูลเมตาที่มีอยู่

คุณสามารถตั้งค่าให้กับองค์ประกอบข้อมูลเมตาที่มีอยู่โดยใช้เมธอด set () ไวยากรณ์ของการตั้งค่าคุณสมบัติวันที่โดยใช้เมธอด set () มีดังนี้ -

metadata.set(Metadata.DATE, new Date());

คุณยังสามารถตั้งค่าหลายค่าให้กับคุณสมบัติโดยใช้เมธอด set () ไวยากรณ์ของการตั้งค่าหลายค่าให้กับคุณสมบัติ Author โดยใช้เมธอด set () มีดังนี้ -

metadata.set(Metadata.AUTHOR, "ram ,raheem ,robin ");

ด้านล่างนี้เป็นโปรแกรมที่สมบูรณ์ที่แสดงวิธี set ()

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import java.util.Date;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class SetMetadata {

   public static void main(final String[] args) throws IOException,SAXException, TikaException {
   
      //Create a file object and assume example.txt is in your current directory
      File file = new File("example.txt");
      
      //parameters of parse() method
      Parser parser = new AutoDetectParser();
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(file);
      ParseContext context = new ParseContext();
      
      //Parsing the given file
      parser.parse(inputstream, handler, metadata, context);
     
      //list of meta data elements elements
      System.out.println( " metadata elements and values of the given file :");
      String[] metadataNamesb4 = metadata.names();
      
      for(String name : metadataNamesb4) {
    	  System.out.println(name + ": " + metadata.get(name));
      }
      
      //setting date meta data 
      metadata.set(Metadata.DATE, new Date());
      
      //setting multiple values to author property
      metadata.set(Metadata.AUTHOR, "ram ,raheem ,robin ");
      
      //printing all the meta data elements with new elements
      System.out.println("List of all the metadata elements  after adding new elements ");
      String[] metadataNamesafter = metadata.names();
      
      for(String name : metadataNamesafter) {
         System.out.println(name + ": " + metadata.get(name));
      }
   }
}

บันทึกรหัสด้านบนเป็น SetMetadata.java และเรียกใช้จากพรอมต์คำสั่ง -

javac  SetMetadata.java 
java  SetMetadata

ด้านล่างเป็นเนื้อหาของ example.txt

Hi students welcome to tutorialspoint

หากคุณรันโปรแกรมข้างต้นโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้ ในผลลัพธ์คุณสามารถสังเกตองค์ประกอบข้อมูลเมตาที่เพิ่มใหม่ได้

metadata elements and values of the given file :
Content-Encoding: ISO-8859-1
Content-Type: text/plain; charset = ISO-8859-1
Here is the list of all the metadata elements  after adding new elements 
date: 2014-09-24T07:01:32Z
Content-Encoding: ISO-8859-1
Author: ram, raheem, robin 
Content-Type: text/plain; charset = ISO-8859-1

ต้องการการตรวจจับภาษา

สำหรับการจัดประเภทเอกสารตามภาษาที่เขียนในเว็บไซต์หลายภาษาจำเป็นต้องใช้เครื่องมือตรวจจับภาษา เครื่องมือนี้ควรยอมรับเอกสารที่ไม่มีคำอธิบายประกอบภาษา (ข้อมูลเมตา) และเพิ่มข้อมูลนั้นในข้อมูลเมตาของเอกสารโดยการตรวจหาภาษา

อัลกอริทึมสำหรับ Profiling Corpus

Corpus คืออะไร?

ในการตรวจหาภาษาของเอกสารโปรไฟล์ภาษาจะถูกสร้างขึ้นและเปรียบเทียบกับโปรไฟล์ของภาษาที่รู้จัก ชุดข้อความของภาษาที่รู้จักเหล่านี้เรียกว่า acorpus.

คลังข้อมูลคือชุดของข้อความภาษาเขียนที่อธิบายถึงวิธีการใช้ภาษาในสถานการณ์จริง

คลังข้อมูลได้รับการพัฒนาจากหนังสือการถอดเสียงและแหล่งข้อมูลอื่น ๆ เช่นอินเทอร์เน็ต ความถูกต้องของคลังข้อมูลขึ้นอยู่กับอัลกอริธึมการทำโปรไฟล์ที่เราใช้ในการจัดกรอบคลังข้อมูล

อัลกอริทึมการทำโปรไฟล์คืออะไร?

วิธีทั่วไปในการตรวจจับภาษาคือการใช้พจนานุกรม คำที่ใช้ในข้อความที่กำหนดจะตรงกับคำที่อยู่ในพจนานุกรม

รายการคำทั่วไปที่ใช้ในภาษาหนึ่ง ๆ จะเป็นคลังข้อมูลที่เรียบง่ายและมีประสิทธิภาพที่สุดสำหรับการตรวจจับภาษาใดภาษาหนึ่งตัวอย่างเช่นบทความ a, an, the เป็นภาษาอังกฤษ.

การใช้ Word Sets เป็น Corpus

การใช้ชุดคำอัลกอริทึมอย่างง่ายจะถูกกำหนดกรอบเพื่อค้นหาระยะห่างระหว่างสององค์กรซึ่งจะเท่ากับผลรวมของความแตกต่างระหว่างความถี่ของคำที่ตรงกัน

อัลกอริทึมดังกล่าวประสบปัญหาต่อไปนี้ -

  • เนื่องจากความถี่ในการจับคู่คำน้อยมากอัลกอริทึมจึงไม่สามารถทำงานได้อย่างมีประสิทธิภาพกับข้อความขนาดเล็กที่มีประโยคไม่กี่ประโยค ต้องมีข้อความจำนวนมากเพื่อการจับคู่ที่ถูกต้อง

  • ไม่สามารถตรวจพบขอบเขตคำสำหรับภาษาที่มีประโยคประกอบและไม่มีตัวแบ่งคำเช่นช่องว่างหรือเครื่องหมายวรรคตอน

เนื่องจากปัญหาเหล่านี้ในการใช้ชุดคำเป็นคลังข้อมูลจึงมีการพิจารณาอักขระแต่ละตัวหรือกลุ่มอักขระ

ใช้ Character Sets เป็น Corpus

เนื่องจากอักขระที่ใช้กันทั่วไปในภาษานั้นมีจำนวน จำกัด จึงเป็นเรื่องง่ายที่จะใช้อัลกอริทึมโดยพิจารณาจากความถี่ของคำมากกว่าอักขระ อัลกอริทึมนี้ทำงานได้ดียิ่งขึ้นในกรณีที่ชุดอักขระบางชุดใช้ในภาษาเดียวหรือน้อยมาก

อัลกอริทึมนี้มีข้อบกพร่องดังต่อไปนี้ -

  • เป็นการยากที่จะแยกความแตกต่างของสองภาษาที่มีความถี่อักขระใกล้เคียงกัน

  • ไม่มีเครื่องมือหรืออัลกอริทึมเฉพาะเพื่อระบุภาษาโดยเฉพาะด้วยความช่วยเหลือของ (เป็นคลังข้อมูล) ชุดอักขระที่ใช้โดยหลายภาษา

อัลกอริทึม N-gram

ข้อเสียที่ระบุไว้ข้างต้นทำให้เกิดแนวทางใหม่ในการใช้ลำดับอักขระตามความยาวที่กำหนดสำหรับการจัดทำโปรไฟล์ ลำดับของอักขระดังกล่าวเรียกว่า N-grams โดยทั่วไปโดยที่ N หมายถึงความยาวของลำดับอักขระ

  • อัลกอริทึม N-gram เป็นแนวทางที่มีประสิทธิภาพสำหรับการตรวจจับภาษาโดยเฉพาะอย่างยิ่งในกรณีของภาษายุโรปเช่นภาษาอังกฤษ

  • อัลกอริทึมนี้ทำงานได้ดีกับข้อความสั้น ๆ

  • แม้ว่าจะมีอัลกอริธึมการสร้างโปรไฟล์ภาษาขั้นสูงในการตรวจจับหลายภาษาในเอกสารหลายภาษาที่มีคุณสมบัติที่น่าสนใจมากขึ้น แต่ Tika ก็ใช้อัลกอริทึม 3 กรัมเนื่องจากเหมาะกับสถานการณ์ที่ใช้งานได้จริงส่วนใหญ่

การตรวจจับภาษาใน Tika

ในบรรดาภาษามาตรฐาน 184 ภาษาที่ได้มาตรฐาน ISO 639-1 Tika สามารถตรวจจับได้ 18 ภาษา การตรวจจับภาษาใน Tika ทำได้โดยใช้ไฟล์getLanguage() วิธีการของ LanguageIdentifierชั้นเรียน. วิธีนี้ส่งคืนชื่อรหัสของภาษาในรูปแบบ String ด้านล่างนี้คือรายการคู่รหัสภาษา 18 คู่ที่ Tika ตรวจพบ -

ดา - เดนมาร์ก เดอ - เยอรมัน et - เอสโตเนีย el - กรีก
en— ภาษาอังกฤษ es - สเปน fi - ภาษาฟินแลนด์ fr - ฝรั่งเศส
hu - ฮังการี คือ - ไอซ์แลนด์ มัน - อิตาลี nl - ดัตช์
ไม่ - นอร์เวย์ pl - โปแลนด์ pt - โปรตุเกส ru - รัสเซีย
sv - สวีเดน th— ไทย

ในขณะที่สร้างอินสแตนซ์ LanguageIdentifier คุณควรส่งผ่านรูปแบบสตริงของเนื้อหาที่จะแยกหรือก LanguageProfile คลาสวัตถุ

LanguageIdentifier object = new LanguageIdentifier(“this is english”);

ด้านล่างเป็นโปรแกรมตัวอย่างสำหรับการตรวจจับภาษาใน Tika

import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.language.LanguageIdentifier;

import org.xml.sax.SAXException;

public class LanguageDetection {

   public static void main(String args[])throws IOException, SAXException, TikaException {

      LanguageIdentifier identifier = new LanguageIdentifier("this is english ");
      String language = identifier.getLanguage();
      System.out.println("Language of the given content is : " + language);
   }
}

บันทึกรหัสด้านบนเป็น LanguageDetection.java และเรียกใช้จากพรอมต์คำสั่งโดยใช้คำสั่งต่อไปนี้ -

javac  LanguageDetection.java 
java  LanguageDetection

หากคุณรันโปรแกรมข้างต้นจะให้ผลลัพธ์ดังต่อไปนี้

Language of the given content is : en

การตรวจหาภาษาของเอกสาร

ในการตรวจหาภาษาของเอกสารที่กำหนดคุณต้องแยกวิเคราะห์โดยใช้เมธอด parse () เมธอด parse () จะแยกวิเคราะห์เนื้อหาและจัดเก็บไว้ในอ็อบเจ็กต์ตัวจัดการซึ่งถูกส่งผ่านไปเป็นอาร์กิวเมนต์อย่างใดอย่างหนึ่ง ส่งผ่านรูปแบบ String ของวัตถุตัวจัดการไปยังตัวสร้างของLanguageIdentifier class ดังรูปด้านล่าง -

parser.parse(inputstream, handler, metadata, context);
LanguageIdentifier object = new LanguageIdentifier(handler.toString());

ด้านล่างนี้เป็นโปรแกรมที่สมบูรณ์ที่สาธิตวิธีตรวจจับภาษาของเอกสารที่กำหนด -

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;
import org.apache.tika.language.*;

import org.xml.sax.SAXException;

public class DocumentLanguageDetection {

   public static void main(final String[] args) throws IOException, SAXException, TikaException {

      //Instantiating a file object
      File file = new File("Example.txt");

      //Parser method parameters
      Parser parser = new AutoDetectParser();
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream content = new FileInputStream(file);

      //Parsing the given document
      parser.parse(content, handler, metadata, new ParseContext());

      LanguageIdentifier object = new LanguageIdentifier(handler.toString());
      System.out.println("Language name :" + object.getLanguage());
   }
}

บันทึกรหัสด้านบนเป็น SetMetadata.java และเรียกใช้จากพรอมต์คำสั่ง -

javac  SetMetadata.java 
java  SetMetadata

ด้านล่างเป็นเนื้อหาของ Example.txt

Hi students welcome to tutorialspoint

หากคุณรันโปรแกรมข้างต้นโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้ -

Language name :en

นอกจากโถ Tika แล้ว Tika ยังมีแอปพลิเคชัน Graphical User Interface (GUI) และแอปพลิเคชัน Command Line Interface (CLI) คุณสามารถเรียกใช้แอปพลิเคชัน Tika จากพรอมต์คำสั่งเช่นเดียวกับแอปพลิเคชัน Java อื่น ๆ

อินเทอร์เฟซผู้ใช้แบบกราฟิก (GUI)

  • Tika ให้ไฟล์ jar พร้อมกับซอร์สโค้ดในลิงค์ต่อไปนี้ https://tika.apache.org/download.html.

  • ดาวน์โหลดทั้งสองไฟล์ตั้งค่า classpath สำหรับไฟล์ jar

  • แตกโฟลเดอร์ซอร์สโค้ด zip เปิดโฟลเดอร์ tika-app

  • ในโฟลเดอร์ที่แยกแล้วที่“ tika-1.6 \ tika-app \ src \ main \ java \ org \ apache \ Tika \ gui” คุณจะเห็นไฟล์คลาสสองไฟล์: ParsingTransferHandler.java และ TikaGUI.java.

  • คอมไพล์ทั้งไฟล์คลาสและรันไฟล์คลาส TikaGUI.java จะเปิดหน้าต่างต่อไปนี้

ตอนนี้ให้เราดูวิธีการใช้ Tika GUI

ใน GUI ให้คลิกเปิดเรียกดูและเลือกไฟล์ที่จะแตกหรือลากลงบนช่องว่างของหน้าต่าง

Tika แยกเนื้อหาของไฟล์และแสดงในห้ารูปแบบที่แตกต่างกัน ได้แก่ ข้อมูลเมตาข้อความที่จัดรูปแบบข้อความธรรมดาเนื้อหาหลักและข้อความที่มีโครงสร้าง คุณสามารถเลือกรูปแบบใดก็ได้ที่คุณต้องการ

ในทำนองเดียวกันคุณจะพบคลาส CLI ในโฟลเดอร์ "tika-1.6 \ tikaapp \ src \ main \ java \ org \ apache \ tika \ cli"

ภาพประกอบต่อไปนี้แสดงให้เห็นว่า Tika ทำอะไรได้บ้าง เมื่อเราวางภาพบน GUI Tika จะแยกและแสดงข้อมูลเมตา

ด้านล่างนี้เป็นโปรแกรมสำหรับดึงเนื้อหาและข้อมูลเมตาจาก PDF

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.pdf.PDFParser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class PdfParse {

   public static void main(final String[] args) throws IOException,TikaException {

      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("Example.pdf"));
      ParseContext pcontext = new ParseContext();
      
      //parsing the document using PDF parser
      PDFParser pdfparser = new PDFParser(); 
      pdfparser.parse(inputstream, handler, metadata,pcontext);
      
      //getting the content of the document
      System.out.println("Contents of the PDF :" + handler.toString());
      
      //getting metadata of the document
      System.out.println("Metadata of the PDF:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) {
         System.out.println(name+ " : " + metadata.get(name));
      }
   }
}

บันทึกรหัสด้านบนเป็น PdfParse.javaและรวบรวมจากพรอมต์คำสั่งโดยใช้คำสั่งต่อไปนี้ -

javac PdfParse.java
java PdfParse

ด้านล่างนี้เป็นภาพรวมของ example.pdf

PDF ที่เรากำลังส่งมีคุณสมบัติดังต่อไปนี้ -

หลังจากคอมไพล์โปรแกรมแล้วคุณจะได้ผลลัพธ์ตามที่แสดงด้านล่าง

Output -

Contents of the PDF:

Apache Tika is a framework for content type detection and content extraction 
which was designed by Apache software foundation. It detects and extracts metadata 
and structured text content from different types of documents such as spreadsheets, 
text documents, images or PDFs including audio or video input formats to certain extent.

Metadata of the PDF:

dcterms:modified :     2014-09-28T12:31:16Z
meta:creation-date :     2014-09-28T12:31:16Z
meta:save-date :     2014-09-28T12:31:16Z
dc:creator :     Krishna Kasyap
pdf:PDFVersion :     1.5
Last-Modified :     2014-09-28T12:31:16Z
Author :     Krishna Kasyap
dcterms:created :     2014-09-28T12:31:16Z
date :     2014-09-28T12:31:16Z
modified :     2014-09-28T12:31:16Z
creator :     Krishna Kasyap
xmpTPg:NPages :     1
Creation-Date :     2014-09-28T12:31:16Z
pdf:encrypted :     false
meta:author :     Krishna Kasyap
created :     Sun Sep 28 05:31:16 PDT 2014
dc:format :     application/pdf; version = 1.5
producer :     Microsoft® Word 2013
Content-Type :     application/pdf
xmp:CreatorTool :     Microsoft® Word 2013
Last-Save-Date :     2014-09-28T12:31:16Z

ด้านล่างนี้เป็นโปรแกรมสำหรับดึงเนื้อหาและข้อมูลเมตาจาก Open Office Document Format (ODF)

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.odf.OpenDocumentParser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class OpenDocumentParse {

   public static void main(final String[] args) throws IOException,SAXException, TikaException {

      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("example_open_document_presentation.odp"));
      ParseContext pcontext = new ParseContext();
      
      //Open Document Parser
      OpenDocumentParser openofficeparser = new OpenDocumentParser (); 
      openofficeparser.parse(inputstream, handler, metadata,pcontext); 
      System.out.println("Contents of the document:" + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) {		        
         System.out.println(name + " :  " + metadata.get(name)); 
      }
   }
}

บันทึกรหัสด้านบนเป็น OpenDocumentParse.javaและรวบรวมไว้ในพรอมต์คำสั่งโดยใช้คำสั่งต่อไปนี้ -

javac OpenDocumentParse.java
java OpenDocumentParse

ด้านล่างนี้เป็นภาพรวมของไฟล์ example_open_document_presentation.odp

เอกสารนี้มีคุณสมบัติดังต่อไปนี้ -

หลังจากคอมไพล์โปรแกรมแล้วคุณจะได้ผลลัพธ์ดังต่อไปนี้

Output -

Contents of the document:

Apache Tika
Apache Tika is a framework for content type detection and content extraction which was designed 
by Apache software foundation. It detects and extracts metadata and structured text content from 
different types of documents such as spreadsheets, text documents, images or PDFs including audio 
or video input formats to certain extent. 

Metadata of the document:

editing-cycles:   4
meta:creation-date:   2009-04-16T11:32:32.86
dcterms:modified:   2014-09-28T07:46:13.03
meta:save-date:   2014-09-28T07:46:13.03
Last-Modified:   2014-09-28T07:46:13.03
dcterms:created:   2009-04-16T11:32:32.86
date:   2014-09-28T07:46:13.03
modified:   2014-09-28T07:46:13.03
nbObject:   36
Edit-Time:   PT32M6S
Creation-Date:   2009-04-16T11:32:32.86
Object-Count:   36
meta:object-count:   36
generator:   OpenOffice/4.1.0$Win32 OpenOffice.org_project/410m18$Build-9764
Content-Type:   application/vnd.oasis.opendocument.presentation
Last-Save-Date:   2014-09-28T07:46:13.03

ด้านล่างนี้เป็นโปรแกรมสำหรับดึงเนื้อหาและข้อมูลเมตาจากเอกสาร Microsoft Office

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.microsoft.ooxml.OOXMLParser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class MSExcelParse {

   public static void main(final String[] args) throws IOException, TikaException {
      
      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("example_msExcel.xlsx"));
      ParseContext pcontext = new ParseContext();
      
      //OOXml parser
      OOXMLParser  msofficeparser = new OOXMLParser (); 
      msofficeparser.parse(inputstream, handler, metadata,pcontext);
      System.out.println("Contents of the document:" + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) {
         System.out.println(name + ": " + metadata.get(name));
      }
   }
}

บันทึกรหัสด้านบนเป็น MSExelParse.javaและรวบรวมจากพรอมต์คำสั่งโดยใช้คำสั่งต่อไปนี้ -

javac MSExcelParse.java
java MSExcelParse

เรากำลังส่งไฟล์ Excel ตัวอย่างต่อไปนี้

ไฟล์ Excel ที่กำหนดมีคุณสมบัติดังต่อไปนี้ -

หลังจากดำเนินการตามโปรแกรมข้างต้นคุณจะได้ผลลัพธ์ดังต่อไปนี้

Output -

Contents of the document:

Sheet1
Name	Age	Designation		Salary
Ramu	50	Manager			50,000
Raheem	40	Assistant manager	40,000
Robert	30	Superviser		30,000
sita	25	Clerk			25,000
sameer	25	Section in-charge	20,000

Metadata of the document:

meta:creation-date:    2006-09-16T00:00:00Z
dcterms:modified:    2014-09-28T15:18:41Z
meta:save-date:    2014-09-28T15:18:41Z
Application-Name:    Microsoft Excel
extended-properties:Company:    
dcterms:created:    2006-09-16T00:00:00Z
Last-Modified:    2014-09-28T15:18:41Z
Application-Version:    15.0300
date:    2014-09-28T15:18:41Z
publisher:    
modified:    2014-09-28T15:18:41Z
Creation-Date:    2006-09-16T00:00:00Z
extended-properties:AppVersion:    15.0300
protected:    false
dc:publisher:    
extended-properties:Application:    Microsoft Excel
Content-Type:    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Last-Save-Date:    2014-09-28T15:18:41Z

ด้านล่างนี้เป็นโปรแกรมสำหรับดึงเนื้อหาและข้อมูลเมตาจากเอกสารข้อความ -

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.sax.BodyContentHandler;
import org.apache.tika.parser.txt.TXTParser;

import org.xml.sax.SAXException;

public class TextParser {

   public static void main(final String[] args) throws IOException,SAXException, TikaException {

      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("example.txt"));
      ParseContext pcontext=new ParseContext();
      
      //Text document parser
      TXTParser  TexTParser = new TXTParser();
      TexTParser.parse(inputstream, handler, metadata,pcontext);
      System.out.println("Contents of the document:" + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) {
         System.out.println(name + " : " + metadata.get(name));
      }
   }
}

บันทึกรหัสด้านบนเป็น TextParser.javaและรวบรวมจากพรอมต์คำสั่งโดยใช้คำสั่งต่อไปนี้ -

javac TextParser.java
java TextParser

ด้านล่างเป็นภาพรวมของไฟล์ sample.txt -

เอกสารข้อความมีคุณสมบัติดังต่อไปนี้ -

หากคุณรันโปรแกรมข้างต้นโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้

Output -

Contents of the document:

At tutorialspoint.com, we strive hard to provide quality tutorials for self-learning 
purpose in the domains of Academics, Information Technology, Management and Computer 
Programming Languages.
The endeavour started by Mohtashim, an AMU alumni, who is the founder and the managing 
director of Tutorials Point (I) Pvt. Ltd. He came up with the website tutorialspoint.com 
in year 2006 with the help of handpicked freelancers, with an array of tutorials for 
computer programming languages.

Metadata of the document:

Content-Encoding:   windows-1252
Content-Type:   text/plain; charset = windows-1252

ด้านล่างนี้คือโปรแกรมสำหรับดึงเนื้อหาและข้อมูลเมตาจากเอกสาร HTML

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.html.HtmlParser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class HtmlParse {

   public static void main(final String[] args) throws IOException,SAXException, TikaException {

      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("example.html"));
      ParseContext pcontext = new ParseContext();
      
      //Html parser 
      HtmlParser htmlparser = new HtmlParser();
      htmlparser.parse(inputstream, handler, metadata,pcontext);
      System.out.println("Contents of the document:" + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) {
         System.out.println(name + ":   " + metadata.get(name));  
      }
   }
}

บันทึกรหัสด้านบนเป็น HtmlParse.javaและรวบรวมจากพรอมต์คำสั่งโดยใช้คำสั่งต่อไปนี้ -

javac HtmlParse.java
java HtmlParse

ด้านล่างนี้เป็นภาพรวมของไฟล์ example.txt

เอกสาร HTML มีคุณสมบัติดังต่อไปนี้

หากคุณรันโปรแกรมข้างต้นโปรแกรมจะให้ผลลัพธ์ดังต่อไปนี้

Output -

Contents of the document:

	Name	                     Salary	    age
	Ramesh Raman	             50000	    20
	Shabbir Hussein	             70000          25
	Umesh Raman	             50000	    30
	Somesh	                     50000	    35

Metadata of the document:

title:   HTML Table Header
Content-Encoding:   windows-1252
Content-Type:   text/html; charset = windows-1252
dc:title:   HTML Table Header

ด้านล่างนี้เป็นโปรแกรมสำหรับดึงเนื้อหาและข้อมูลเมตาจากเอกสาร XML -

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.xml.XMLParser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class XmlParse {

   public static void main(final String[] args) throws IOException,SAXException, TikaException {

      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("pom.xml"));
      ParseContext pcontext = new ParseContext();
      
      //Xml parser
      XMLParser xmlparser = new XMLParser(); 
      xmlparser.parse(inputstream, handler, metadata, pcontext);
      System.out.println("Contents of the document:" + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) {
         System.out.println(name + ": " + metadata.get(name));
      }
   }
}

บันทึกรหัสด้านบนเป็น XmlParse.javaและรวบรวมจากพรอมต์คำสั่งโดยใช้คำสั่งต่อไปนี้ -

javac XmlParse.java
java XmlParse

ด้านล่างเป็นภาพรวมของไฟล์ example.xml

เอกสารนี้มีคุณสมบัติดังต่อไปนี้ -

หากคุณรันโปรแกรมข้างต้นจะให้ผลลัพธ์ดังต่อไปนี้ -

Output -

Contents of the document:
  
4.0.0
org.apache.tika
tika
1.6
org.apache.tika
tika-core
1.6
org.apache.tika
tika-parsers
1.6
src
maven-compiler-plugin
3.1
1.7
1.7

Metadata of the document:

Content-Type:   application/xml

ด้านล่างนี้คือโปรแกรมสำหรับดึงเนื้อหาและข้อมูลเมตาจากไฟล์. class

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.asm.ClassParser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class JavaClassParse {

   public static void main(final String[] args) throws IOException,SAXException, TikaException {

      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("Example.class"));
      ParseContext pcontext = new ParseContext();

      //Html parser
      ClassParser  ClassParser = new  ClassParser();
      ClassParser.parse(inputstream, handler, metadata,pcontext);
      System.out.println("Contents of the document:" + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) {		        
         System.out.println(name + " :  " + metadata.get(name));  
      }
   }
}

บันทึกรหัสด้านบนเป็น JavaClassParse.javaและรวบรวมจากพรอมต์คำสั่งโดยใช้คำสั่งต่อไปนี้ -

javac JavaClassParse.java
java JavaClassParse

ด้านล่างเป็นภาพรวมของ Example.java ซึ่งจะสร้าง Example.class หลังจากการคอมไพล์

Example.class ไฟล์มีคุณสมบัติดังต่อไปนี้ -

หลังจากดำเนินการโปรแกรมข้างต้นคุณจะได้ผลลัพธ์ดังต่อไปนี้

Output -

Contents of the document:

package tutorialspoint.tika.examples;
public synchronized class Example {
   public void Example();
   public static void main(String[]);
}

Metadata of the document:

title: Example
resourceName: Example.class
dc:title: Example

ด้านล่างนี้เป็นโปรแกรมสำหรับดึงเนื้อหาและข้อมูลเมตาจากไฟล์ Java Archive (jar) -

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.sax.BodyContentHandler;
import org.apache.tika.parser.pkg.PackageParser;

import org.xml.sax.SAXException;

public class PackageParse {

   public static void main(final String[] args) throws IOException,SAXException, TikaException {

      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("Example.jar"));
      ParseContext pcontext = new ParseContext();
      
      //Package parser
      PackageParser packageparser = new PackageParser();
      packageparser.parse(inputstream, handler, metadata,pcontext);
      System.out.println("Contents of the document: " + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) {
         System.out.println(name + ":   " + metadata.get(name));
      }
   }
}

บันทึกรหัสด้านบนเป็น PackageParse.javaและรวบรวมจากพรอมต์คำสั่งโดยใช้คำสั่งต่อไปนี้ -

javac PackageParse.java
java PackageParse

ด้านล่างนี้เป็นภาพรวมของ Example.java ที่อยู่ภายในแพ็คเกจ

ไฟล์ jar มีคุณสมบัติดังต่อไปนี้ -

หลังจากรันโปรแกรมข้างต้นแล้วจะให้ผลลัพธ์ดังต่อไปนี้ -

Output -

Contents of the document:

META-INF/MANIFEST.MF
tutorialspoint/tika/examples/Example.class

Metadata of the document:

Content-Type:   application/zip

ด้านล่างนี้เป็นโปรแกรมสำหรับดึงเนื้อหาและข้อมูลเมตาจากภาพ JPEG

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.jpeg.JpegParser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class JpegParse {

   public static void main(final String[] args) throws IOException,SAXException, TikaException {

      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("boy.jpg"));
      ParseContext pcontext = new ParseContext();
      
      //Jpeg Parse
      JpegParser  JpegParser = new JpegParser();
      JpegParser.parse(inputstream, handler, metadata,pcontext);
      System.out.println("Contents of the document:" + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) { 		        
         System.out.println(name + ": " + metadata.get(name));
      }
   }
}

บันทึกรหัสด้านบนเป็น JpegParse.javaและรวบรวมจากพรอมต์คำสั่งโดยใช้คำสั่งต่อไปนี้ -

javac JpegParse.java
java JpegParse

ด้านล่างเป็นภาพรวมของ Example.jpeg -

ไฟล์ JPEG มีคุณสมบัติดังต่อไปนี้ -

หลังจากรันโปรแกรมคุณจะได้ผลลัพธ์ดังต่อไปนี้

Output −

Contents of the document:

Meta data of the document:

Resolution Units: inch
Compression Type: Baseline
Data Precision: 8 bits
Number of Components: 3
tiff:ImageLength: 3000
Component 2: Cb component: Quantization table 1, Sampling factors 1 horiz/1 vert
Component 1: Y component: Quantization table 0, Sampling factors 2 horiz/2 vert
Image Height: 3000 pixels
X Resolution: 300 dots
Original Transmission Reference: 53616c7465645f5f2368da84ca932841b336ac1a49edb1a93fae938b8db2cb3ec9cc4dc28d7383f1
Image Width: 4000 pixels
IPTC-NAA record: 92 bytes binary data
Component 3: Cr component: Quantization table 1, Sampling factors 1 horiz/1 vert
tiff:BitsPerSample: 8
Application Record Version: 4
tiff:ImageWidth: 4000
Y Resolution: 300 dots

ด้านล่างนี้เป็นโปรแกรมสำหรับดึงเนื้อหาและข้อมูลเมตาจากไฟล์ mp4 -

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.mp4.MP4Parser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class Mp4Parse {

   public static void main(final String[] args) throws IOException,SAXException, TikaException {

      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("example.mp4"));
      ParseContext pcontext = new ParseContext();
      
      //Html parser
      MP4Parser MP4Parser = new MP4Parser();
      MP4Parser.parse(inputstream, handler, metadata,pcontext);
      System.out.println("Contents of the document:  :" + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();
      
      for(String name : metadataNames) {
         System.out.println(name + ": " + metadata.get(name));
      }
   }  
}

บันทึกรหัสด้านบนเป็น JpegParse.java และรวบรวมจากพรอมต์คำสั่งโดยใช้คำสั่งต่อไปนี้ -

javac Mp4Parse.java
java Mp4Parse

ด้านล่างนี้เป็นภาพรวมของคุณสมบัติของไฟล์ Example.mp4

หลังจากดำเนินการโปรแกรมข้างต้นคุณจะได้ผลลัพธ์ดังต่อไปนี้ -

Output -

Contents of the document:

Metadata of the document:

dcterms:modified: 2014-01-06T12:10:27Z
meta:creation-date: 1904-01-01T00:00:00Z
meta:save-date: 2014-01-06T12:10:27Z
Last-Modified: 2014-01-06T12:10:27Z
dcterms:created: 1904-01-01T00:00:00Z
date: 2014-01-06T12:10:27Z
tiff:ImageLength: 360
modified: 2014-01-06T12:10:27Z
Creation-Date: 1904-01-01T00:00:00Z
tiff:ImageWidth: 640
Content-Type: video/mp4
Last-Save-Date: 2014-01-06T12:10:27Z

ด้านล่างนี้เป็นโปรแกรมสำหรับดึงเนื้อหาและข้อมูลเมตาจากไฟล์ mp3 -

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.mp3.LyricsHandler;
import org.apache.tika.parser.mp3.Mp3Parser;
import org.apache.tika.sax.BodyContentHandler;

import org.xml.sax.SAXException;

public class Mp3Parse {

   public static void main(final String[] args) throws Exception, IOException, SAXException, TikaException {

      //detecting the file type
      BodyContentHandler handler = new BodyContentHandler();
      Metadata metadata = new Metadata();
      FileInputStream inputstream = new FileInputStream(new File("example.mp3"));
      ParseContext pcontext = new ParseContext();
      
      //Mp3 parser
      Mp3Parser  Mp3Parser = new  Mp3Parser();
      Mp3Parser.parse(inputstream, handler, metadata, pcontext);
      LyricsHandler lyrics = new LyricsHandler(inputstream,handler);
      
      while(lyrics.hasLyrics()) {
    	  System.out.println(lyrics.toString());
      }
      
      System.out.println("Contents of the document:" + handler.toString());
      System.out.println("Metadata of the document:");
      String[] metadataNames = metadata.names();

      for(String name : metadataNames) {		        
    	  System.out.println(name + ": " + metadata.get(name));
      }
   }
}

บันทึกรหัสด้านบนเป็น JpegParse.javaและรวบรวมจากพรอมต์คำสั่งโดยใช้คำสั่งต่อไปนี้ -

javac Mp3Parse.java
java Mp3Parse

ไฟล์ Example.mp3 มีคุณสมบัติดังต่อไปนี้ -

คุณจะได้รับผลลัพธ์ต่อไปนี้หลังจากดำเนินการโปรแกรม หากไฟล์ที่ระบุมีเนื้อเพลงใด ๆ แอปพลิเคชันของเราจะจับภาพและแสดงพร้อมกับเอาต์พุต

Output -

Contents of the document:

Kanulanu Thaake
Arijit Singh
Manam (2014), track 01/06
2014
Soundtrack
30171.65
eng - 
DRGM
Arijit Singh
Manam (2014), track 01/06
2014
Soundtrack
30171.65
eng - 
DRGM

Metadata of the document:

xmpDM:releaseDate: 2014
xmpDM:duration: 30171.650390625
xmpDM:audioChannelType: Stereo
dc:creator: Arijit Singh
xmpDM:album: Manam (2014)
Author: Arijit Singh
xmpDM:artist: Arijit Singh
channels: 2
xmpDM:audioSampleRate: 44100
xmpDM:logComment: eng - 
DRGM
xmpDM:trackNumber: 01/06
version: MPEG 3 Layer III Version 1
creator: Arijit Singh
xmpDM:composer: Music : Anoop Rubens | Lyrics : Vanamali
xmpDM:audioCompressor: MP3
title: Kanulanu Thaake
samplerate: 44100
meta:author: Arijit Singh
xmpDM:genre: Soundtrack
Content-Type: audio/mpeg
xmpDM:albumArtist: Manam (2014)
dc:title: Kanulanu Thaake