TIKA - Hướng dẫn nhanh
Apache Tika là gì?
Apache Tika là một thư viện được sử dụng để phát hiện loại tài liệu và trích xuất nội dung từ các định dạng tệp khác nhau.
Trong nội bộ, Tika sử dụng các trình phân tích cú pháp tài liệu khác nhau hiện có và các kỹ thuật phát hiện loại tài liệu để phát hiện và trích xuất dữ liệu.
Sử dụng Tika, người ta có thể phát triển một trình phát hiện kiểu phổ quát và trình trích xuất nội dung để trích xuất cả văn bản có cấu trúc cũng như siêu dữ liệu từ các loại tài liệu khác nhau như bảng tính, tài liệu văn bản, hình ảnh, PDF và thậm chí cả các định dạng đầu vào đa phương tiện ở một mức độ nhất định.
Tika cung cấp một API chung duy nhất để phân tích các định dạng tệp khác nhau. Nó sử dụng các thư viện phân tích cú pháp chuyên dụng hiện có cho từng loại tài liệu.
Tất cả các thư viện phân tích cú pháp này được đóng gói trong một giao diện duy nhất được gọi là Parser interface.
Tại sao Tika?
Theo filext.com, có khoảng 15 nghìn đến 51 nghìn loại nội dung và con số này đang tăng lên từng ngày. Dữ liệu đang được lưu trữ ở nhiều định dạng khác nhau như tài liệu văn bản, bảng tính excel, PDF, hình ảnh và các tệp đa phương tiện. Do đó, các ứng dụng như công cụ tìm kiếm và hệ thống quản lý nội dung cần được hỗ trợ thêm để dễ dàng trích xuất dữ liệu từ các loại tài liệu này. Apache Tika phục vụ mục đích này bằng cách cung cấp một API chung để định vị và trích xuất dữ liệu từ nhiều định dạng tệp.
Ứng dụng Apache Tika
Có nhiều ứng dụng khác nhau sử dụng Apache Tika. Ở đây chúng ta sẽ thảo luận về một vài ứng dụng nổi bật phụ thuộc nhiều vào Apache Tika.
Công cụ tìm kiếm
Tika được sử dụng rộng rãi trong khi phát triển công cụ tìm kiếm để lập chỉ mục nội dung văn bản của tài liệu kỹ thuật số.
Công cụ tìm kiếm là hệ thống xử lý thông tin được thiết kế để tìm kiếm thông tin và các tài liệu được lập chỉ mục từ Web.
Crawler là một thành phần quan trọng của công cụ tìm kiếm thu thập thông tin trên Web để tìm nạp các tài liệu sẽ được lập chỉ mục bằng cách sử dụng một số kỹ thuật lập chỉ mục. Sau đó, trình thu thập thông tin chuyển các tài liệu được lập chỉ mục này sang một thành phần trích xuất.
Nhiệm vụ của thành phần trích xuất là trích xuất văn bản và siêu dữ liệu từ tài liệu. Nội dung và siêu dữ liệu được trích xuất như vậy rất hữu ích cho công cụ tìm kiếm. Thành phần chiết xuất này có chứa Tika.
Nội dung được trích xuất sau đó được chuyển tới trình chỉ mục của công cụ tìm kiếm sử dụng nó để xây dựng chỉ mục tìm kiếm. Ngoài ra, công cụ tìm kiếm cũng sử dụng nội dung được trích xuất theo nhiều cách khác.
Phân tích tài liệu
Trong lĩnh vực trí tuệ nhân tạo, có một số công cụ nhất định để phân tích tài liệu tự động ở cấp độ ngữ nghĩa và trích xuất tất cả các loại dữ liệu từ chúng.
Trong các ứng dụng như vậy, các tài liệu được phân loại dựa trên các thuật ngữ nổi bật trong nội dung được trích xuất của tài liệu.
Các công cụ này sử dụng Tika để trích xuất nội dung để phân tích các tài liệu khác nhau từ văn bản thuần túy đến tài liệu kỹ thuật số.
Quản lý tài sản kỹ thuật số
Một số tổ chức quản lý tài sản kỹ thuật số của họ như ảnh, sách điện tử, bản vẽ, nhạc và video bằng cách sử dụng một ứng dụng đặc biệt được gọi là quản lý tài sản kỹ thuật số (DAM).
Các ứng dụng như vậy nhờ sự trợ giúp của trình phát hiện loại tài liệu và trình trích xuất siêu dữ liệu để phân loại các tài liệu khác nhau.
Phân tích nội dung
Các trang web như Amazon giới thiệu nội dung mới phát hành trên trang web của họ cho người dùng cá nhân theo sở thích của họ. Để làm như vậy, các trang web này theomachine learning techniques, hoặc nhờ sự trợ giúp của các trang web truyền thông xã hội như Facebook để trích xuất thông tin cần thiết như lượt thích và sở thích của người dùng. Thông tin thu thập này sẽ ở dạng thẻ html hoặc các định dạng khác yêu cầu phát hiện và trích xuất loại nội dung khác.
Để phân tích nội dung của tài liệu, chúng tôi có các công nghệ triển khai các kỹ thuật máy học, chẳng hạn như UIMA và Mahout. Những công nghệ này rất hữu ích trong việc phân cụm và phân tích dữ liệu trong tài liệu.
Apache Mahoutlà một khuôn khổ cung cấp các thuật toán ML trên Apache Hadoop - một nền tảng điện toán đám mây. Mahout cung cấp một kiến trúc bằng cách tuân theo các kỹ thuật phân cụm và lọc nhất định. Bằng cách tuân theo kiến trúc này, các lập trình viên có thể viết các thuật toán ML của riêng họ để đưa ra các đề xuất bằng cách lấy các kết hợp văn bản và siêu dữ liệu khác nhau. Để cung cấp đầu vào cho các thuật toán này, các phiên bản gần đây của Mahout sử dụng Tika để trích xuất văn bản và siêu dữ liệu từ nội dung nhị phân.
Apache UIMAphân tích và xử lý các ngôn ngữ lập trình khác nhau và tạo ra các chú thích UIMA. Bên trong nó sử dụng Tika Annotator để trích xuất văn bản tài liệu và siêu dữ liệu.
Lịch sử
Năm | Phát triển |
---|---|
2006 | Ý tưởng của Tika đã được dự kiến trước Ủy ban quản lý dự án Lucene. |
2006 | Khái niệm về Tika và tính hữu dụng của nó trong dự án Jackrabbit đã được thảo luận. |
2007 | Tika vào lồng ấp Apache. |
2008 | Các phiên bản 0,1 và 0,2 đã được phát hành và Tika đã tốt nghiệp từ tủ ấm sang tiểu dự án Lucene. |
2009 | Các phiên bản 0.3, 0.4 và 0.5 đã được phát hành. |
2010 | Phiên bản 0.6 và 0.7 đã được phát hành và Tika đã hoàn thành dự án Apache cấp cao nhất. |
2011 | Tika 1.0 đã được phát hành và cuốn sách về Tika "Tika in Action" cũng được phát hành cùng năm. |
Kiến trúc cấp độ ứng dụng của Tika
Các lập trình viên ứng dụng có thể dễ dàng tích hợp Tika trong ứng dụng của họ. Tika cung cấp Giao diện dòng lệnh và GUI để làm cho nó thân thiện với người dùng.
Trong chương này, chúng ta sẽ thảo luận về bốn mô-đun quan trọng cấu thành kiến trúc Tika. Hình minh họa sau đây cho thấy kiến trúc của Tika cùng với bốn mô-đun của nó:
- Cơ chế phát hiện ngôn ngữ.
- Cơ chế phát hiện MIME.
- Giao diện phân tích cú pháp.
- Lớp Tika Facade.
Cơ chế phát hiện ngôn ngữ
Bất cứ khi nào một tài liệu văn bản được chuyển đến Tika, nó sẽ phát hiện ngôn ngữ mà nó được viết. Nó chấp nhận các tài liệu không có chú thích ngôn ngữ và thêm thông tin đó vào siêu dữ liệu của tài liệu bằng cách phát hiện ngôn ngữ.
Để hỗ trợ nhận dạng ngôn ngữ, Tika có một lớp gọi là Language Identifier trong gói org.apache.tika.languagevà một kho lưu trữ nhận dạng ngôn ngữ bên trong chứa các thuật toán phát hiện ngôn ngữ từ một văn bản nhất định. Tika nội bộ sử dụng thuật toán N-gram để phát hiện ngôn ngữ.
Cơ chế phát hiện MIME
Tika có thể phát hiện loại tài liệu theo tiêu chuẩn MIME. Phát hiện kiểu MIME mặc định trong Tika được thực hiện bằng cách sử dụng org.apache.tika.mime.mimeTypes . Nó sử dụng giao diện org.apache.tika.detect.Detector để phát hiện loại nội dung.
Nội bộ Tika sử dụng một số kỹ thuật như tập tin toàn cầu, gợi ý kiểu nội dung, byte ma thuật, mã hóa ký tự và một số kỹ thuật khác.
Giao diện phân tích cú pháp
Giao diện phân tích cú pháp của org.apache.tika.parser là giao diện chính để phân tích cú pháp tài liệu trong Tika. Giao diện này trích xuất văn bản và siêu dữ liệu từ một tài liệu và tóm tắt nó cho người dùng bên ngoài, những người sẵn sàng viết các plugin phân tích cú pháp.
Sử dụng các lớp phân tích cú pháp cụ thể khác nhau, cụ thể cho các loại tài liệu riêng lẻ, Tika hỗ trợ rất nhiều định dạng tài liệu. Các lớp định dạng cụ thể này cung cấp hỗ trợ cho các định dạng tài liệu khác nhau, bằng cách triển khai trực tiếp logic trình phân tích cú pháp hoặc bằng cách sử dụng các thư viện trình phân tích cú pháp bên ngoài.
Lớp mặt tiền Tika
Sử dụng lớp mặt tiền Tika là cách gọi trực tiếp và đơn giản nhất của Tika từ Java, và nó tuân theo mẫu thiết kế mặt tiền. Bạn có thể tìm thấy lớp mặt tiền Tika trong gói org.apache.tika của API Tika.
Bằng cách triển khai các trường hợp sử dụng cơ bản, Tika hoạt động như một nhà môi giới cảnh quan. Nó tóm tắt sự phức tạp cơ bản của thư viện Tika như cơ chế phát hiện MIME, giao diện phân tích cú pháp và cơ chế phát hiện ngôn ngữ, đồng thời cung cấp cho người dùng một giao diện đơn giản để sử dụng.
Đặc điểm của Tika
Unified parser Interface- Tika đóng gói tất cả các thư viện trình phân tích cú pháp của bên thứ ba trong một giao diện trình phân tích cú pháp duy nhất. Do tính năng này, người dùng thoát khỏi gánh nặng của việc chọn thư viện phân tích cú pháp phù hợp và sử dụng nó theo loại tệp gặp phải.
Low memory usage- Tika tiêu tốn ít tài nguyên bộ nhớ hơn nên có thể dễ dàng nhúng vào các ứng dụng Java. Chúng tôi cũng có thể sử dụng Tika trong ứng dụng chạy trên các nền tảng có ít tài nguyên hơn như PDA di động.
Fast processing - Có thể phát hiện và trích xuất nội dung nhanh chóng từ các ứng dụng.
Flexible metadata - Tika hiểu tất cả các mô hình siêu dữ liệu được sử dụng để mô tả tệp.
Parser integration - Tika có thể sử dụng các thư viện phân tích cú pháp khác nhau có sẵn cho từng loại tài liệu trong một ứng dụng duy nhất.
MIME type detection - Tika có thể phát hiện và trích xuất nội dung từ tất cả các loại phương tiện có trong tiêu chuẩn MIME.
Language detection - Tika bao gồm tính năng nhận dạng ngôn ngữ, do đó có thể được sử dụng trong các tài liệu dựa trên loại ngôn ngữ trong một trang web đa ngôn ngữ.
Chức năng của Tika
Tika hỗ trợ các chức năng khác nhau -
- Phát hiện loại tài liệu
- Trích xuất nội dung
- Trích xuất siêu dữ liệu
- Phát hiện ngôn ngữ
Phát hiện loại tài liệu
Tika sử dụng các kỹ thuật phát hiện khác nhau và phát hiện loại tài liệu được cấp cho nó.
Trích xuất nội dung
Tika có một thư viện phân tích cú pháp có thể phân tích nội dung của nhiều định dạng tài liệu khác nhau và trích xuất chúng. Sau khi phát hiện loại tài liệu, nó chọn trình phân tích cú pháp thích hợp từ kho trình phân tích cú pháp và chuyển tài liệu. Các lớp khác nhau của Tika có các phương thức phân tích cú pháp các định dạng tài liệu khác nhau.
Trích xuất siêu dữ liệu
Cùng với nội dung, Tika trích xuất siêu dữ liệu của tài liệu với quy trình tương tự như trong trích xuất nội dung. Đối với một số loại tài liệu, Tika có các lớp để trích xuất siêu dữ liệu.
Language Detection
Internally, Tika follows algorithms like n-gram to detect the language of the content in a given document. Tika depends on classes like Languageidentifier and Profiler for language identification.
This chapter takes you through the process of setting up Apache Tika on Windows and Linux. User administration is needed while installing the Apache Tika.
System Requirements
JDK | Java SE 2 JDK 1.6 or above |
Memory | 1 GB RAM (recommeneded) |
Disk Space | No minimum requirement |
Operating System Version | Windows XP or above, Linux |
Step 1: Verifying Java Installation
To verify Java installation, open the console and execute the following java command.
OS | Task | Command |
---|---|---|
Windows | Open command console | \>java –version |
Linux | Open command terminal | $java –version |
If Java has been installed properly on your system, then you should get one of the following outputs, depending on the platform you are working on.
OS | Output |
---|---|
Windows | Java version "1.7.0_60"
Java (TM) SE Run Time Environment (build 1.7.0_60-b19) Java Hotspot (TM) 64-bit Server VM (build 24.60-b09, mixed mode) |
Lunix | java version "1.7.0_25" Open JDK Runtime Environment (rhel-2.3.10.4.el6_4-x86_64) Open JDK 64-Bit Server VM (build 23.7-b01, mixed mode) |
We assume the readers of this tutorial have Java 1.7.0_60 installed on their system before proceeding for this tutorial.
In case you do not have Java SDK, download its current version from https://www.oracle.com/technetwork/java/javase/downloads/index.html and have it installed.
Step 2: Setting Java Environment
Set the JAVA_HOME environment variable to point to the base directory location where Java is installed on your machine. For example,
OS | Output |
---|---|
Windows | Set Environmental variable JAVA_HOME to C:\ProgramFiles\java\jdk1.7.0_60 |
Linux | export JAVA_HOME = /usr/local/java-current |
Append the full path of the Java compiler location to the System Path.
OS | Output |
---|---|
Windows | Append the String; C:\Program Files\Java\jdk1.7.0_60\bin to the end of the system variable PATH. |
Linux | export PATH = $PATH:$JAVA_HOME/bin/ |
Verify the command java-version from command prompt as explained above.
Step 3: Setting up Apache Tika Environment
Programmers can integrate Apache Tika in their environment by using
- Command line,
- Tika API,
- Command line interface (CLI) of Tika,
- Graphical User interface (GUI) of Tika, or
- the source code.
For any of these approaches, first of all, you have to download the source code of Tika.
You will find the source code of Tika at https://Tika.apache.org/download.html, where you will find two links −
apache-tika-1.6-src.zip − It contains the source code of Tika, and
Tika -app-1.6.jar − It is a jar file that contains the Tika application.
Download these two files. A snapshot of the official website of Tika is shown below.
After downloading the files, set the classpath for the jar file tika-app-1.6.jar. Add the complete path of the jar file as shown in the table below.
OS | Output |
---|---|
Windows | Append the String “C:\jars\Tika-app-1.6.jar” to the user environment variable CLASSPATH |
Linux | Export CLASSPATH = $CLASSPATH − /usr/share/jars/Tika-app-1.6.tar − |
Apache provides Tika application, a Graphical User Interface (GUI) application using Eclipse.
Tika-Maven Build using Eclipse
Open eclipse and create a new project.
If you do not having Maven in your Eclipse, set it up by following the given steps.
Open thelink https://wiki.eclipse.org/M2E_updatesite_and_gittags. There you will find the m2e plugin releases in a tabular format
Pick the latest version and save the path of the url in p2 url column.
Now revisit eclipse, in the menu bar, click Help, and choose Install New Software from the dropdown menu
Click the Add button, type any desired name, as it is optional. Now paste the saved url in the Location field.
A new plugin will be added with the name you have chosen in the previous step, check the checkbox in front of it, and click Next.
Proceed with the installation. Once completed, restart the Eclipse.
Now right click on the project, and in the configure option, select convert to maven project.
A new wizard for creating a new pom appears. Enter the Group Id as org.apache.tika, enter the latest version of Tika, select the packaging as jar, and click Finish.
The Maven project is successfully installed, and your project is converted into Maven. Now you have to configure the pom.xml file.
Configure the XML File
Get the Tika maven dependency fromhttps://mvnrepository.com/artifact/org.apache.tika
Shown below is the complete Maven dependency of 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>
Users can embed Tika in their applications using the Tika facade class. It has methods to explore all the functionalities of Tika. Since it is a facade class, Tika abstracts the complexity behind its functions. In addition to this, users can also use the various classes of Tika in their applications.
Tika Class (facade)
This is the most prominent class of the Tika library and follows the facade design pattern. Therefore, it abstracts all the internal implementations and provides simple methods to access the Tika functionalities. The following table lists the constructors of this class along with their descriptions.
package − org.apache.tika
class − Tika
Sr.No. | Constructor & Description |
---|---|
1 | Tika () Uses default configuration and constructs the Tika class. |
2 | Tika (Detector detector) Creates a Tika facade by accepting the detector instance as parameter |
3 | Tika (Detector detector, Parser parser) Creates a Tika facade by accepting the detector and parser instances as parameters. |
4 | Tika (Detector detector, Parser parser, Translator translator) Creates a Tika facade by accepting the detector, the parser, and the translator instance as parameters. |
5 | Tika (TikaConfig config) Creates a Tika facade by accepting the object of the TikaConfig class as parameter. |
Methods and Description
The following are the important methods of Tika facade class −
Sr.No. | Methods & Description |
---|---|
1 | parseToString (File file) This method and all its variants parses the file passed as parameter and returns the extracted text content in the String format. By default, the length of this string parameter is limited. |
2 | int getMaxStringLength () Returns the maximum length of strings returned by the parseToString methods. |
3 | void setMaxStringLength (int maxStringLength) Sets the maximum length of strings returned by the parseToString methods. |
4 | Reader parse (File file) This method and all its variants parses the file passed as parameter and returns the extracted text content in the form of java.io.reader object. |
5 | String detect (InputStream stream, Metadata metadata) This method and all its variants accepts an InputStream object and a Metadata object as parameters, detects the type of the given document, and returns the document type name as String object. This method abstracts the detection mechanisms used by Tika. |
6 | String translate (InputStream text, String targetLanguage) This method and all its variants accepts the InputStream object and a String representing the language that we want our text to be translated, and translates the given text to the desired language, attempting to auto-detect the source language. |
Parser Interface
This is the interface that is implemented by all the parser classes of Tika package.
package − org.apache.tika.parser
Interface − Parser
Methods and Description
The following is the important method of Tika Parser interface −
Sr.No. | Methods & Description |
---|---|
1 | parse (InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context) This method parses the given document into a sequence of XHTML and SAX events. After parsing, it places the extracted document content in the object of the ContentHandler class and the metadata in the object of the Metadata class. |
Metadata Class
This class implements various interfaces such as CreativeCommons, Geographic, HttpHeaders, Message, MSOffice, ClimateForcast, TIFF, TikaMetadataKeys, TikaMimeKeys, Serializable to support various data models. The following tables list the constructors and methods of this class along with their descriptions.
package − org.apache.tika.metadata
class − Metadata
Sr.No. | Constructor & Description |
---|---|
1 | Metadata() Constructs a new, empty metadata. |
Sr.No. | Methods & Description |
---|---|
1 | add (Property property, String value) Adds a metadata property/value mapping to a given document. Using this function, we can set the value to a property. |
2 | add (String name, String value) Adds a metadata property/value mapping to a given document. Using this method, we can set a new name value to the existing metadata of a document. |
3 | String get (Property property) Returns the value (if any) of the metadata property given. |
4 | String get (String name) Returns the value (if any) of the metadata name given. |
5 | Date getDate (Property property) Returns the value of Date metadata property. |
6 | String[] getValues (Property property) Returns all the values of a metadata property. |
7 | String[] getValues (String name) Returns all the values of a given metadata name. |
8 | String[] names() Returns all the names of metadata elements in a metadata object. |
9 | set (Property property, Date date) Sets the date value of the given metadata property |
10 | set(Property property, String[] values) Sets multiple values to a metadata property. |
Language Identifier Class
This class identifies the language of the given content. The following tables list the constructors of this class along with their descriptions.
package − org.apache.tika.language
class − Language Identifier
Sr.No. | Constructor & Description |
---|---|
1 | LanguageIdentifier (LanguageProfile profile) Instantiates the language identifier. Here you have to pass a LanguageProfile object as parameter. |
2 | LanguageIdentifier (String content) This constructor can instantiate a language identifier by passing on a String from text content. |
Sr.No. | Methods & Description |
---|---|
1 | String getLanguage () Returns the language given to the current LanguageIdentifier object. |
File Formats Supported by Tika
The following table shows the file formats Tika supports.
File format | Package Library | Class in Tika |
---|---|---|
XML | org.apache.tika.parser.xml | XMLParser |
HTML | org.apache.tika.parser.html and it uses Tagsoup Library | HtmlParser |
MS-Office compound document Ole2 till 2007 ooxml 2007 onwards | org.apache.tika.parser.microsoft org.apache.tika.parser.microsoft.ooxml and it uses Apache Poi library |
OfficeParser(ole2) OOXMLParser (ooxml) |
OpenDocument Format openoffice | org.apache.tika.parser.odf | OpenOfficeParser |
portable Document Format(PDF) | org.apache.tika.parser.pdf and this package uses Apache PdfBox library | PDFParser |
Electronic Publication Format (digital books) | org.apache.tika.parser.epub | EpubParser |
Rich Text format | org.apache.tika.parser.rtf | RTFParser |
Compression and packaging formats | org.apache.tika.parser.pkg and this package uses Common compress library | PackageParser and CompressorParser and its sub-classes |
Text format | org.apache.tika.parser.txt | TXTParser |
Feed and syndication formats | org.apache.tika.parser.feed | FeedParser |
Audio formats | org.apache.tika.parser.audio and org.apache.tika.parser.mp3 | AudioParser MidiParser Mp3- for mp3parser |
Imageparsers | org.apache.tika.parser.jpeg | JpegParser-for jpeg images |
Videoformats | org.apache.tika.parser.mp4 and org.apache.tika.parser.video this parser internally uses Simple Algorithm to parse flash video formats | Mp4parser FlvParser |
java class files and jar files | org.apache.tika.parser.asm | ClassParser CompressorParser |
Mobxformat (email messages) | org.apache.tika.parser.mbox | MobXParser |
Cad formats | org.apache.tika.parser.dwg | DWGParser |
FontFormats | org.apache.tika.parser.font | TrueTypeParser |
executable programs and libraries | org.apache.tika.parser.executable | ExecutableParser |
MIME Standards
Multipurpose Internet Mail Extensions (MIME) standards are the best available standards for identifying document types. The knowledge of these standards helps the browser during internal interactions.
Whenever the browser encounters a media file, it chooses a compatible software available with it to display its contents. In case it does not have any suitable application to run a particular media file, it recommends the user to get the suitable plugin software for it.
Type Detection in Tika
Tika supports all the Internet media document types provided in MIME. Whenever a file is passed through Tika, it detects the file and its document type. To detect media types, Tika internally uses the following mechanisms.
File Extensions
Checking the file extensions is the simplest and most-widely used method to detect the format of a file. Many applications and operating systems provide support for these extensions. Shown below are the extension of a few known file types.
File name | Extention |
---|---|
image | .jpg |
audio | .mp3 |
java archive file | .jar |
java class file | .class |
Content-type Hints
Whenever you retrieve a file from a database or attach it to another document, you may lose the file’s name or extension. In such cases, the metadata supplied with the file is used to detect the file extension.
Magic Byte
Observing the raw bytes of a file, you can find some unique character patterns for each file. Some files have special byte prefixes called magic bytes that are specially made and included in a file for the purpose of identifying the file type
For example, you can find CA FE BA BE (hexadecimal format) in a java file and %PDF (ASCII format) in a pdf file. Tika uses this information to identify the media type of a file.
Character Encodings
Files with plain text are encoded using different types of character encoding. The main challenge here is to identify the type of character encoding used in the files. Tika follows character encoding techniques like Bom markers and Byte Frequencies to identify the encoding system used by the plain text content.
XML Root Characters
To detect XML documents, Tika parses the xml documents and extracts the information such as root elements, namespaces, and referenced schemas from where the true media type of the files can be found.
Type Detection using Facade Class
The detect() method of facade class is used to detect the document type. This method accepts a file as input. Shown below is an example program for document type detection with Tika facade class.
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);
}
}
Save the above code as TypeDetection.java and run it from the command prompt using the following commands −
javac TypeDetection.java
java TypeDetection
audio/mpeg
Tika uses various parser libraries to extract content from given parsers. It chooses the right parser for extracting the given document type.
For parsing documents, the parseToString() method of Tika facade class is generally used. Shown below are the steps involved in the parsing process and these are abstracted by the Tika ParsertoString() method.
Abstracting the parsing process −
Initially when we pass a document to Tika, it uses a suitable type detection mechanism available with it and detects the document type.
Once the document type is known, it chooses a suitable parser from its parser repository. The parser repository contains classes that make use of external libraries.
Then the document is passed to choose the parser which will parse the content, extract the text, and also throw exceptions for unreadable formats.
Content Extraction using Tika
Given below is the program for extracting text from a file using Tika facade class −
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);
}
}
Save the above code as TikaExtraction.java and run it from the command prompt −
javac TikaExtraction.java
java TikaExtraction
Given below is the content of sample.txt.
Hi students welcome to tutorialspoint
It gives you the following output −
Extracted Content: Hi students welcome to tutorialspoint
Content Extraction using Parser Interface
The parser package of Tika provides several interfaces and classes using which we can parse a text document. Given below is the block diagram of the org.apache.tika.parser package.
There are several parser classes available, e.g., pdf parser, Mp3Passer, OfficeParser, etc., to parse respective documents individually. All these classes implement the parser interface.
CompositeParser
The given diagram shows Tika’s general-purpose parser classes: CompositeParser and AutoDetectParser. Since the CompositeParser class follows composite design pattern, you can use a group of parser instances as a single parser. The CompositeParser class also allows access to all the classes that implement the parser interface.
AutoDetectParser
This is a subclass of CompositeParser and it provides automatic type detection. Using this functionality, the AutoDetectParser automatically sends the incoming documents to the appropriate parser classes using the composite methodology.
parse() method
Along with parseToString(), you can also use the parse() method of the parser Interface. The prototype of this method is shown below.
parse(InputStream stream, ContentHandler handler, Metadata metadata, ParseContext context)
The following table lists the four objects it accepts as parameters.
Sr.No. | Object & Description |
---|---|
1 | InputStream stream Any Inputstream object that contains the content of the file |
2 | ContentHandler handler Tika passes the document as XHTML content to this handler, thereafter the document is processed using SAX API. It provides efficient postprocessing of the contents in a document. |
3 | Metadata metadata The metadata object is used both as a source and a target of document metadata. |
4 | ParseContext context This object is used in cases where the client application wants to customize the parsing process. |
Example
Given below is an example that shows how the parse() method is used.
Step 1 −
To use the parse() method of the parser interface, instantiate any of the classes providing the implementation for this interface.
There are individual parser classes such as PDFParser, OfficeParser, XMLParser, etc. You can use any of these individual document parsers. Alternatively, you can use either CompositeParser or AutoDetectParser that uses all the parser classes internally and extracts the contents of a document using a suitable parser.
Parser parser = new AutoDetectParser();
(or)
Parser parser = new CompositeParser();
(or)
object of any individual parsers given in Tika Library
Step 2 −
Create a handler class object. Given below are the three content handlers −
Sr.No. | Class & Description |
---|---|
1 | BodyContentHandler This class picks the body part of the XHTML output and writes that content to the output writer or output stream. Then it redirects the XHTML content to another content handler instance. |
2 | LinkContentHandler This class detects and picks all the H-Ref tags of the XHTML document and forwards those for the use of tools like web crawlers. |
3 | TeeContentHandler This class helps in using multiple tools simultaneously. |
Since our target is to extract the text contents from a document, instantiate BodyContentHandler as shown below −
BodyContentHandler handler = new BodyContentHandler( );
Step 3 −
Create the Metadata object as shown below −
Metadata metadata = new Metadata();
Step 4 −
Create any of the input stream objects, and pass your file that should be extracted to it.
FileInputstream
Instantiate a file object by passing the file path as parameter and pass this object to the FileInputStream class constructor.
Note − The path passed to the file object should not contain spaces.
The problem with these input stream classes is that they don’t support random access reads, which is required to process some file formats efficiently. To resolve this problem, Tika provides TikaInputStream.
File file = new File(filepath)
FileInputStream inputstream = new FileInputStream(file);
(or)
InputStream stream = TikaInputStream.get(new File(filename));
Step 5 −
Create a parse context object as shown below −
ParseContext context =new ParseContext();
Step 6 −
Instantiate the parser object, invoke the parse method, and pass all the objects required, as shown in the prototype below −
parser.parse(inputstream, handler, metadata, context);
Given below is the program for content extraction using the parser interface −
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());
}
}
Save the above code as ParserExtraction.java and run it from the command prompt −
javac ParserExtraction.java
java ParserExtraction
Given below is the content of sample.txt
Hi students welcome to tutorialspoint
If you execute the above program, it will give you the following output −
File content : Hi students welcome to tutorialspoint
Besides content, Tika also extracts the metadata from a file. Metadata is nothing but the additional information supplied with a file. If we consider an audio file, the artist name, album name, title comes under metadata.
XMP Standards
The Extensible Metadata Platform (XMP) is a standard for processing and storing information related to the content of a file. It was created by Adobe Systems Inc. XMP provides standards for defining, creating, and processing of metadata. You can embed this standard into several file formats such as PDF, JPEG, JPEG, GIF, jpg, HTML etc.
Property Class
Tika uses the Property class to follow XMP property definition. It provides the PropertyType and ValueType enums to capture the name and value of a metadata.
Metadata Class
This class implements various interfaces such as ClimateForcast, CativeCommons, Geographic, TIFF etc. to provide support for various metadata models. In addition, this class provides various methods to extract the content from a file.
Metadata Names
We can extract the list of all metadata names of a file from its metadata object using the method names(). It returns all the names as a string array. Using the name of the metadata, we can get the value using the get() method. It takes a metadata name and returns a value associated with it.
String[] metadaNames = metadata.names();
String value = metadata.get(name);
Extracting Metadata using Parse Method
Whenever we parse a file using parse(), we pass an empty metadata object as one of the parameters. This method extracts the metadata of the given file (if that file contains any), and places them in the metadata object. Therefore, after parsing the file using parse(), we can extract the metadata from that object.
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();
Given below is the complete program to extract metadata from a text file.
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));
}
}
}
Save the above code as GetMetadata.java and run it from the command prompt using the following commands −
javac GetMetadata .java
java GetMetadata
Given below is the snapshot of boy.jpg
If you execute the above program, it will give you the following output −
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
We can also get our desired metadata values.
Adding New Metadata Values
We can add new metadata values using the add() method of the metadata class. Given below is the syntax of this method. Here we are adding the author name.
metadata.add(“author”,”Tutorials point”);
The Metadata class has predefined properties including the properties inherited from classes like ClimateForcast, CativeCommons, Geographic, etc., to support various data models. Shown below is the usage of the SOFTWARE data type inherited from the TIFF interface implemented by Tika to follow XMP metadata standards for TIFF image formats.
metadata.add(Metadata.SOFTWARE,"ms paint");
Given below is the complete program that demonstrates how to add metadata values to a given file. Here the list of the metadata elements is displayed in the output so that you can observe the change in the list after adding new values.
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()));
}
}
Lưu đoạn mã trên dưới dạng lớp AddMetadata.java và chạy nó từ dấu nhắc lệnh -
javac AddMetadata .java
java AddMetadata
Dưới đây là nội dung của Example.txt
Hi students welcome to tutorialspoint
Nếu bạn thực hiện chương trình trên, nó sẽ cung cấp cho bạn kết quả sau:
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]
Đặt giá trị cho các phần tử siêu dữ liệu hiện có
Bạn có thể đặt giá trị cho các phần tử siêu dữ liệu hiện có bằng phương thức set (). Cú pháp của việc đặt thuộc tính date bằng phương thức set () như sau:
metadata.set(Metadata.DATE, new Date());
Bạn cũng có thể đặt nhiều giá trị cho các thuộc tính bằng cách sử dụng phương thức set (). Cú pháp của việc đặt nhiều giá trị cho thuộc tính Author bằng phương thức set () như sau:
metadata.set(Metadata.AUTHOR, "ram ,raheem ,robin ");
Dưới đây là chương trình hoàn chỉnh trình bày phương thức 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));
}
}
}
Lưu đoạn mã trên dưới dạng SetMetadata.java và chạy nó từ dấu nhắc lệnh -
javac SetMetadata.java
java SetMetadata
Dưới đây là nội dung của example.txt.
Hi students welcome to tutorialspoint
Nếu bạn thực hiện chương trình trên, nó sẽ cung cấp cho bạn kết quả sau. Trong đầu ra, bạn có thể quan sát các phần tử siêu dữ liệu mới được thêm vào.
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
Cần phát hiện ngôn ngữ
Để phân loại tài liệu dựa trên ngôn ngữ mà chúng được viết trên một trang web đa ngôn ngữ, cần có một công cụ phát hiện ngôn ngữ. Công cụ này phải chấp nhận các tài liệu không có chú thích ngôn ngữ (siêu dữ liệu) và thêm thông tin đó vào siêu dữ liệu của tài liệu bằng cách phát hiện ngôn ngữ.
Các thuật toán cho hồ sơ Corpus
Corpus là gì?
Để phát hiện ngôn ngữ của tài liệu, cấu hình ngôn ngữ được xây dựng và so sánh với cấu hình của các ngôn ngữ đã biết. Tập văn bản của những ngôn ngữ đã biết này được gọi làcorpus.
Ngữ liệu là một tập hợp các văn bản của một ngôn ngữ viết giải thích cách ngôn ngữ đó được sử dụng trong các tình huống thực tế.
Kho ngữ liệu được phát triển từ sách, bảng điểm và các nguồn dữ liệu khác như Internet. Độ chính xác của kho tài liệu phụ thuộc vào thuật toán lập hồ sơ mà chúng tôi sử dụng để tạo khung cho kho tài liệu.
Thuật toán lập hồ sơ là gì?
Cách phổ biến để phát hiện ngôn ngữ là sử dụng từ điển. Các từ được sử dụng trong một đoạn văn bản nhất định sẽ được khớp với những từ có trong từ điển.
Danh sách các từ phổ biến được sử dụng trong một ngôn ngữ sẽ là kho ngữ liệu đơn giản và hiệu quả nhất để phát hiện một ngôn ngữ cụ thể, ví dụ: các bài báo a, an, the bằng tiếng Anh.
Sử dụng Word Sets làm Corpus
Sử dụng tập hợp từ, một thuật toán đơn giản được đóng khung để tìm khoảng cách giữa hai kho ngữ liệu, sẽ bằng tổng chênh lệch giữa các tần số của các từ phù hợp.
Các thuật toán như vậy mắc phải các vấn đề sau:
Vì tần suất so khớp các từ là rất ít nên thuật toán không thể hoạt động hiệu quả với các văn bản nhỏ có ít câu. Nó cần rất nhiều văn bản để khớp chính xác.
Nó không thể phát hiện ranh giới từ đối với các ngôn ngữ có câu ghép và những ngôn ngữ không có ngăn cách từ như dấu cách hoặc dấu chấm câu.
Do những khó khăn này trong việc sử dụng bộ từ làm ngữ liệu, các ký tự riêng lẻ hoặc nhóm ký tự được xem xét.
Sử dụng Bộ ký tự làm Corpus
Vì các ký tự thường được sử dụng trong một ngôn ngữ có số lượng hữu hạn, nên dễ dàng áp dụng một thuật toán dựa trên tần số từ chứ không phải ký tự. Thuật toán này thậm chí còn hoạt động tốt hơn trong trường hợp một số bộ ký tự nhất định được sử dụng trong một hoặc rất ít ngôn ngữ.
Thuật toán này có những nhược điểm sau:
Rất khó để phân biệt hai ngôn ngữ có tần số ký tự giống nhau.
Không có công cụ hoặc thuật toán cụ thể nào để xác định cụ thể một ngôn ngữ với sự trợ giúp của (dưới dạng ngữ liệu) bộ ký tự được sử dụng bởi nhiều ngôn ngữ.
Thuật toán N-gram
Những hạn chế được nêu ở trên đã dẫn đến một cách tiếp cận mới trong việc sử dụng các chuỗi ký tự có độ dài nhất định cho kho ngữ liệu định hình. Nói chung, dãy ký tự như vậy được gọi là N-gram, trong đó N đại diện cho độ dài của dãy ký tự.
Thuật toán N-gram là một cách tiếp cận hiệu quả để phát hiện ngôn ngữ, đặc biệt trong trường hợp các ngôn ngữ châu Âu như tiếng Anh.
Thuật toán này hoạt động tốt với các văn bản ngắn.
Mặc dù có các thuật toán cấu hình ngôn ngữ nâng cao để phát hiện nhiều ngôn ngữ trong một tài liệu đa ngôn ngữ có nhiều tính năng hấp dẫn hơn, Tika sử dụng thuật toán 3 gam, vì nó phù hợp trong hầu hết các tình huống thực tế.
Phát hiện ngôn ngữ trong Tika
Trong số tất cả 184 ngôn ngữ tiêu chuẩn được tiêu chuẩn hóa bởi ISO 639-1, Tika có thể phát hiện 18 ngôn ngữ. Phát hiện ngôn ngữ trong Tika được thực hiện bằng cách sử dụnggetLanguage() phương pháp của LanguageIdentifierlớp học. Phương thức này trả về tên mã của ngôn ngữ ở định dạng Chuỗi. Dưới đây là danh sách 18 cặp mã ngôn ngữ được phát hiện bởi Tika -
da — tiếng Đan Mạch | de — tiếng Đức | et — tiếng Estonia | el — tiếng Hy Lạp |
vi — tiếng Anh | es — tiếng Tây Ban Nha | fi — tiếng Phần Lan | fr — tiếng Pháp |
hu — tiếng Hungary | là — tiếng Iceland | nó — tiếng Ý | nl — tiếng Hà Lan |
không — tiếng Na Uy | pl — tiếng Ba Lan | pt — tiếng Bồ Đào Nha | ru — tiếng Nga |
sv — tiếng Thụy Điển | th — Thái |
Trong khi khởi tạo LanguageIdentifier , bạn nên chuyển định dạng Chuỗi của nội dung được trích xuất, hoặc LanguageProfile đối tượng lớp.
LanguageIdentifier object = new LanguageIdentifier(“this is english”);
Dưới đây là chương trình ví dụ để phát hiện ngôn ngữ trong 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);
}
}
Lưu mã trên dưới dạng LanguageDetection.java và chạy nó từ dấu nhắc lệnh bằng các lệnh sau:
javac LanguageDetection.java
java LanguageDetection
Nếu bạn thực hiện chương trình trên, nó sẽ đưa ra kết quả sau
Language of the given content is : en
Phát hiện ngôn ngữ của tài liệu
Để phát hiện ngôn ngữ của một tài liệu nhất định, bạn phải phân tích cú pháp nó bằng phương thức parse (). Phương thức parse () phân tích cú pháp nội dung và lưu trữ nội dung đó trong đối tượng trình xử lý, được truyền cho nó dưới dạng một trong các đối số. Truyền định dạng Chuỗi của đối tượng trình xử lý tới hàm tạo củaLanguageIdentifier lớp như hình dưới đây -
parser.parse(inputstream, handler, metadata, context);
LanguageIdentifier object = new LanguageIdentifier(handler.toString());
Dưới đây là chương trình hoàn chỉnh trình bày cách phát hiện ngôn ngữ của một tài liệu nhất định -
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());
}
}
Lưu đoạn mã trên dưới dạng SetMetadata.java và chạy nó từ dấu nhắc lệnh -
javac SetMetadata.java
java SetMetadata
Dưới đây là nội dung của Example.txt.
Hi students welcome to tutorialspoint
Nếu bạn thực hiện chương trình trên, nó sẽ cung cấp cho bạn kết quả sau:
Language name :en
Cùng với lọ Tika, Tika cung cấp ứng dụng Giao diện người dùng đồ họa (GUI) và ứng dụng Giao diện dòng lệnh (CLI). Bạn cũng có thể thực thi một ứng dụng Tika từ dấu nhắc lệnh giống như các ứng dụng Java khác.
Giao diện người dùng đồ họa (GUI)
Tika cung cấp một tệp jar cùng với mã nguồn của nó trong liên kết sau https://tika.apache.org/download.html.
Tải xuống cả hai tệp, đặt classpath cho tệp jar.
Giải nén thư mục zip mã nguồn, mở thư mục tika-app.
Trong thư mục được giải nén tại “tika-1.6 \ tika-app \ src \ main \ java \ org \ apache \ Tika \ gui”, bạn sẽ thấy hai tệp lớp: ParsingTransferHandler.java và TikaGUI.java.
Biên dịch cả hai tệp lớp và thực thi tệp lớp TikaGUI.java, nó sẽ mở ra cửa sổ sau.
Bây giờ chúng ta hãy xem cách sử dụng Tika GUI.
Trên GUI, bấm mở, duyệt và chọn tệp sẽ được giải nén hoặc kéo tệp đó vào khoảng trắng của cửa sổ.
Tika trích xuất nội dung của các tệp và hiển thị nó ở năm định dạng khác nhau, viz. siêu dữ liệu, văn bản được định dạng, văn bản thuần túy, nội dung chính và văn bản có cấu trúc. Bạn có thể chọn bất kỳ định dạng nào bạn muốn.
Theo cách tương tự, bạn cũng sẽ tìm thấy lớp CLI trong thư mục “tika-1.6 \ tikaapp \ src \ main \ java \ org \ apache \ tika \ cli”.
Hình minh họa sau đây cho thấy những gì Tika có thể làm. Khi chúng tôi thả hình ảnh trên GUI, Tika sẽ trích xuất và hiển thị siêu dữ liệu của nó.
Dưới đây là chương trình trích xuất nội dung và siêu dữ liệu từ một tệp 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));
}
}
}
Lưu mã trên dưới dạng PdfParse.javavà biên dịch nó từ dấu nhắc lệnh bằng cách sử dụng các lệnh sau:
javac PdfParse.java
java PdfParse
Dưới đây là ảnh chụp nhanh của example.pdf
PDF chúng tôi đang chuyển có các thuộc tính sau:
Sau khi biên dịch chương trình, bạn sẽ nhận được kết quả như hình dưới đây.
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
Dưới đây là chương trình trích xuất nội dung và siêu dữ liệu từ Định dạng Tài liệu Văn phòng Mở (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));
}
}
}
Lưu mã trên dưới dạng OpenDocumentParse.javavà biên dịch nó trong dấu nhắc lệnh bằng cách sử dụng các lệnh sau:
javac OpenDocumentParse.java
java OpenDocumentParse
Dưới đây là ảnh chụp nhanh của tệp example_open_document_presentation.odp.
Tài liệu này có các thuộc tính sau:
Sau khi biên dịch chương trình, bạn sẽ nhận được kết quả sau.
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
Dưới đây là chương trình trích xuất nội dung và siêu dữ liệu từ Tài liệu 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));
}
}
}
Lưu mã trên dưới dạng MSExelParse.javavà biên dịch nó từ dấu nhắc lệnh bằng cách sử dụng các lệnh sau:
javac MSExcelParse.java
java MSExcelParse
Ở đây chúng tôi đang chuyển tệp Excel mẫu sau.
Tệp Excel đã cho có các thuộc tính sau:
Sau khi thực hiện chương trình trên, bạn sẽ nhận được kết quả sau.
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
Dưới đây là chương trình trích xuất nội dung và siêu dữ liệu từ tài liệu Văn bản -
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));
}
}
}
Lưu mã trên dưới dạng TextParser.javavà biên dịch nó từ dấu nhắc lệnh bằng cách sử dụng các lệnh sau:
javac TextParser.java
java TextParser
Dưới đây là ảnh chụp nhanh của tệp sample.txt -
Tài liệu văn bản có các thuộc tính sau:
Nếu bạn thực hiện chương trình trên, nó sẽ cung cấp cho bạn kết quả sau.
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
Dưới đây là chương trình trích xuất nội dung và siêu dữ liệu từ một tài liệu 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));
}
}
}
Lưu mã trên dưới dạng HtmlParse.javavà biên dịch nó từ dấu nhắc lệnh bằng cách sử dụng các lệnh sau:
javac HtmlParse.java
java HtmlParse
Dưới đây là ảnh chụp nhanh của tệp example.txt.
Tài liệu HTML có các thuộc tính sau
Nếu bạn thực hiện chương trình trên, nó sẽ cung cấp cho bạn kết quả sau.
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
Dưới đây là chương trình trích xuất nội dung và siêu dữ liệu từ một tài liệu 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));
}
}
}
Lưu mã trên dưới dạng XmlParse.javavà biên dịch nó từ dấu nhắc lệnh bằng cách sử dụng các lệnh sau:
javac XmlParse.java
java XmlParse
Dưới đây là ảnh chụp nhanh của tệp example.xml
Tài liệu này có các thuộc tính sau:
Nếu bạn thực hiện chương trình trên, nó sẽ cung cấp cho bạn kết quả sau:
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
Dưới đây là chương trình trích xuất nội dung và siêu dữ liệu từ tệp .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));
}
}
}
Lưu mã trên dưới dạng JavaClassParse.javavà biên dịch nó từ dấu nhắc lệnh bằng cách sử dụng các lệnh sau:
javac JavaClassParse.java
java JavaClassParse
Dưới đây là ảnh chụp nhanh của Example.java sẽ tạo ra lớp Example.class sau khi biên dịch.
Example.class tệp có các thuộc tính sau:
Sau khi thực hiện chương trình trên, bạn sẽ nhận được kết quả sau.
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
Dưới đây là chương trình trích xuất nội dung và siêu dữ liệu từ tệp Lưu trữ Java (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));
}
}
}
Lưu mã trên dưới dạng PackageParse.javavà biên dịch nó từ dấu nhắc lệnh bằng cách sử dụng các lệnh sau:
javac PackageParse.java
java PackageParse
Dưới đây là ảnh chụp nhanh của Example.java nằm bên trong gói.
Tệp jar có các thuộc tính sau:
Sau khi thực hiện chương trình trên, nó sẽ cung cấp cho bạn kết quả sau:
Output -
Contents of the document:
META-INF/MANIFEST.MF
tutorialspoint/tika/examples/Example.class
Metadata of the document:
Content-Type: application/zip
Dưới đây là chương trình trích xuất nội dung và dữ liệu meta từ hình ảnh 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));
}
}
}
Lưu mã trên dưới dạng JpegParse.javavà biên dịch nó từ dấu nhắc lệnh bằng cách sử dụng các lệnh sau:
javac JpegParse.java
java JpegParse
Dưới đây là ảnh chụp nhanh của Example.jpeg -
Tệp JPEG có các thuộc tính sau:
Sau khi thực hiện chương trình, bạn sẽ nhận được kết quả sau.
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
Dưới đây là chương trình trích xuất nội dung và siêu dữ liệu từ các tệp 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));
}
}
}
Lưu đoạn mã trên dưới dạng JpegParse.java và biên dịch nó từ dấu nhắc lệnh bằng cách sử dụng các lệnh sau:
javac Mp4Parse.java
java Mp4Parse
Dưới đây là ảnh chụp nhanh các thuộc tính của tệp Example.mp4.
Sau khi thực hiện chương trình trên, bạn sẽ nhận được kết quả sau:
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
Dưới đây là chương trình trích xuất nội dung và siêu dữ liệu từ các tệp 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));
}
}
}
Lưu mã trên dưới dạng JpegParse.javavà biên dịch nó từ dấu nhắc lệnh bằng cách sử dụng các lệnh sau:
javac Mp3Parse.java
java Mp3Parse
Tệp example.mp3 có các thuộc tính sau:
Bạn sẽ nhận được đầu ra sau khi thực hiện chương trình. Nếu tệp đã cho có bất kỳ lời bài hát nào, ứng dụng của chúng tôi sẽ chụp và hiển thị cùng với kết quả đầu ra.
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