Wyodrębnianie tekstu PDF w Javie – Tworzenie indeksu z GroupDocs.Search
W tym praktycznym przewodniku odkryjesz how to extract pdf text java z plików PDF, zserializujesz wyodrębnioną zawartość i utworzysz wysokowydajny indeks przeszukiwalny. Niezależnie od tego, czy budujesz wewnętrzną bazę wiedzy, portal do wyszukiwania kontraktów, czy własną wyszukiwarkę, poniższe kroki poprowadzą Cię przez wszystko — od wyciągania tekstu z PDF‑ów po uruchamianie potężnych zapytań pełnotekstowych. Zanurzmy się i zobaczmy, dlaczego GroupDocs.Search sprawia, że cały proces jest płynny i skalowalny.
Szybkie odpowiedzi
Metoda index.search wykonuje zapytanie w utworzonym indeksie i zwraca listę pasujących dokumentów z ocenami trafności.
- Jaki jest główny cel? Aby wyodrębnić pdf text java z plików PDF i utworzyć przeszukiwalny indeks dokumentów przy użyciu GroupDocs.Search.
- Jaka wersja biblioteki? GroupDocs.Search 25.4 (lub najnowsze wydanie).
- Czy potrzebna jest licencja? Darmowa wersja próbna działa w środowisku deweloperskim; pełna licencja jest wymagana w produkcji.
- Czy mogę indeksować pliki PDF? Tak — wyodrębnij tekst PDF i dodaj go do indeksu.
- Jak wykonać wyszukiwanie? Użyj metody
index.search(query)po dodaniu danych.
Co to jest indeks dokumentów?
Indeks dokumentu to ustrukturyzowana kolekcja przeszukiwalnych terminów wyodrębnionych z Twoich plików. Mapuje każdy termin do dokumentów, w których się pojawia, umożliwiając szybkie wyszukiwania pełnotekstowe w dużych repozytoriach i skracając czas wyszukiwania z minut do milisekund, jednocześnie wspierając funkcje rankingowe i trafności.
Dlaczego używać GroupDocs.Search dla Javy?
GroupDocs.Search obsługuje ponad 50 formatów wejściowych i wyjściowych, może indeksować miliony dokumentów bez ładowania całego pliku do pamięci i oferuje bogaty język zapytań z operatorami Boolean, wildcard i proximity. Te wymierzone możliwości czynią go idealnym rozwiązaniem do wyszukiwania na skalę przedsiębiorstwa. Zapewnia także wbudowane wykrywanie języka, stemming oraz konfigurowalne analizatory, aby poprawić dokładność wyszukiwania treści wielojęzycznych.
Wymagania wstępne
- GroupDocs.Search for Java (Wersja 25.4 lub nowsza).
- Java Development Kit (JDK) kompatybilny z Twoją wersją GroupDocs.
- IDE, takie jak IntelliJ IDEA lub Eclipse.
- Maven do zarządzania zależnościami.
Konfiguracja GroupDocs.Search dla Javy
Najpierw dodaj bibliotekę do swojego projektu.
Konfiguracja Maven
Umieść poniższy kod w pliku pom.xml:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/search/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-search</artifactId>
<version>25.4</version>
</dependency>
</dependencies>
Bezpośrednie pobranie
Alternatywnie, pobierz najnowszą wersję z GroupDocs.Search for Java releases.
Uzyskanie licencji
- Free Trial – Przetestuj wszystkie funkcje przy użyciu tymczasowej licencji.
- Purchase – Uzyskaj pełny dostęp i priorytetowe wsparcie.
Jak wyodrębnić tekst z PDF‑ów (i innych dokumentów)
Załaduj swój PDF (lub obsługiwany dokument) przy użyciu klasy Extractor, skonfiguruj opcje wyodrębniania i wywołaj extractText(). To jednowierszowe wywołanie zwraca surowy lub sformatowany tekst gotowy do indeksowania.
Klasa Extractor jest podstawowym komponentem GroupDocs.Search, który odczytuje dokument i generuje tekst zwykły lub sformatowany.
// ```java
String documentPath = "YOUR_DOCUMENT_DIRECTORY/Lorem ipsum.pdf";
Extractor extractor = new Extractor();
Document document = Document.createFromFile(documentPath);
// ```java
ExtractionOptions extractionOptions = new ExtractionOptions();
extractionOptions.setUseRawTextExtraction(false); // Extract with formatting
ExtractedData extractedData = extractor.extract(document, extractionOptions);
Wskazówka: Ustaw
setUseRawTextExtraction(true), jeśli potrzebujesz zwykłego tekstu bez formatowania.
Jak serializować wyodrębnione dane
Serializacja konwertuje obiekt wyodrębnionego tekstu na tablicę bajtów, umożliwiając jego zapis na dysku lub przesłanie przez sieć w celu późniejszego indeksowania.
Narzędzie SerializationUtil udostępnia statyczne metody do przekształcania obiektów w strumienie bajtów i z powrotem.
// ```java
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
extractedData.serialize(outputStream);
byte[] serializedArray = outputStream.toByteArray();
Jak deserializować wyodrębnione dane
Gdy jesteś gotowy do budowy indeksu, deserializuj wcześniej zapisany array bajtów z powrotem do pierwotnego obiektu wyodrębniania.
Metoda deserialize przywraca dokładny stan wyniku wyodrębniania, zapewniając brak utraty danych między sesjami.
// ```java
ByteArrayInputStream inputStream = new ByteArrayInputStream(serializedArray);
ExtractedData deserializedData = ExtractedData.deserialize(inputStream);
Jak utworzyć indeks dokumentu
Zainicjuj obiekt Index, określ folder przechowywania i skonfiguruj opcje indeksowania, takie jak wektory terminów i obsługa słów stop.
Klasa Index reprezentuje przeszukiwalny kontener, który przechowuje wszystkie terminy, odniesienia do dokumentów i metadane.
// ```java
String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Indexing/SeparateDataExtraction";
com.groupdocs.search.Index index = new com.groupdocs.search.Index(indexFolder);
Jak dodać dane do indeksu i wykonać wyszukiwanie
Dodaj zdeserializowany wynik wyodrębniania do indeksu przy użyciu index.add(), a następnie zapytaj przy pomocy index.search() aby uzyskać natychmiastowe wyniki.
Metoda add rejestruje terminy dokumentu w indeksie, natomiast search wykonuje zapytanie względem tych terminów.
// ```java
ExtractedData[] dataToIndex = new ExtractedData[] { deserializedData };
index.add(dataToIndex, new IndexingOptions());
// ```java
String query = "ipsum";
SearchResult result = index.search(query);
Pro tip: Użyj
index.search("your query", SearchOptions), aby precyzyjnie dostroić ranking trafności.
Typowe przypadki użycia
- Systemy zarządzania dokumentami – Szybko znajdź kontrakty, faktury lub polityki.
- Wyszukiwarki oparte na treści – Zasil wewnętrzne bazy wiedzy dzięki możliwościom pełnotekstowego wyszukiwania w Javie.
- Rozwiązania archiwizacji danych – Indeksuj historyczne rekordy dla natychmiastowego odczytu.
Rozważania dotyczące wydajności
Metoda setStoreTermVectors(boolean) konfiguruje, czy wektory terminów są przechowywane w indeksie, wpływając na rozmiar indeksu i wydajność zapytań.
- Zarządzanie pamięcią: Zwiększ rozmiar sterty JVM (np.
-Xmx4g) przy przetwarzaniu partii większych niż 500 MB. - Opcje indeksowania: Wyłącz wektory terminów (
setStoreTermVectors(false)), aby zmniejszyć rozmiar indeksu nawet o 30 %. - Regularne aktualizacje: Utrzymuj GroupDocs.Search w najnowszej wersji; każde drobne wydanie zawiera średnie przyspieszenia o 10‑15 %.
Najczęściej zadawane pytania
Q: Jak efektywnie obsługiwać bardzo duże pliki PDF?
A: Strumieniuj plik przy użyciu Extractor i przetwarzaj go w fragmentach; zwiększ także rozmiar sterty JVM w razie potrzeby.
Q: Czy mogę dostosować składnię zapytań wyszukiwania?
A: Tak — GroupDocs.Search obsługuje operatory Boolean, wildcard oraz wyszukiwania proximity.
Q: Co zrobić, gdy serializacja się nie powiedzie?
A: Zweryfikuj, że wszystkie obiekty implementują Serializable i obsłuż IOException, aby zalogować szczegóły.
Q: Czy można indeksować tylko określone sekcje dokumentu?
A: Oczywiście — skonfiguruj ExtractionOptions, aby filtrować strony lub sekcje przed indeksowaniem.
Q: Jak zaktualizować do nowszej wersji GroupDocs.Search?
A: Zaktualizuj numer wersji w pliku pom.xml i uruchom mvn clean install; zapoznaj się z przewodnikiem migracji pod kątem zmian łamiących kompatybilność.
Zasoby
- Wydania GroupDocs.Search for Java: GroupDocs.Search for Java releases
- Dokumentacja: GroupDocs Documentation
- Referencja API: GroupDocs API Reference
- Pobieranie: GroupDocs Downloads
- GitHub: GroupDocs GitHub Repository
- Bezpłatne wsparcie: GroupDocs Forum
- Tymczasowa licencja: Obtain a Temporary License
Ostatnia aktualizacja: 2026-07-07
Testowano z: GroupDocs.Search 25.4 for Java
Autor: GroupDocs