Analiza dokumentów Java: wyodrębnianie obrazów z dokumentów przy użyciu GroupDocs.Parser

W tym obszernej przewodniku poznasz techniki java document parsing do wyodrębniania obrazów z różnych typów plików przy użyciu GroupDocs.Parser dla Javy. Przejdziemy przez konfigurację biblioteki, tworzenie własnego ExternalResourceHandler oraz zastosowanie inteligentnego filtrowania, aby ładować tylko potrzebne zasoby — co pomoże zmniejszyć zużycie pamięci i przyspieszyć przetwarzanie.

Szybkie odpowiedzi

  • Co robi GroupDocs.Parser? Analizuje ponad 50 formatów plików, udostępniając tekst, obrazy i inne wbudowane zasoby do użycia programistycznego.
  • Czy mogę pominąć niechciane obrazy? Tak — zaimplementuj własny ExternalResourceHandler, aby filtrować zasoby w locie.
  • Jaką wersję Maven wymaga? Użyj GroupDocs.Parser Java 25.5 lub nowszej.
  • Czy potrzebna jest licencja? Darmowa wersja próbna działa w ocenie; stała licencja jest wymagana w produkcji.
  • Czy to podejście jest bezpieczne wątkowo? Utwórz osobną instancję Parser dla każdego wątku; obiekty nie są współdzielone.

Co oznacza „wyodrębnianie obrazów z dokumentów”?

Wyodrębnianie obrazów z dokumentów oznacza programowe pobieranie osadzonych plików graficznych, aby można je było przechowywać, wyświetlać lub dalej przetwarzać poza oryginalnym plikiem. Operacja ta jest niezbędna, gdy potrzebne są miniatury, wizualizacja danych lub ponowne wykorzystanie zasobów multimedialnych bez zachowywania pełnego dokumentu źródłowego.

Dlaczego filtrować zasoby podczas wyodrębniania obrazów?

Filtrowanie zasobów podczas wyodrębniania obrazów pozwala zmniejszyć zużycie pamięci nawet o 70 % przy przetwarzaniu dużych plików, ponieważ niechciane pliki binarne nie trafiają do sterty JVM. Poprawia to także bezpieczeństwo, zapobiegając ładowaniu potencjalnie niebezpiecznej zawartości, oraz przyspiesza pipeline — duże umowy z setkami elementów graficznych mogą być analizowane w ułamku pierwotnego czasu.

Wymagania wstępne

  • Java Development Kit (JDK) – wersja 8 lub wyższa.
  • Maven – do zarządzania zależnościami.
  • Podstawowa znajomość Java I/O oraz obsługi wyjątków.

Konfiguracja GroupDocs.Parser dla Javy

Dodaj repozytorium GroupDocs oraz zależność parsera do swojego pom.xml:

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/parser/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-parser</artifactId>
      <version>25.5</version>
   </dependency>
</dependencies>

Alternatywnie, pobierz najnowszą wersję z GroupDocs.Parser for Java releases.

Uzyskanie licencji

  • Free Trial – przetestuj podstawowe funkcje bez kosztów.
  • Temporary License – odblokuj pełną funkcjonalność podczas oceny.
  • Purchased License – wymagana przy wdrożeniu komercyjnym.

Jak filtrować zasoby podczas wyodrębniania obrazów

Aby filtrować zasoby, zaimplementuj ExternalResourceHandler, który decyduje, które osadzone pliki są ładowane. Zarejestruj ten handler w ParserSettings przed otwarciem dokumentu, a następnie wywołaj parser. Handler otrzymuje metadane każdego zasobu, co pozwala zaakceptować lub odrzucić go na podstawie kryteriów, takich jak typ, rozmiar czy nazwa, zapewniając przetwarzanie tylko potrzebnych obrazów.

Krok 1: Utwórz własny handler

ExternalResourceHandler jest interfejsem, który pozwala zdecydować, czy konkretny zewnętrzny zasób — np. obraz — powinien być załadowany. Zaimplementuj metodę onLoading i zwróć true dla zasobów, które chcesz zachować, false aby je pominąć. Metoda onLoading otrzymuje metadane zasobu i powinna zwrócić true, aby załadować, lub false, aby pominąć zasób.

import com.groupdocs.parser.options.ExternalResourceHandler;
import com.groupdocs.parser.data.ExternalResourceLoadingArgs;

class Handler extends ExternalResourceHandler {
    @Override
    public void onLoading(ExternalResourceLoadingArgs args) {
        if (!args.getUri().endsWith("installation.png")) {
            args.setSkipped(true);
        }
        super.onLoading(args);
    }
}

Krok 2: Skonfiguruj ParserSettings z handlerem

ParserSettings jest klasą konfiguracyjną, która przechowuje opcje takie jak własne handlery, ustawienia wykrywania i optymalizacje wydajności dla parsera. Przekaż swoją instancję handlera do ParserSettings przed otwarciem dokumentu.

import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.PageImageArea;
import com.groupdocs.parser.exceptions.IOException;
import com.groupdocs.parser.options.ParserSettings;

public class LoadExternalResources {
    public static void run() throws IOException {
        ParserSettings settings = new ParserSettings(new Handler());
        
        try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY", settings)) {
            Iterable<PageImageArea> images = parser.getImages();
            
            for (PageImageArea image : images) {
                System.out.println(image.getFileType());
            }
        }
    }
}

Krok 3: Dostosuj logikę filtrowania

Jeśli potrzebujesz bardziej zaawansowanych reguł — np. filtrowania według rozmiaru obrazu, formatu lub wzorca URI — rozszerz metodę onLoading odpowiednio. Na przykład możesz pominąć każdy obraz większy niż 2 MB lub zignorować wszystkie pliki PNG.

@Override
public void onLoading(ExternalResourceLoadingArgs args) {
    if (!args.getUri().endsWith("installation.png")) {
        args.setSkipped(true);
    }
}

Praktyczne zastosowania

  1. Systemy zarządzania dokumentami – Pobieraj tylko niezbędne obrazy ze zeskanowanych umów, aby generować miniatury.
  2. Usługi ekstrakcji danych – Pomijaj elementy graficzne dekoracyjne i skup się na wykresach zawierających cenne dane.
  3. Narzędzia do web scrapingu – Filtruj piksele śledzące podczas pobierania istotnych mediów z dokumentów opartych na HTML.

Uwagi dotyczące wydajności

Parser jest klasą podstawową, która otwiera dokument i zapewnia dostęp do jego zawartości.

  • Filtruj wcześnie: Zastosuj własny handler przed iteracją po zasobach, aby uniknąć ładowania niechcianych danych do pamięci.
  • Szybko zwalniaj: Użyj try‑with‑resources (try (Parser parser = …)) aby zwolnić zasoby natywne.
  • Przetwarzanie asynchroniczne: Dla dużych partii przetwarzaj dokumenty w strumieniach równoległych, utrzymując każdą instancję Parser w jednym wątku.

Typowe problemy i rozwiązania

ProblemDlaczego się dziejeRozwiązanie
Brak zwróconych obrazówHandler pomija wszystkie zasoby nieumyślnieSprawdź warunek if i upewnij się, że args.setSkipped(true) jest wywoływane tylko dla niechcianych URI.
IOException przy dużych plikachNiewystarczająca pamięć stertyZwiększ pamięć sterty JVM (-Xmx2g) lub przetwarzaj strony w mniejszych partiach.
Licencja nie rozpoznanaUżywanie trial DLL w kodzie produkcyjnymUstaw prawidłową ścieżkę do pliku licencji za pomocą License.setLicense("path/to/license").

Najczęściej zadawane pytania

Q: Jaki jest główny cel użycia własnego ExternalResourceHandler?
A: Pozwala kontrolować, które zewnętrzne zasoby są ładowane, zwiększając bezpieczeństwo i wydajność poprzez filtrowanie niepotrzebnych plików.

Q: Czy mogę używać GroupDocs.Parser dla Javy bez licencji?
A: Tak, dostępna jest darmowa wersja próbna, ale zaawansowane funkcje i wdrożenia na dużą skalę wymagają ważnej licencji.

Q: Jak obsługiwać wyjątki podczas parsowania przy użyciu GroupDocs.Parser?
A: Otaczaj wywołania parsowania blokami try‑catch dla IOException i innych specyficznych wyjątków, aby elegancko obsługiwać błędy.

Q: Jakie są typowe pułapki przy filtrowaniu zasobów?
A: Nieprawidłowe sprawdzanie URI może pominąć potrzebne pliki; używaj logowania lub punktów przerwania, aby zweryfikować warunki.

Q: Czy można parsować dokumenty nie‑HTML przy użyciu GroupDocs.Parser dla Javy?
A: Oczywiście — GroupDocs.Parser obsługuje PDF, Word, Excel, PowerPoint i wiele innych formatów.

Kolejne kroki

Zapoznaj się z pełną API Reference w celu poznania dodatkowych ustawień, takich jak ParserSettings.setDetectTables(true) do wyodrębniania tabel, lub eksperymentuj z ParserSettings.setExtractEmbeddedFonts(true) w celu ekstrakcji czcionek.


Ostatnia aktualizacja: 2026-06-22
Testowano z: GroupDocs.Parser 25.5 for Java
Autor: GroupDocs

Zasoby

Powiązane samouczki