TIKA - Szybki przewodnik

Co to jest Apache Tika?

  • Apache Tika to biblioteka używana do wykrywania typów dokumentów i wyodrębniania treści z różnych formatów plików.

  • Wewnętrznie Tika wykorzystuje istniejące różne parsery dokumentów i techniki wykrywania typów dokumentów do wykrywania i wyodrębniania danych.

  • Korzystając z Tika, można opracować uniwersalny wykrywacz typów i ekstraktor treści, aby wyodrębnić zarówno tekst strukturalny, jak i metadane z różnych typów dokumentów, takich jak arkusze kalkulacyjne, dokumenty tekstowe, obrazy, pliki PDF, a nawet do pewnego stopnia multimedialne formaty wejściowe.

  • Tika zapewnia jeden ogólny interfejs API do analizowania różnych formatów plików. Wykorzystuje istniejące wyspecjalizowane biblioteki parserów dla każdego typu dokumentu.

  • Wszystkie te biblioteki parserów są zamknięte w jednym interfejsie zwanym Parser interface.

Dlaczego Tika?

Według filext.com istnieje około 15 000 do 51 000 typów treści, a liczba ta rośnie z dnia na dzień. Dane są przechowywane w różnych formatach, takich jak dokumenty tekstowe, arkusze kalkulacyjne programu Excel, pliki PDF, obrazy i pliki multimedialne, by wymienić tylko kilka. Dlatego aplikacje takie jak wyszukiwarki i systemy zarządzania treścią wymagają dodatkowego wsparcia w celu łatwego wyodrębniania danych z tych typów dokumentów. Apache Tika służy temu celowi, udostępniając ogólny interfejs API do lokalizowania i wyodrębniania danych z wielu formatów plików.

Aplikacje Apache Tika

Istnieje wiele aplikacji korzystających z Apache Tika. Tutaj omówimy kilka znaczących aplikacji, które w dużym stopniu zależą od Apache Tika.

Wyszukiwarki

Tika jest szeroko stosowana podczas opracowywania wyszukiwarek do indeksowania treści tekstowych dokumentów cyfrowych.

  • Wyszukiwarki to systemy przetwarzania informacji zaprojektowane do wyszukiwania informacji i indeksowanych dokumentów w Internecie.

  • Crawler jest ważnym komponentem wyszukiwarki, która przeszukuje sieć WWW w celu pobrania dokumentów, które mają być indeksowane, przy użyciu określonej techniki indeksowania. Następnie przeszukiwacz przekazuje te indeksowane dokumenty do komponentu wyodrębniania.

  • Obowiązkiem komponentu wyodrębniającego jest wyodrębnienie tekstu i metadanych z dokumentu. Taka wyodrębniona treść i metadane są bardzo przydatne dla wyszukiwarki. Ten składnik ekstrakcji zawiera Tika.

  • Wyodrębniona treść jest następnie przekazywana do indeksatora wyszukiwarki, który używa jej do tworzenia indeksu wyszukiwania. Oprócz tego wyszukiwarka wykorzystuje wyodrębnioną treść również na wiele innych sposobów.

Analiza dokumentów

  • W dziedzinie sztucznej inteligencji istnieją narzędzia do automatycznej analizy dokumentów na poziomie semantycznym i wydobywania z nich wszelkiego rodzaju danych.

  • W takich aplikacjach dokumenty są klasyfikowane na podstawie najważniejszych terminów w wyodrębnionej treści dokumentu.

  • Narzędzia te wykorzystują Tika do wyodrębniania treści w celu analizy różnych dokumentów, od zwykłego tekstu po dokumenty cyfrowe.

Zarządzanie zasobami cyfrowymi

  • Niektóre organizacje zarządzają swoimi zasobami cyfrowymi, takimi jak fotografie, książki elektroniczne, rysunki, muzyka i wideo, za pomocą specjalnej aplikacji znanej jako zarządzanie zasobami cyfrowymi (DAM).

  • Takie aplikacje korzystają z pomocy detektorów typów dokumentów i ekstraktora metadanych do klasyfikowania różnych dokumentów.

Analiza treści

  • Strony internetowe, takie jak Amazon, polecają nowo wydane treści na swoich stronach internetowych indywidualnym użytkownikom zgodnie z ich zainteresowaniami. Aby to zrobić, podążają te witrynymachine learning techniqueslub skorzystaj z pomocy serwisów społecznościowych, takich jak Facebook, aby wyodrębnić wymagane informacje, takie jak upodobania i zainteresowania użytkowników. Zebrane informacje będą miały postać tagów html lub innych formatów, które wymagają dalszego wykrywania i wyodrębniania typu treści.

  • Do analizy treści dokumentu dysponujemy technologiami, które wdrażają techniki uczenia maszynowego, takie jak UIMA i Mahout. Technologie te są przydatne do grupowania i analizowania danych w dokumentach.

  • Apache Mahoutto framework udostępniający algorytmy ML na Apache Hadoop - platformie przetwarzania w chmurze. Mahout zapewnia architekturę, stosując pewne techniki klastrowania i filtrowania. Postępując zgodnie z tą architekturą, programiści mogą pisać własne algorytmy ML, aby tworzyć zalecenia, biorąc różne kombinacje tekstu i metadanych. Aby zapewnić dane wejściowe dla tych algorytmów, najnowsze wersje Mahout używają Tiki do wyodrębniania tekstu i metadanych z zawartości binarnej.

  • Apache UIMAanalizuje i przetwarza różne języki programowania oraz tworzy adnotacje UIMA. Wewnętrznie wykorzystuje Tika Annotator do wyodrębniania tekstu dokumentu i metadanych.

Historia

Rok Rozwój
2006 Pomysł Tiki został przedstawiony przed Komitetem Zarządzającym Projektem Lucene.
2006 Omówiono koncepcję Tika i jej przydatność w projekcie Jackrabbit.
2007 Tika weszła do inkubatora Apache.
2008 Wersje 0.1 i 0.2 zostały wydane, a Tika przeszła z inkubatora do podprojektu Lucene.
2009 Wydano wersje 0.3, 0.4 i 0.5.
2010 Wersje 0.6 i 0.7 zostały wydane, a Tika przeszła do projektu Apache najwyższego poziomu.
2011 Tika 1.0 została wydana, a książka o Tika „Tika in Action” została wydana w tym samym roku.

Architektura Tika na poziomie aplikacji

Programiści aplikacji mogą łatwo zintegrować Tika ze swoimi aplikacjami. Tika zapewnia interfejs wiersza poleceń i GUI, aby był przyjazny dla użytkownika.

W tym rozdziale omówimy cztery ważne moduły, które składają się na architekturę Tika. Poniższa ilustracja przedstawia architekturę Tika wraz z jej czterema modułami -

  • Mechanizm wykrywania języka.
  • Mechanizm wykrywania MIME.
  • Interfejs parsera.
  • Klasa elewacji Tika.

Mechanizm wykrywania języka

Za każdym razem, gdy dokument tekstowy jest przekazywany do Tika, wykryje język, w którym został napisany. Akceptuje dokumenty bez adnotacji językowej i dodaje te informacje do metadanych dokumentu, wykrywając język.

Aby ułatwić identyfikację języka, Tika ma klasę o nazwie Language Identifier w paczce org.apache.tika.languageoraz repozytorium identyfikacji języka, w którym znajdują się algorytmy do wykrywania języka z danego tekstu. Tika wewnętrznie używa algorytmu N-gramowego do wykrywania języka.

Mechanizm wykrywania MIME

Tika może wykryć typ dokumentu zgodnie ze standardami MIME. Domyślne wykrywanie typu MIME w Tika odbywa się za pomocą org.apache.tika.mime.mimeTypes . Używa interfejsu org.apache.tika.detect.Detector do wykrywania większości typów zawartości.

Wewnętrznie Tika używa kilku technik, takich jak pliki globów, wskazówki dotyczące typu zawartości, magiczne bajty, kodowanie znaków i kilka innych technik.

Interfejs parsera

Interfejs parsera org.apache.tika.parser jest kluczowym interfejsem do analizowania dokumentów w Tika. Ten interfejs wyodrębnia tekst i metadane z dokumentu i podsumowuje je dla zewnętrznych użytkowników, którzy chcą pisać wtyczki parsera.

Używając różnych konkretnych klas parsera, specyficznych dla poszczególnych typów dokumentów, Tika obsługuje wiele formatów dokumentów. Te klasy specyficzne dla formatu zapewniają obsługę różnych formatów dokumentów, bezpośrednio implementując logikę parsera lub używając zewnętrznych bibliotek parsera.

Klasa elewacji Tika

Użycie klasy elewacji Tika jest najprostszym i bezpośrednim sposobem wywołania Tiki z języka Java i jest zgodne ze wzorcem projektowym elewacji. Klasę elewacji Tika można znaleźć w pakiecie org.apache.tika API Tika.

Wdrażając podstawowe przypadki użycia, Tika działa jako broker krajobrazu. Wyabstrahuje podstawową złożoność biblioteki Tika, taką jak mechanizm wykrywania MIME, interfejs parsera i mechanizm wykrywania języka, i zapewnia użytkownikom prosty interfejs w użyciu.

Funkcje Tika

  • Unified parser Interface- Tika hermetyzuje wszystkie biblioteki parserów stron trzecich w jednym interfejsie parsera. Dzięki tej funkcji użytkownik nie musi wybierać odpowiedniej biblioteki parsera i używać jej zgodnie z napotkanym typem pliku.

  • Low memory usage- Tika zużywa mniej zasobów pamięci, dlatego można ją łatwo osadzić w aplikacjach Java. Możemy również używać Tiki w aplikacji, która działa na platformach z mniejszą ilością zasobów, takich jak mobilny PDA.

  • Fast processing - Można oczekiwać szybkiego wykrywania treści i ekstrakcji z aplikacji.

  • Flexible metadata - Tika rozumie wszystkie modele metadanych, które są używane do opisywania plików.

  • Parser integration - Tika może używać różnych bibliotek parserów dostępnych dla każdego typu dokumentu w jednej aplikacji.

  • MIME type detection - Tika może wykrywać i wyodrębniać treści ze wszystkich typów mediów objętych standardami MIME.

  • Language detection - Tika zawiera funkcję identyfikacji języka, dzięki czemu może być używana w dokumentach opartych na typie języka na wielojęzycznych stronach internetowych.

Funkcjonalności Tika

Tika obsługuje różne funkcjonalności -

  • Wykrywanie typu dokumentu
  • Ekstrakcja treści
  • Ekstrakcja metadanych
  • Wykrywanie języka

Wykrywanie typu dokumentu

Tika wykorzystuje różne techniki wykrywania i wykrywa rodzaj przekazanego dokumentu.

Ekstrakcja treści

Tika ma bibliotekę parserów, która może analizować zawartość różnych formatów dokumentów i wyodrębniać je. Po wykryciu typu dokumentu wybiera odpowiedni parser z repozytorium parserów i przekazuje dokument. Różne klasy Tika mają metody analizowania różnych formatów dokumentów.

Wyodrębnianie metadanych

Wraz z treścią Tika wyodrębnia metadane dokumentu w taki sam sposób, jak przy wyodrębnianiu treści. W przypadku niektórych typów dokumentów Tika ma klasy do wyodrębniania metadanych.

Wykrywanie języka

Wewnętrznie Tika stosuje algorytmy, takie jak n-gramdo wykrywania języka treści w danym dokumencie. Tika zależy od klas, takich jakLanguageidentifier i Profiler do identyfikacji języka.

W tym rozdziale omówiono proces konfiguracji Apache Tika w systemach Windows i Linux. Administracja użytkownikami jest potrzebna podczas instalacji Apache Tika.

wymagania systemowe

JDK Java SE 2 JDK 1.6 lub nowsza
Pamięć 1 GB RAM (zalecane)
Miejsca na dysku Brak minimalnych wymagań
Wersja systemu operacyjnego Windows XP lub nowszy, Linux

Krok 1: weryfikacja instalacji Java

Aby zweryfikować instalację Java, otwórz konsolę i wykonaj następujące czynności java Komenda.

OS Zadanie Komenda
Windows Otwórz konsolę poleceń \> java - wersja
Linux Otwórz terminal poleceń $ java - wersja

Jeśli Java została poprawnie zainstalowana w twoim systemie, powinieneś otrzymać jedno z poniższych danych wyjściowych, w zależności od platformy, na której pracujesz.

OS Wynik
Windows

Wersja Java „1.7.0_60”

Środowisko wykonawcze Java (TM) SE (kompilacja 1.7.0_60-b19)

Java Hotspot (TM) 64-bitowa maszyna wirtualna serwera (wersja 24.60-b09, tryb mieszany)

Lunix

wersja java „1.7.0_25”

Otwórz środowisko wykonawcze JDK (rhel-2.3.10.4.el6_4-x86_64)

Otwórz 64-bitową maszynę wirtualną serwera JDK (kompilacja 23.7-b01, tryb mieszany)

  • Zakładamy, że czytelnicy tego samouczka mają zainstalowaną Javę 1.7.0_60 w swoim systemie, zanim przejdą do tego samouczka.

  • Jeśli nie masz Java SDK, pobierz jego aktualną wersję z https://www.oracle.com/technetwork/java/javase/downloads/index.html and have it installed.

Krok 2: Ustawienie środowiska Java

Ustaw zmienną środowiskową JAVA_HOME tak, aby wskazywała lokalizację katalogu podstawowego, w którym na komputerze jest zainstalowana Java. Na przykład,

OS Wynik
Windows Ustaw zmienną środowiskową JAVA_HOME na C: \ ProgramFiles \ java \ jdk1.7.0_60
Linux eksportuj JAVA_HOME = / usr / local / java-current

Dołącz pełną ścieżkę lokalizacji kompilatora Java do ścieżki systemowej.

OS Wynik
Windows Dołącz ciąg; C: \ Program Files \ Java \ jdk1.7.0_60 \ bin do końca zmiennej systemowej PATH.
Linux export PATH = $ PATH: $ JAVA_HOME / bin /

Sprawdź polecenie wersja-java z wiersza poleceń, jak wyjaśniono powyżej.

Krok 3: Konfiguracja środowiska Apache Tika

Programiści mogą zintegrować Apache Tika ze swoim środowiskiem za pomocą

  • Wiersz poleceń,
  • Tika API,
  • Interfejs linii poleceń (CLI) Tika,
  • Graficzny interfejs użytkownika (GUI) Tika lub
  • kod źródłowy.

W przypadku każdego z tych podejść należy najpierw pobrać kod źródłowy Tika.

Kod źródłowy Tiki znajdziesz pod adresem https://Tika.apache.org/download.html, gdzie znajdziesz dwa linki -

  • apache-tika-1.6-src.zip - Zawiera kod źródłowy Tika i

  • Tika -app-1.6.jar - Jest to plik jar zawierający aplikację Tika.

Pobierz te dwa pliki. Migawka z oficjalnej strony internetowej Tika jest pokazana poniżej.

Po pobraniu plików ustaw ścieżkę klasy dla pliku jar tika-app-1.6.jar. Dodaj pełną ścieżkę do pliku jar, jak pokazano w poniższej tabeli.

OS Wynik
Windows Dołącz ciąg „C: \ jars \ Tika-app-1.6.jar” do zmiennej środowiskowej użytkownika CLASSPATH
Linux

Eksportuj CLASSPATH = $ CLASSPATH -

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

Apache dostarcza aplikację Tika, aplikację z graficznym interfejsem użytkownika (GUI) wykorzystującą Eclipse.

Tika-Maven Buduj za pomocą Eclipse

  • Otwórz Eclipse i utwórz nowy projekt.

  • Jeśli nie masz Mavena w swoim Eclipse, skonfiguruj go, wykonując podane kroki.

    • Otwórz link https://wiki.eclipse.org/M2E_updatesite_and_gittags . Znajdziesz tam wydania wtyczek m2e w formacie tabelarycznym

  • Wybierz najnowszą wersję i zapisz ścieżkę adresu URL w kolumnie p2 url.

  • Teraz wróć do Eclipse, na pasku menu kliknij Helpi wybierz Install New Software z menu rozwijanego

  • Kliknij Addwpisz dowolną nazwę, ponieważ jest opcjonalna. Teraz wklej zapisany adres URL wLocation pole.

  • Zostanie dodana nowa wtyczka o nazwie wybranej w poprzednim kroku, zaznacz pole wyboru przed nią i kliknij Next.

  • Kontynuuj instalację. Po zakończeniu uruchom ponownie Eclipse.

  • Teraz kliknij prawym przyciskiem myszy projekt i w pliku configure wybierz opcję convert to maven project.

  • Pojawi się nowy kreator do tworzenia nowego pom. Wprowadź identyfikator grupy jako org.apache.tika, wprowadź najnowszą wersję Tika, wybierz plikpackaging jako słoik i kliknij Finish.

Projekt Maven został pomyślnie zainstalowany, a projekt jest konwertowany na Maven. Teraz musisz skonfigurować plik pom.xml.

Skonfiguruj plik XML

Pobierz zależność Tika maven zhttps://mvnrepository.com/artifact/org.apache.tika

Poniżej pokazano pełną zależność Apache Tika od Mavena.

<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>

Użytkownicy mogą osadzać Tika w swoich aplikacjach za pomocą klasy elewacji Tika. Posiada metody odkrywania wszystkich funkcjonalności Tika. Ponieważ jest to klasa elewacji, Tika abstrahuje od złożoności jej funkcji. Oprócz tego użytkownicy mogą również korzystać w swoich aplikacjach z różnych klas Tika.

Klasa Tika (fasada)

Jest to najbardziej znana klasa w bibliotece Tika i jest zgodna ze wzorcem projektowania elewacji. W związku z tym abstrahuje wszystkie wewnętrzne implementacje i zapewnia proste metody dostępu do funkcji Tika. Poniższa tabela zawiera listę konstruktorów tej klasy wraz z ich opisami.

package - org.apache.tika

class - Tika

Sr.No. Konstruktor i opis
1

Tika ()

Używa domyślnej konfiguracji i konstruuje klasę Tika.

2

Tika (Detector detector)

Tworzy fasadę Tika, akceptując instancję czujki jako parametr

3

Tika (Detector detector, Parser parser)

Tworzy fasadę Tika, akceptując instancje detektora i parsera jako parametry.

4

Tika (Detector detector, Parser parser, Translator translator)

Tworzy fasadę Tika, akceptując detektor, parser i translator jako parametry.

5

Tika (TikaConfig config)

Tworzy fasadę Tika, akceptując obiekt klasy TikaConfig jako parametr.

Metody i opis

Poniżej przedstawiono ważne metody klasy elewacji Tika -

Sr.No. Metody i opis
1

analizowaćToString (File plik)

Ta metoda i wszystkie jej warianty analizują plik przekazany jako parametr i zwracają wyodrębnioną zawartość tekstową w formacie String. Domyślnie długość tego parametru ciągu jest ograniczona.

2

int getMaxStringLength ()

Zwraca maksymalną długość ciągów zwracanych przez metody parseToString.

3

unieważnić setMaxStringLength (int maxStringLength)

Ustawia maksymalną długość ciągów zwracanych przez metody parseToString.

4

Czytelnik parse (File plik)

Ta metoda i wszystkie jej warianty analizują plik przekazany jako parametr i zwracają wyodrębnioną zawartość tekstową w postaci obiektu java.io.reader.

5

Strunowy detect (InputStream strumień, Metadata metadane)

Ta metoda i wszystkie jej warianty akceptują obiekt InputStream i obiekt Metadata jako parametry, wykrywają typ danego dokumentu i zwracają nazwę typu dokumentu jako obiekt String. Ta metoda wyodrębnia mechanizmy wykrywania używane przez Tika.

6

Strunowy translate (InputStream tekst, String język docelowy)

Ta metoda i wszystkie jej warianty akceptują obiekt InputStream i String reprezentujący język, w którym chcemy, aby nasz tekst był przetłumaczony, i tłumaczy dany tekst na żądany język, próbując automatycznie wykryć język źródłowy.

Interfejs parsera

Jest to interfejs implementowany przez wszystkie klasy parserów pakietu Tika.

package - org.apache.tika.parser

Interface - Parser

Metody i opis

Poniżej przedstawiono ważną metodę interfejsu Tika Parser -

Sr.No. Metody i opis
1

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

Ta metoda analizuje dany dokument na sekwencję zdarzeń XHTML i SAX. Po przeanalizowaniu umieszcza wyodrębnioną treść dokumentu w obiekcie klasy ContentHandler, a metadane w obiekcie klasy Metadata.

Klasa metadanych

Ta klasa implementuje różne interfejsy, takie jak CreativeCommons, Geographic, HttpHeaders, Message, MSOffice, ClimateForcast, TIFF, TikaMetadataKeys, TikaMimeKeys, Serializable do obsługi różnych modeli danych. W poniższych tabelach wymieniono konstruktory i metody tej klasy wraz z ich opisami.

package - org.apache.tika.metadata

class - Metadane

Sr.No. Konstruktor i opis
1

Metadata()

Konstruuje nowe, puste metadane.

Sr.No. Metody i opis
1

add (Property property, String value)

Dodaje mapowanie właściwości / wartości metadanych do danego dokumentu. Korzystając z tej funkcji, możemy ustawić wartość na właściwość.

2

add (String name, String value)

Dodaje mapowanie właściwości / wartości metadanych do danego dokumentu. Korzystając z tej metody, możemy ustawić nową wartość nazwy dla istniejących metadanych dokumentu.

3

String get (Property property)

Zwraca wartość (jeśli istnieje) podanej właściwości metadanych.

4

String get (String name)

Zwraca wartość (jeśli istnieje) podanej nazwy metadanych.

5

Date getDate (Property property)

Zwraca wartość właściwości metadanych Date.

6

String[] getValues (Property property)

Zwraca wszystkie wartości właściwości metadanych.

7

String[] getValues (String name)

Zwraca wszystkie wartości podanej nazwy metadanych.

8

String[] names()

Zwraca wszystkie nazwy elementów metadanych w obiekcie metadanych.

9

set (Property property, Date date)

Ustawia wartość daty danej właściwości metadanych

10

set(Property property, String[] values)

Ustawia wiele wartości na właściwość metadanych.

Klasa identyfikatora języka

Ta klasa identyfikuje język danej treści. Poniższe tabele zawierają listę konstruktorów tej klasy wraz z ich opisami.

package - org.apache.tika.language

class - Identyfikator języka

Sr.No. Konstruktor i opis
1

LanguageIdentifier (LanguageProfile profile)

Tworzy instancję identyfikatora języka. Tutaj musisz przekazać obiekt LanguageProfile jako parametr.

2

LanguageIdentifier (String content)

Ten konstruktor może utworzyć wystąpienie identyfikatora języka, przekazując String z zawartości tekstowej.

Sr.No. Metody i opis
1

String getLanguage ()

Zwraca język podany do bieżącego obiektu LanguageIdentifier.

Formaty plików obsługiwane przez Tika

Poniższa tabela przedstawia formaty plików obsługiwane przez Tika.

Format pliku Biblioteka pakietów Zajęcia w Tika
XML org.apache.tika.parser.xml XMLParser
HTML org.apache.tika.parser.html i korzysta z biblioteki Tagsoup HtmlParser
Dokument złożony MS-Office Ole2 do 2007 ooxml 2007 i nowsze

org.apache.tika.parser.microsoft

org.apache.tika.parser.microsoft.ooxml i korzysta z biblioteki Apache Poi

OfficeParser (ole2)

OOXMLParser (ooxml)

OpenDocument Format openoffice org.apache.tika.parser.odf OpenOfficeParser
przenośny format dokumentu (PDF) org.apache.tika.parser.pdf i ten pakiet korzysta z biblioteki Apache PdfBox PDFParser
Format publikacji elektronicznej (książki cyfrowe) org.apache.tika.parser.epub EpubParser
Bogaty format tekstu org.apache.tika.parser.rtf RTFParser
Formaty kompresji i pakowania org.apache.tika.parser.pkg, a ten pakiet używa wspólnej biblioteki kompresji PackageParser i CompressorParser oraz jego podklasy
Format tekstu org.apache.tika.parser.txt TXTParser
Formaty kanałów i dystrybucji org.apache.tika.parser.feed FeedParser
Formaty audio org.apache.tika.parser.audio i org.apache.tika.parser.mp3 AudioParser MidiParser Mp3- dla mp3parser
Imageparsers org.apache.tika.parser.jpeg JpegParser - dla obrazów jpeg
Videoformats org.apache.tika.parser.mp4 i org.apache.tika.parser.video ten parser wewnętrznie używa prostego algorytmu do analizowania formatów wideo flash Mp4parser FlvParser
Pliki klas java i pliki jar org.apache.tika.parser.asm ClassParser CompressorParser
Mobxformat (wiadomości e-mail) org.apache.tika.parser.mbox MobXParser
Formaty CAD org.apache.tika.parser.dwg DWGParser
FontFormats org.apache.tika.parser.font TrueTypeParser
wykonywalne programy i biblioteki org.apache.tika.parser.executable ExecutableParser

Standardy MIME

Standardy Multipurpose Internet Mail Extensions (MIME) to najlepsze dostępne standardy identyfikacji typów dokumentów. Znajomość tych standardów pomaga przeglądarce podczas wewnętrznych interakcji.

Za każdym razem, gdy przeglądarka napotka plik multimedialny, wybiera kompatybilne oprogramowanie dostępne wraz z nią, aby wyświetlić jego zawartość. W przypadku, gdy nie ma odpowiedniej aplikacji do uruchomienia określonego pliku multimedialnego, zaleca użytkownikowi pobranie odpowiedniego oprogramowania wtyczki.

Wykrywanie typów w Tika

Tika obsługuje wszystkie typy dokumentów mediów internetowych dostępne w MIME. Za każdym razem, gdy plik jest przesyłany przez Tika, wykrywa plik i typ dokumentu. Aby wykryć typy mediów, Tika wewnętrznie wykorzystuje następujące mechanizmy.

Rozszerzenia plików

Sprawdzanie rozszerzeń plików to najprostsza i najczęściej stosowana metoda wykrywania formatu pliku. Wiele aplikacji i systemów operacyjnych obsługuje te rozszerzenia. Poniżej pokazane są rozszerzenia kilku znanych typów plików.

Nazwa pliku Przedłużenie
wizerunek .jpg
audio .mp3
plik archiwum java .słoik
plik klasy java .klasa

Wskazówki dotyczące treści

Za każdym razem, gdy pobierasz plik z bazy danych lub dołączasz go do innego dokumentu, możesz stracić nazwę lub rozszerzenie pliku. W takich przypadkach metadane dostarczone z plikiem są używane do wykrywania rozszerzenia pliku.

Magic Byte

Obserwując nieprzetworzone bajty pliku, można znaleźć pewne unikalne wzorce znaków dla każdego pliku. Niektóre pliki mają specjalne przedrostki bajtów o nazwiemagic bytes które są specjalnie utworzone i zawarte w pliku w celu identyfikacji typu pliku

Na przykład można znaleźć CA FE BA BE (format szesnastkowy) w pliku java i% PDF (format ASCII) w pliku pdf. Tika wykorzystuje te informacje do identyfikacji typu pliku multimedialnego.

Kodowanie znaków

Pliki ze zwykłym tekstem są kodowane przy użyciu różnych typów kodowania znaków. Głównym wyzwaniem jest tutaj zidentyfikowanie typu kodowania znaków używanego w plikach. Tika stosuje techniki kodowania znaków, takie jakBom markers i Byte Frequencies do identyfikacji systemu kodowania używanego przez zwykły tekst.

Znaki główne XML

Aby wykryć dokumenty XML, Tika analizuje dokumenty xml i wyodrębnia informacje, takie jak elementy główne, przestrzenie nazw i schematy, do których istnieją odniesienia, z których można znaleźć rzeczywisty typ mediów plików.

Wykrywanie typu przy użyciu klasy fasady

Plik detect()metoda klasy elewacji służy do wykrywania typu dokumentu. Ta metoda akceptuje plik jako dane wejściowe. Poniżej przedstawiono przykładowy program do wykrywania typu dokumentów z klasą elewacji Tika.

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);
   }
}

Zapisz powyższy kod jako TypeDetection.java i uruchom go z wiersza polecenia za pomocą następujących poleceń -

javac TypeDetection.java
java TypeDetection 

audio/mpeg

Tika używa różnych bibliotek parserów do wyodrębniania treści z podanych parserów. Wybiera odpowiedni parser do wyodrębnienia danego typu dokumentu.

Do analizowania dokumentów na ogół używana jest metoda parseToString () klasy elewacji Tika. Poniżej przedstawiono kroki związane z procesem analizowania i są one wyodrębnione metodą Tika ParsertoString ().

Abstrakcja procesu analizy -

  • Początkowo, kiedy przekazujemy dokument do Tiki, używa ona odpowiedniego mechanizmu wykrywania typu, który jest z nią dostępny i wykrywa typ dokumentu.

  • Gdy znany jest typ dokumentu, wybiera on odpowiedni parser ze swojego repozytorium parserów. Repozytorium parsera zawiera klasy, które korzystają z bibliotek zewnętrznych.

  • Następnie dokument jest przekazywany w celu wybrania parsera, który przeanalizuje zawartość, wyodrębni tekst, a także wyrzuci wyjątki dla nieczytelnych formatów.

Ekstrakcja treści za pomocą Tika

Poniżej podano program do wyodrębniania tekstu z pliku za pomocą klasy elewacji Tika -

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);
   }		 
}

Zapisz powyższy kod jako TikaExtraction.java i uruchom go z wiersza poleceń -

javac TikaExtraction.java 
java TikaExtraction

Poniżej podano zawartość sample.txt.

Hi students welcome to tutorialspoint

Daje następujące dane wyjściowe -

Extracted Content: Hi students welcome to tutorialspoint

Ekstrakcja zawartości za pomocą interfejsu parsera

Pakiet parsera Tiki zapewnia kilka interfejsów i klas, za pomocą których możemy przeanalizować dokument tekstowy. Poniżej przedstawiono schemat blokowyorg.apache.tika.parser pakiet.

Dostępnych jest kilka klas parsera, np. Parser pdf, Mp3Passer, OfficeParser itp., Które umożliwiają indywidualną analizę poszczególnych dokumentów. Wszystkie te klasy implementują interfejs parsera.

CompositeParser

Podany diagram przedstawia klasy parsera ogólnego przeznaczenia Tiki: CompositeParser i AutoDetectParser. Ponieważ klasa CompositeParser jest zgodna ze złożonym wzorcem projektowym, można użyć grupy wystąpień analizatora składni jako pojedynczego analizatora składni. Klasa CompositeParser umożliwia również dostęp do wszystkich klas implementujących interfejs analizatora składni.

AutoDetectParser

Jest to podklasa CompositeParser i zapewnia automatyczne wykrywanie typu. Korzystając z tej funkcji, AutoDetectParser automatycznie wysyła dokumenty przychodzące do odpowiednich klas analizatora składni przy użyciu metodologii złożonej.

parse (), metoda

Wraz z parseToString () można także użyć metody parse () interfejsu parsera. Poniżej przedstawiono prototyp tej metody.

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

Poniższa tabela zawiera listę czterech obiektów, które akceptuje jako parametry.

Sr.No. Obiekt i opis
1

InputStream stream

Dowolny obiekt Inputstream zawierający zawartość pliku

2

ContentHandler handler

Tika przekazuje dokument jako zawartość XHTML do tego modułu obsługi, po czym dokument jest przetwarzany za pomocą SAX API. Zapewnia wydajne przetwarzanie treści w dokumencie.

3

Metadata metadata

Obiekt metadanych jest używany zarówno jako źródło, jak i cel metadanych dokumentu.

4

ParseContext context

Ten obiekt jest używany w przypadkach, gdy aplikacja kliencka chce dostosować proces analizowania.

Przykład

Poniżej podano przykład pokazujący, jak używana jest metoda parse ().

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()));
   }
}

Zapisz powyższy kod jako klasę AddMetadata.java i uruchom go z wiersza poleceń -

javac  AddMetadata .java 
java  AddMetadata

Poniżej podano zawartość Example.txt

Hi students welcome to tutorialspoint

Jeśli wykonasz powyższy program, da ci on następujący wynik -

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]

Ustawianie wartości dla istniejących elementów metadanych

Możesz ustawić wartości dla istniejących elementów metadanych za pomocą metody set (). Składnia ustawiania właściwości daty za pomocą metody set () jest następująca -

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

Możesz również ustawić wiele wartości dla właściwości za pomocą metody set (). Składnia ustawiania wielu wartości właściwości Autor za pomocą metody set () jest następująca -

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

Poniżej podano kompletny program demonstrujący metodę 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));
      }
   }
}

Zapisz powyższy kod jako SetMetadata.java i uruchom go z wiersza polecenia -

javac  SetMetadata.java 
java  SetMetadata

Poniżej podano zawartość example.txt.

Hi students welcome to tutorialspoint

Jeśli wykonasz powyższy program, otrzymasz następujące dane wyjściowe. W danych wyjściowych można obserwować nowo dodane elementy metadanych.

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

Potrzeba wykrywania języka

Do klasyfikacji dokumentów na podstawie języka, w jakim są napisane na wielojęzycznej witrynie internetowej, potrzebne jest narzędzie do wykrywania języka. To narzędzie powinno akceptować dokumenty bez adnotacji językowej (metadane) i dodawać te informacje do metadanych dokumentu, wykrywając język.

Algorytmy profilowania korpusu

Co to jest Corpus?

Aby wykryć język dokumentu, konstruuje się profil językowy i porównuje go z profilem znanych języków. Zestaw tekstów tych znanych języków jest znany jakocorpus.

Korpus to zbiór tekstów w języku pisanym, który wyjaśnia, w jaki sposób język jest używany w rzeczywistych sytuacjach.

Korpus jest tworzony na podstawie książek, transkrypcji i innych zasobów danych, takich jak Internet. Dokładność korpusu zależy od algorytmu profilowania, którego używamy do oprawiania korpusu.

Co to są algorytmy profilowania?

Typowym sposobem wykrywania języków jest używanie słowników. Słowa użyte w danym fragmencie tekstu zostaną dopasowane do słów znajdujących się w słownikach.

Lista popularnych słów używanych w danym języku będzie najprostszym i najskuteczniejszym korpusem do wykrywania określonego języka, na przykład artykułów a, an, the po angielsku.

Używanie zestawów słów jako korpusu

Używając zestawów słów, formuje się prosty algorytm, aby znaleźć odległość między dwoma korpusami, która będzie równa sumie różnic między częstotliwościami pasujących słów.

Takie algorytmy mają następujące problemy -

  • Ponieważ częstotliwość dopasowywania słów jest bardzo mniejsza, algorytm nie może efektywnie pracować z małymi tekstami zawierającymi kilka zdań. Aby uzyskać dokładne dopasowanie, potrzeba dużo tekstu.

  • Nie może wykryć granic słów w językach, w których występują zdania złożone, oraz w językach, które nie mają separatorów słów, takich jak spacje lub znaki interpunkcyjne.

Ze względu na te trudności w używaniu zestawów słów jako korpusu, rozważane są pojedyncze znaki lub grupy znaków.

Używanie zestawów znaków jako korpusu

Ponieważ liczba powszechnie używanych znaków w języku jest skończona, łatwo jest zastosować algorytm oparty na częstotliwościach słów, a nie na znakach. Algorytm ten działa jeszcze lepiej w przypadku niektórych zestawów znaków używanych w jednym lub kilku językach.

Ten algorytm ma następujące wady -

  • Trudno jest rozróżnić dwa języki o podobnych częstotliwościach znaków.

  • Nie ma żadnego konkretnego narzędzia ani algorytmu do konkretnej identyfikacji języka za pomocą (jako korpusu) zestawu znaków używanego w wielu językach.

Algorytm N-gramowy

Wyżej wymienione wady dały początek nowemu podejściu do wykorzystywania sekwencji znaków o określonej długości do profilowania korpusu. Taka sekwencja znaków jest ogólnie nazywana N-gramami, gdzie N reprezentuje długość ciągu znaków.

  • Algorytm N-gramowy jest skutecznym podejściem do wykrywania języka, szczególnie w przypadku języków europejskich, takich jak angielski.

  • Ten algorytm działa dobrze z krótkimi tekstami.

  • Chociaż istnieją zaawansowane algorytmy profilowania języka do wykrywania wielu języków w wielojęzycznym dokumencie o bardziej atrakcyjnych funkcjach, Tika używa algorytmu 3-gramowego, ponieważ jest on odpowiedni w większości praktycznych sytuacji.

Wykrywanie języka w Tika

Spośród wszystkich 184 standardowych języków standaryzowanych przez ISO 639-1, Tika może wykryć 18 języków. Wykrywanie języka w Tika odbywa się za pomocą rozszerzeniagetLanguage() metoda LanguageIdentifierklasa. Ta metoda zwraca nazwę kodową języka w formacie String. Poniżej znajduje się lista 18 par języków i kodów wykrytych przez Tika -

da - duński de - niemiecki et - estoński el - grecki
en - angielski es - hiszpański fi - fiński fr - francuski
hu - węgierski jest - islandzki it - włoski nl - holenderski
nie - norweski pl - polski pt - portugalski ru - rosyjski
sv - szwedzki th - tajski

Podczas tworzenia wystąpienia LanguageIdentifier należy przekazać format String zawartości do wyodrębnienia lub plik LanguageProfile obiekt klasy.

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

Poniżej podano przykładowy program do wykrywania języka w 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);
   }
}

Zapisz powyższy kod jako LanguageDetection.java i uruchom go z wiersza polecenia, używając następujących poleceń -

javac  LanguageDetection.java 
java  LanguageDetection

Jeśli uruchomisz powyższy program, otrzymasz następujące wyjście

Language of the given content is : en

Wykrywanie języka w dokumencie

Aby wykryć język danego dokumentu, musisz go przeanalizować za pomocą metody parse (). Metoda parse () analizuje zawartość i przechowuje ją w obiekcie handler, który został przekazany do niej jako jeden z argumentów. Przekaż format String obiektu obsługi do konstruktora klasyLanguageIdentifier klasa, jak pokazano poniżej -

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

Poniżej znajduje się kompletny program, który pokazuje, jak wykryć język danego dokumentu -

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());
   }
}

Zapisz powyższy kod jako SetMetadata.java i uruchom go z wiersza polecenia -

javac  SetMetadata.java 
java  SetMetadata

Poniżej podano zawartość pliku Example.txt.

Hi students welcome to tutorialspoint

Jeśli wykonasz powyższy program, da ci on następujący wynik -

Language name :en

Wraz z jar Tika, Tika dostarcza aplikację z graficznym interfejsem użytkownika (GUI) oraz aplikację z interfejsem wiersza poleceń (CLI). Możesz uruchomić aplikację Tika z wiersza poleceń, podobnie jak inne aplikacje Java.

Graficzny interfejs użytkownika (GUI)

  • Tika udostępnia plik jar wraz z kodem źródłowym w poniższym linku https://tika.apache.org/download.html.

  • Pobierz oba pliki, ustaw ścieżkę klasy dla pliku jar.

  • Wyodrębnij folder ZIP z kodem źródłowym, otwórz folder tika-app.

  • W wyodrębnionym folderze w „tika-1.6 \ tika-app \ src \ main \ java \ org \ apache \ Tika \ gui” zobaczysz dwa pliki klas: ParsingTransferHandler.java i TikaGUI.java.

  • Skompiluj oba pliki klas i uruchom plik klasy TikaGUI.java, otworzy się następujące okno.

Zobaczmy teraz, jak korzystać z GUI Tika.

W GUI kliknij otwórz, przeglądaj i wybierz plik, który ma zostać wyodrębniony lub przeciągnij go na białą przestrzeń okna.

Tika wyodrębnia zawartość plików i wyświetla ją w pięciu różnych formatach, a mianowicie. metadane, tekst sformatowany, zwykły tekst, treść główna i tekst strukturalny. Możesz wybrać dowolny format, który chcesz.

W ten sam sposób klasę CLI znajdziesz również w folderze „tika-1.6 \ tikaapp \ src \ main \ java \ org \ apache \ tika \ cli”.

Poniższa ilustracja pokazuje, co potrafi Tika. Kiedy upuszczamy obraz w GUI, Tika wyodrębnia i wyświetla jego metadane.

Poniżej podano program do wyodrębniania treści i metadanych z pliku 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));
      }
   }
}

Zapisz powyższy kod jako PdfParse.javai skompiluj go z wiersza polecenia, używając następujących poleceń -

javac PdfParse.java
java PdfParse

Poniżej podajemy migawkę przykład.pdf

Przekazywany plik PDF ma następujące właściwości -

Po skompilowaniu programu otrzymasz dane wyjściowe, jak pokazano poniżej.

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

Poniżej podano program do wyodrębniania treści i metadanych z formatu 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)); 
      }
   }
}

Zapisz powyższy kod jako OpenDocumentParse.javai skompiluj go w wierszu polecenia, używając następujących poleceń -

javac OpenDocumentParse.java
java OpenDocumentParse

Poniżej przedstawiono migawkę pliku example_open_document_presentation.odp.

Ten dokument ma następujące właściwości -

Po skompilowaniu programu otrzymasz następujące dane wyjściowe.

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

Poniżej podano program do wyodrębniania treści i metadanych z dokumentu 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));
      }
   }
}

Zapisz powyższy kod jako MSExelParse.javai skompiluj go z wiersza polecenia, używając następujących poleceń -

javac MSExcelParse.java
java MSExcelParse

Tutaj przekazujemy następujący przykładowy plik Excel.

Podany plik Excela ma następujące właściwości -

Po wykonaniu powyższego programu otrzymasz następujący wynik.

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

Poniżej podano program do wyodrębniania treści i metadanych z dokumentu tekstowego -

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));
      }
   }
}

Zapisz powyższy kod jako TextParser.javai skompiluj go z wiersza polecenia, używając następujących poleceń -

javac TextParser.java
java TextParser

Poniżej przedstawiono migawkę pliku sample.txt -

Dokument tekstowy ma następujące właściwości -

Jeśli wykonasz powyższy program, otrzymasz następujące dane wyjściowe.

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

Poniżej podano program do wyodrębniania treści i metadanych z dokumentu 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));  
      }
   }
}

Zapisz powyższy kod jako HtmlParse.javai skompiluj go z wiersza polecenia, używając następujących poleceń -

javac HtmlParse.java
java HtmlParse

Poniżej przedstawiono migawkę pliku example.txt.

Dokument HTML ma następujące właściwości -

Jeśli wykonasz powyższy program, otrzymasz następujące dane wyjściowe.

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

Poniżej podano program do wyodrębniania treści i metadanych z dokumentu 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));
      }
   }
}

Zapisz powyższy kod jako XmlParse.javai skompiluj go z wiersza polecenia, używając następujących poleceń -

javac XmlParse.java
java XmlParse

Poniżej przedstawiono migawkę pliku example.xml

Ten dokument ma następujące właściwości -

Jeśli wykonasz powyższy program, otrzymasz następujące dane wyjściowe -

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

Poniżej podano program do wyodrębniania treści i metadanych z pliku .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));  
      }
   }
}

Zapisz powyższy kod jako JavaClassParse.javai skompiluj go z wiersza polecenia, używając następujących poleceń -

javac JavaClassParse.java
java JavaClassParse

Poniżej przedstawiono migawkę Example.java który wygeneruje Example.class po kompilacji.

Example.class plik ma następujące właściwości -

Po wykonaniu powyższego programu otrzymasz następujący wynik.

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

Poniżej podano program do wyodrębniania treści i metadanych z pliku 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));
      }
   }
}

Zapisz powyższy kod jako PackageParse.javai skompiluj go z wiersza polecenia, używając następujących poleceń -

javac PackageParse.java
java PackageParse

Poniżej podano migawkę pliku Example.java znajdującego się w pakiecie.

Plik jar ma następujące właściwości -

Po wykonaniu powyższego programu otrzymasz następujące dane wyjściowe -

Output -

Contents of the document:

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

Metadata of the document:

Content-Type:   application/zip

Poniżej podano program do wyodrębniania treści i metadanych z obrazu 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));
      }
   }
}

Zapisz powyższy kod jako JpegParse.javai skompiluj go z wiersza polecenia, używając następujących poleceń -

javac JpegParse.java
java JpegParse

Poniżej przedstawiono migawkę pliku Example.jpeg -

Plik JPEG ma następujące właściwości -

Po wykonaniu programu otrzymasz następujące dane wyjściowe.

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

Poniżej podano program do wyodrębniania treści i metadanych z plików 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));
      }
   }  
}

Zapisz powyższy kod jako JpegParse.java i skompiluj go z wiersza polecenia, używając następujących poleceń -

javac Mp4Parse.java
java Mp4Parse

Poniżej przedstawiono migawkę właściwości pliku Example.mp4.

Po wykonaniu powyższego programu otrzymasz następujący wynik -

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

Poniżej podano program do wyodrębniania treści i metadanych z plików 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));
      }
   }
}

Zapisz powyższy kod jako JpegParse.javai skompiluj go z wiersza polecenia, używając następujących poleceń -

javac Mp3Parse.java
java Mp3Parse

Plik Example.mp3 ma następujące właściwości -

Po wykonaniu programu otrzymasz następujące dane wyjściowe. Jeśli podany plik zawiera jakieś teksty, nasza aplikacja przechwyci je i wyświetli razem z danymi wyjściowymi.

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