GroupDocs.Viewer for Java를 사용하여 docx에서 텍스트 추출

프로그램matically docx에서 텍스트를 추출하려고 하시나요? 페이지 번호를 가져오거나, 모든 텍스트 라인을 캡처하거나, 검색 가능한 인덱스를 구축해야 할 때, 수동으로 수행하면 시간도 많이 걸리고 오류가 발생하기 쉽습니다. GroupDocs.Viewer for Java는 문서 구조를 읽고 깨끗한 텍스트 데이터를 반환하는 고성능 API를 제공하여 이 과정을 간단하게 만들어 줍니다.

GroupDocs.Viewer for Java를 사용한 문서 분석

빠른 답변

  • “docx에서 텍스트 추출”이란 무엇인가요? 프로그램matically DOCX 파일을 읽고 각 라인별로 순수 텍스트 내용을 가져오는 것을 의미합니다.
  • 어떤 라이브러리가 이를 처리하나요? GroupDocs.Viewer for Java가 Viewer 클래스와 관련 API를 제공합니다.
  • 라이선스가 필요합니까? 평가용으로는 무료 체험판을 사용할 수 있으며, 프로덕션에서는 유료 라이선스가 필요합니다.
  • 필요한 Java 버전은? Maven과 호환되는 JDK 8  이상이면 됩니다.
  • 대량 배치를 처리할 수 있나요? 예—Viewer 인스턴스를 재사용하고 페이지를 스트림으로 처리하면 가능합니다.

“docx에서 텍스트 추출”이란 무엇인가요?

DOCX 파일에서 텍스트를 추출한다는 것은 문서 내부의 XML 구조를 읽어 사람이 읽을 수 있는 텍스트만 반환하는 것을 의미합니다. 이는 인덱싱, 검색 또는 하위 분석 파이프라인에 콘텐츠를 전달할 때 유용합니다.

왜 GroupDocs.Viewer for Java를 사용하나요?

  • 정확성: 복잡한 레이아웃, 표, 다중 컬럼 문서를 처리합니다.
  • 속도: 대용량 파일에서도 빠르게 작동하는 최적화된 렌더링 엔진.
  • 다중 포맷 지원: 동일 API가 PDF, PPTX, XLSX 등에서도 동작하므로 코드를 재사용할 수 있습니다.
  • 외부 종속성 없음: 순수 Java이며 네이티브 라이브러리가 필요하지 않습니다.

전제 조건

  • Java Development Kit (JDK) 8 이상.
  • 의존성 관리를 위한 Maven 설치.
  • 분석하려는 DOCX 파일(알려진 폴더에 배치).

GroupDocs.Viewer for Java 설정하기

pom.xml에 GroupDocs 저장소와 의존성을 추가합니다:

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

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-viewer</artifactId>
      <version>25.2</version>
   </dependency>
</dependencies>

라이선스 획득 단계

기본 초기화

  1. 필요한 클래스를 임포트합니다.
  2. DOCX 파일을 가리키는 Viewer 인스턴스를 생성합니다.
  3. ViewInfoOptions.forPngView(true)를 사용해 페이지‑레벨 정보(메타데이터 및 텍스트 라인)를 요청합니다.

docx에서 텍스트 추출 방법 – 단계별 가이드

1. 페이지 메타데이터 추출

페이지 번호와 같은 메타데이터는 탐색 구조를 만들거나 특정 섹션을 참조할 때 필수적입니다.

try (Viewer viewer = new Viewer("YOUR_DOCUMENT_DIRECTORY/SAMPLE_DOCX")) {
    ViewInfoOptions viewInfoOptions = ViewInfoOptions.forPngView(true);
    ViewInfo viewInfo = viewer.getViewInfo(viewInfoOptions);
    for (Page page : viewInfo.getPages()) {
        int pageNumber = page.getNumber();
        System.out.println("Page: " + pageNumber); // Outputs the page number
    }
}
  • ViewInfoOptions.forPngView(true): PNG 렌더링을 준비하면서 페이지 정보를 수집하도록 API에 지시합니다.
  • viewInfo.getPages(): 각 Page 객체가 번호와 기타 메타데이터를 포함하는 컬렉션을 반환합니다.

팁: Viewer를 try‑with‑resources 블록 안에서 사용해 네이티브 리소스를 자동으로 해제하세요.

2. 페이지에서 텍스트 라인 추출

각 페이지를 식별할 수 있게 되었으니 실제 텍스트 라인을 가져옵니다.

try (Viewer viewer = new Viewer("YOUR_DOCUMENT_DIRECTORY/SAMPLE_DOCX")) {
    ViewInfoOptions viewInfoOptions = ViewInfoOptions.forPngView(true);
    ViewInfo viewInfo = viewer.getViewInfo(viewInfoOptions);
    for (Page page : viewInfo.getPages()) {
        System.out.println("Page: " + page.getNumber());
        System.out.println("Text lines:");
        
        for (Line line : page.getLines()) {
            String lineText = line.getValue();
            System.out.print(lineText + "\t");
        }
    }
}
  • page.getLines(): 페이지에 표시되는 각 라인을 나타내는 Line 객체 리스트를 반환합니다.
  • 내부 루프는 가독성을 위해 탭으로 구분된 각 라인을 출력합니다.

공통 문제 및 해결책

증상가능한 원인해결 방법
null 페이지 번호문서가 올바르게 로드되지 않음파일 경로를 확인하고 파일이 존재하는지 확인합니다.
텍스트 라인이 반환되지 않음지원되지 않는 파일 형식DOCX 버전이 지원되는지 확인하고 필요하면 GroupDocs를 업그레이드합니다.
대용량 파일에서 OutOfMemoryErrorViewer가 메모리에 너무 많은 페이지를 보유페이지를 작은 배치로 처리하거나 동일한 Viewer 인스턴스를 재사용합니다.

실용적인 적용 사례

  1. 검색 엔진 인덱싱: 페이지 번호와 추출된 텍스트를 함께 저장해 정확한 스니펫 검색을 가능하게 합니다.
  2. 법률 문서 검토: 자동 조항 감지 또는 레드액션 워크플로를 위해 모든 라인을 추출합니다.
  3. 콘텐츠 마이그레이션: 구조를 유지하면서 레거시 DOCX 콘텐츠를 CMS로 이동합니다.
  4. 보고서 대시보드: 헤딩과 글머리표를 추출해 주요 섹션을 요약합니다.

성능 고려 사항

  • 올바른 해제: 항상 Viewer를 닫으세요(try‑with‑resources 사용).
  • 배치 처리: 다수의 문서를 처리할 때는 스레드당 하나의 Viewer 인스턴스를 재사용해 오버헤드를 줄이세요.
  • 렌더링 옵션: 텍스트만 필요하면 PNG 렌더링을 건너뛰고 ViewInfoOptions.forTextView()(여기서는 표시되지 않음)를 사용해 처리 시간을 단축할 수 있습니다.

결론

이제 GroupDocs.Viewer for Java를 사용해 DOCX 파일에서 텍스트를 추출하고, 페이지 번호를 가져오며, 각 텍스트 라인을 순회하는 방법을 알게 되었습니다. 이러한 빌딩 블록을 활용하면 빠르고 신뢰성 높으며 유지 관리가 쉬운 강력한 문서 처리 파이프라인을 만들 수 있습니다.

다음 단계

  • 동일 API를 사용해 다른 포맷(PDF, PPTX)도 실험해 보세요.
  • 추출된 텍스트를 Elasticsearch와 같은 전체 텍스트 검색 엔진과 결합합니다.
  • 시각적 미리보기가 필요할 경우 렌더링된 이미지에 대한 스타일 옵션을 탐색합니다.

자주 묻는 질문

Q: GroupDocs.Viewer가 지원하는 파일 포맷은 무엇인가요?
A: DOCX, PDF, XLSX, PPTX 등 다양한 포맷을 지원합니다.

Q: 라인 추출 시 출력 포맷을 커스터마이즈할 수 있나요?
A: 예, ViewInfoOptions를 설정하면 됩니다(예: 순수 텍스트용 forTextView()).

Q: 처리할 수 있는 페이지 수에 제한이 있나요?
A: 명확한 제한은 없지만 매우 큰 문서는 메모리 효율을 위해 배치 처리하는 것이 좋습니다.

Q: GroupDocs.Viewer에서 예외를 어떻게 처리하나요?
A: Viewer 코드를 try‑catch 블록으로 감싸고 ViewerException 또는 일반 IOException을 적절히 처리합니다.

Q: 이 도구를 다른 Java 프레임워크와 통합할 수 있나요?
A: 물론입니다! Spring, Hibernate, Jakarta EE 등과 원활히 작동합니다.

리소스


Last Updated: 2026-04-13
Tested With: GroupDocs.Viewer for Java 25.2
Author: GroupDocs