Java 문서 파싱: GroupDocs.Parser를 사용하여 문서에서 이미지 추출
이 포괄적인 가이드에서는 GroupDocs.Parser for Java를 사용하여 다양한 파일 유형에서 이미지를 추출하는 java document parsing 기술을 배웁니다. 라이브러리 설정, 사용자 정의 ExternalResourceHandler 생성, 그리고 스마트 필터링 적용 방법을 단계별로 안내하여 실제로 필요한 리소스만 로드하도록 하여 메모리 사용량을 줄이고 처리 속도를 높일 수 있습니다.
빠른 답변
- GroupDocs.Parser는 무엇을 하나요? 50개 이상의 파일 형식을 파싱하여 텍스트, 이미지 및 기타 임베디드 리소스를 프로그래밍 방식으로 사용할 수 있게 합니다.
- 원하지 않는 이미지를 건너뛸 수 있나요? 예—맞춤형
ExternalResourceHandler를 구현하여 실시간으로 리소스를 필터링합니다. - 필요한 Maven 버전은? GroupDocs.Parser Java 25.5 이상을 사용하십시오.
- 라이선스가 필요합니까? 평가용으로는 무료 체험판을 사용할 수 있으며, 프로덕션에서는 영구 라이선스가 필요합니다.
- 이 접근 방식은 스레드‑안전한가요? 스레드당 별도의
Parser인스턴스를 생성하십시오; 객체는 공유되지 않습니다.
“문서에서 이미지 추출”이란 무엇인가요?
문서에서 이미지를 추출한다는 것은 임베디드된 그림 파일을 프로그래밍 방식으로 가져와 원본 파일 외부에 저장, 표시 또는 추가 처리할 수 있게 하는 것을 의미합니다. 썸네일이 필요하거나 데이터 시각화, 전체 원본 문서를 보관하지 않고 미디어 자산을 재활용해야 할 때 이 작업이 필수적입니다.
이미지를 추출하면서 리소스를 필터링하는 이유는?
이미지를 추출하면서 리소스를 필터링하면 대용량 파일을 처리할 때 메모리 사용량을 최대 70 %까지 줄일 수 있습니다. 원하지 않는 바이너리가 JVM 힙에 로드되지 않기 때문입니다. 또한 잠재적으로 위험한 콘텐츠 로드를 방지하여 보안을 향상시키고, 파이프라인 속도를 높입니다—수백 개의 장식 그래픽이 포함된 대형 계약서도 원래 시간의 일부만에 파싱할 수 있습니다.
전제 조건
- Java Development Kit (JDK) – 버전 8 이상.
- Maven – 의존성 관리를 위해.
- Java I/O 및 예외 처리에 대한 기본적인 이해.
Java용 GroupDocs.Parser 설정
pom.xml에 GroupDocs 저장소와 파서 의존성을 추가합니다:
<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>
또는 최신 버전을 GroupDocs.Parser for Java releases에서 다운로드하십시오.
라이선스 획득
- Free Trial – 비용 없이 핵심 기능을 탐색합니다.
- Temporary License – 평가 기간 동안 전체 기능을 활성화합니다.
- Purchased License – 상업적 배포에 필요합니다.
이미지를 추출하면서 리소스를 필터링하는 방법
리소스를 필터링하려면 로드할 임베디드 파일을 결정하는 ExternalResourceHandler를 구현합니다. 문서를 열기 전에 ParserSettings에 이 핸들러를 등록한 후 파서를 호출합니다. 핸들러는 각 리소스의 메타데이터를 받아 유형, 크기, 이름 등의 기준에 따라 수락하거나 거부할 수 있어 필요한 이미지만 처리됩니다.
단계 1: 사용자 정의 핸들러 만들기
ExternalResourceHandler는 특정 외부 리소스(예: 이미지)를 로드할지 여부를 결정할 수 있는 인터페이스입니다. onLoading 메서드를 구현하고 유지하려는 리소스에 대해 true, 건너뛰려는 경우 false를 반환합니다. onLoading 메서드는 리소스 메타데이터를 받아 로드하려면 true, 건너뛰려면 false를 반환해야 합니다.
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);
}
}
단계 2: 핸들러와 함께 ParserSettings 구성
ParserSettings는 파서용 사용자 정의 핸들러, 감지 설정, 성능 튜닝 등 옵션을 보관하는 구성 클래스입니다. 문서를 열기 전에 핸들러 인스턴스를 ParserSettings에 전달하십시오.
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());
}
}
}
}
단계 3: 필터링 로직 미세 조정
이미지 크기, 형식, URI 패턴 등으로 필터링하는 등 보다 정교한 규칙이 필요하면 onLoading 메서드를 그에 맞게 확장하십시오. 예를 들어 2 MB보다 큰 이미지를 건너뛰거나 모든 PNG 파일을 무시할 수 있습니다.
@Override
public void onLoading(ExternalResourceLoadingArgs args) {
if (!args.getUri().endsWith("installation.png")) {
args.setSkipped(true);
}
}
실용적인 적용 사례
- Document Management Systems – 스캔된 계약서에서 필요한 이미지만 추출하여 썸네일을 생성합니다.
- Data Extraction Services – 장식 그래픽을 건너뛰고 유용한 데이터가 포함된 차트에 집중합니다.
- Web Scraping Tools – HTML 기반 문서에서 의미 있는 미디어를 가져오는 동안 추적 픽셀을 필터링합니다.
성능 고려 사항
Parser는 문서를 열고 내용에 접근할 수 있게 하는 핵심 클래스입니다.
- 조기에 필터링: 리소스를 순회하기 전에 사용자 정의 핸들러를 적용하여 원하지 않는 데이터를 메모리에 로드하지 않도록 합니다.
- 즉시 해제:
try‑with‑resources(try (Parser parser = …))를 사용하여 네이티브 리소스를 해제합니다. - 비동기 처리: 대량 배치의 경우 병렬 스트림으로 문서를 처리하되 각
Parser인스턴스를 단일 스레드에 제한합니다.
일반적인 문제 및 해결책
| 문제 | 발생 원인 | 해결 방법 |
|---|---|---|
| 이미지가 반환되지 않음 | 핸들러가 실수로 모든 리소스를 건너뛰었습니다 | if 조건을 확인하고 원하지 않는 URI에 대해서만 args.setSkipped(true)가 호출되는지 확인하십시오. |
대용량 파일에서 IOException | 힙 메모리 부족 | JVM 힙을 늘리세요 (-Xmx2g) 또는 페이지를 더 작은 청크로 처리하십시오. |
| 라이선스 인식 안 됨 | 프로덕션 코드에 시험용 DLL을 사용 | License.setLicense("path/to/license")을 사용하여 올바른 라이선스 파일 경로를 지정하십시오. |
자주 묻는 질문
Q: 사용자 정의 ExternalResourceHandler를 사용하는 주요 목적은 무엇인가요?
A: 외부 리소스 로드를 제어할 수 있어 불필요한 파일을 필터링함으로써 보안과 성능을 향상시킵니다.
Q: 라이선스 없이 GroupDocs.Parser for Java를 사용할 수 있나요?
A: 예, 무료 체험판을 사용할 수 있지만 고급 기능 및 대규모 배포에는 유효한 라이선스가 필요합니다.
Q: GroupDocs.Parser를 사용한 파싱 중 예외를 어떻게 처리하나요?
A: IOException 등 특정 예외에 대해 try‑catch 블록으로 파싱 호출을 감싸 오류를 정상적으로 처리하십시오.
Q: 리소스를 필터링할 때 흔히 발생하는 함정은 무엇인가요?
A: 잘못된 URI 검사로 인해 필요한 파일이 건너뛰어질 수 있습니다; 로그나 브레이크포인트를 사용해 조건을 확인하십시오.
Q: GroupDocs.Parser for Java를 사용해 HTML이 아닌 문서를 파싱할 수 있나요?
A: 물론입니다—GroupDocs.Parser는 PDF, Word, Excel, PowerPoint 등 다양한 형식을 지원합니다.
다음 단계
전체 API Reference를 살펴보고 ParserSettings.setDetectTables(true)와 같이 테이블을 추출하는 추가 설정이나 ParserSettings.setExtractEmbeddedFonts(true)를 사용해 폰트 추출을 실험해 보세요.
마지막 업데이트: 2026-06-22
테스트 환경: GroupDocs.Parser 25.5 for Java
작성자: GroupDocs
리소스
- 문서: GroupDocs.Parser Documentation
- API 참조: API Details
- 다운로드: Latest Versions