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