GroupDocs.Parser를 사용한 Java PDF 테이블 추출 방법

PDF 파일에서 테이블을 추출하는 것은 정적 문서를 구조화된 데이터로 변환해야 할 때 자주 요구됩니다. 이 튜토리얼에서는 Java용 GroupDocs.Parser 라이브러리를 사용하여 PDF에서 테이블 추출 방법을 배웁니다. 환경 설정, 테이블 레이아웃 구성, 그리고 pdf 테이블을 csv로 내보내기를 다룰 것입니다. 마지막까지 진행하면 Java 기반 데이터 파이프라인에 강력한 테이블 추출을 통합할 수 있게 됩니다.

빠른 답변

  • 주요 라이브러리는 무엇인가요? GroupDocs.Parser for Java
  • 스캔한 PDF에서 테이블을 추출할 수 있나요? OCR 후에만 가능; 아래 “extract tables scanned pdf” 참고
  • 라이선스가 필요합니까? 개발에는 체험 라이선스로 충분하고, 운영에는 정식 라이선스가 필요합니다.
  • 필요한 Java 버전은? Java 8 이상
  • 배치 처리 지원 여부? 예 – API가 대규모 추출에 최적화되어 있습니다.

Java PDF 테이블 추출이란?

Java PDF 테이블 추출은 PDF 내부의 표 구조를 프로그래밍 방식으로 찾아내고, 셀 경계를 해석하여 텍스트를 CSV 또는 Excel과 같은 기계가 읽을 수 있는 형식으로 가져오는 과정입니다. 이를 통해 수동 복사‑붙여넣기 없이도 하위 분석, 보고 또는 마이그레이션 작업을 수행할 수 있습니다.

Java PDF 테이블 추출에 GroupDocs.Parser를 사용하는 이유

GroupDocs.Parser는 50개 이상의 입력 및 출력 형식에 대한 정확한 레이아웃 감지를 제공하며, 메모리 사용량을 200 MB 이하로 유지하면서 수백 페이지 PDF를 처리할 수 있습니다. 배치 작업을 지원하고, 간단한 Maven 의존성을 제공하며, 스캔 문서 시나리오를 위해 GroupDocs OCR와 원활하게 통합됩니다.

사전 요구 사항

시작하기 전에 다음이 준비되어 있는지 확인하십시오:

  • **Java 8+**가 IDE 또는 빌드 도구에 설치 및 구성되어 있어야 합니다.
  • Maven이 의존성 관리에 필요합니다.
  • GroupDocs.Parser 라이선스(체험 또는 정식)에 접근할 수 있어야 합니다.

필요한 라이브러리 및 의존성

다음이 필요합니다:

  • GroupDocs.Parser for Java 라이브러리 (버전 25.5 이상).
  • 시스템에 Maven이 설치되어 있어야 합니다.

환경 설정

Java (Java 8 이상) 호환 버전으로 개발 환경이 설정되어 있는지 확인하십시오.

지식 사전 요구 사항

Java 프로그래밍에 대한 기본 이해와 Java에서 파일을 다루는 방법에 대한 친숙함이 도움이 됩니다.

Java용 GroupDocs.Parser 설정

GroupDocs.Parser를 사용하려면 다음과 같이 프로젝트에 통합하십시오:

Maven 설정
다음 구성을 pom.xml 파일에 추가하여 GroupDocs.Parser를 의존성으로 포함하십시오:

<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를 GroupDocs releases에서 다운로드하십시오.

라이선스 획득

무료 체험으로 시작하고, 임시 라이선스를 얻거나 정식 라이선스를 구매하십시오. 자세한 내용은 GroupDocs licensing page를 방문하십시오.

기본 초기화 및 설정

Java 애플리케이션에서 GroupDocs.Parser를 다음과 같이 초기화하십시오:

import com.groupdocs.parser.Parser;

public class DocumentParser {
    public static void main(String[] args) {
        final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
        try (Parser parser = new Parser(filePath)) {
            // Ready to perform operations on the document
        } catch (Exception e) {
            System.err.println("Error creating Parser instance: " + e.getMessage());
        }
    }
}

구현 가이드

PDF에서 테이블 추출 방법을 마스터하기 위해 각 기능을 단계별로 살펴보겠습니다.

기능 1: GroupDocs를 사용한 문서 파싱

개요
PDF 문서와 상호작용하려면 Parser 클래스의 인스턴스를 생성하십시오.
Parser는 GroupDocs.Parser에서 PDF 콘텐츠를 읽기 위한 진입점 클래스이며, 문서에 대한 다양한 작업을 수행할 수 있게 합니다.

파서 인스턴스 생성
Parser 클래스는 GroupDocs.Parser에서 PDF 콘텐츠를 읽기 위한 진입점입니다. 문서를 메모리로 로드하고 텍스트, 테이블 및 기타 구조를 추출하는 메서드를 제공합니다.

import com.groupdocs.parser.Parser;

public class CreateParserInstance {
    public static void main(String[] args) {
        final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
        try (Parser parser = new Parser(filePath)) {
            // Document is ready for operations
        } catch (Exception e) {
            System.err.println("Error creating Parser instance: " + e.getMessage());
        }
    }
}

기능 2: 테이블 추출 가능성 확인

개요
테이블을 추출하기 전에 PDF가 테이블 추출을 지원하는지 확인하십시오.

테이블 지원 확인
hasTables() 메서드는 로드된 PDF에 감지 가능한 표 데이터가 있는지 여부를 boolean 값으로 반환합니다.
hasTables()는 문서에 표가 있는지 확인합니다.

import com.groupdocs.parser.Parser;

public class CheckTableSupport {
    public static void main(String[] args) {
        final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
        try (Parser parser = new Parser(filePath)) {
            boolean isTablesSupported = parser.getFeatures().isTables();
            
            if (!isTablesSupported) {
                System.out.println("Document doesn't support tables extraction.");
            }
        } catch (Exception e) {
            System.err.println("Error checking table extraction capability: " + e.getMessage());
        }
    }
}

기능 3: 테이블 레이아웃 구성

개요
테이블 레이아웃을 구성하면 데이터 추출 정확도를 높일 수 있습니다.

테이블 레이아웃 설정
TemplateTableLayout은 예상되는 열 너비와 행 높이를 정의합니다.
TemplateTableLayout은 표 감지를 위한 사용자 정의 열 너비와 행 높이를 지정합니다. 이러한 값을 조정하면 엔진이 셀 경계를 시각적 그리드와 맞추는 데 도움이 됩니다.

import com.groupdocs.parser.templates.TemplateTableLayout;
import java.util.Arrays;

public class ConfigureTableLayout {
    public static void main(String[] args) {
        final double[] columnWidths = {50.0, 95.0, 275.0, 415.0, 485.0, 545.0};
        final double[] rowHeights = {325.0, 340.0, 365.0, 395.0};

        TemplateTableLayout layout = new TemplateTableLayout(
                Arrays.asList(columnWidths), 
                Arrays.asList(rowHeights));
    }
}

기능 4: 테이블 추출 옵션 설정

개요
특정 구성을 사용하여 테이블을 추출하기 위한 옵션을 설정하면 추출 정확도를 향상시킬 수 있습니다.

추출 옵션 구성
TableExtractionOptions를 사용하면 헤더 행 포함 여부, 셀 병합, 빈 행 무시 등을 지정할 수 있습니다.
TableExtractionOptions는 헤더 포함이나 셀 병합과 같은 추출 동작을 구성합니다.

import com.groupdocs.parser.options.PageTableAreaOptions;
import com.groupdocs.parser.templates.TemplateTableLayout;

public class SetExtractionOptions {
    public static void main(String[] args) {
        TemplateTableLayout layout = new TemplateTableLayout(
                Arrays.asList(new Double[]{50.0, 95.0, 275.0, 415.0, 485.0, 545.0}), 
                Arrays.asList(new Double[]{325.0, 340.0, 365.0, 395.0}));

        PageTableAreaOptions options = new PageTableAreaOptions(layout);
    }
}

기능 5: 문서에서 테이블 추출

개요
구성된 옵션을 사용하여 테이블을 추출하고 필요에 따라 처리합니다.

추출 과정
getTables() 메서드는 요청된 페이지에서 감지된 각 테이블을 나타내는 Table 객체 컬렉션을 반환합니다.
getTables()는 문서에서 감지된 모든 테이블을 가져옵니다.
Table은 행과 셀을 가진 단일 추출 테이블을 나타냅니다.

import com.groupdocs.parser.Parser;
import com.groupdocs.parser.options.PageTableAreaOptions;
import com.groupdocs.parser.data.PageTableArea;

public class ExtractTables {
    public static void main(String[] args) {
        final String filePath = "YOUR_DOCUMENT_DIRECTORY/SampleInvoicePagesPdf.pdf";
        PageTableAreaOptions options = new PageTableAreaOptions(/* layout from previous feature */);

        try (Parser parser = new Parser(filePath)) {
            Iterable<PageTableArea> tables = parser.getTables(options);
            
            for (PageTableArea table : tables) {
                // Process each table as needed
            }
        } catch (Exception e) {
            System.err.println("Error extracting tables: " + e.getMessage());
        }
    }
}

기능 6: 테이블 행 및 열 반복

개요
추출 후 행과 열을 반복하여 개별 셀에 접근합니다.

반복 및 셀 접근
각 Table은 getRows()를 제공하고, 각 Row는 getCells()를 제공합니다. getText()를 통해 셀 텍스트를 읽고 CSV 또는 다른 형식으로 쓸 수 있습니다.
Row는 Table 내의 단일 행을 나타냅니다.
getRows()는 테이블의 행 목록을 반환합니다.
getCells()는 행의 셀을 반환합니다.
getText()는 셀의 텍스트 내용을 가져옵니다.

import com.groupdocs.parser.data.PageTableArea;
import com.groupdocs.parser.data.PageTableAreaCell;

public class IterateTables {
    public static void main(String[] args) {
        PageTableArea table = /* reference to a specific PageTableArea object */;

        for (int row = 0; row < table.getRowCount(); row++) {
            for (int column = 0; column < table.getColumnCount(); column++) {
                PageTableAreaCell cell = table.getCell(row, column);
                if (cell != null) {
                    // Process the cell text as needed
                }
            }
        }
    }
}

일반적인 문제 및 해결책

IssueWhy it happensPro tip
테이블이 반환되지 않음PDF가 스캔된 이미지 기반이기 때문먼저 OCR을 실행하거나 파싱 전에 GroupDocs OCR을 사용하십시오.
열 정렬이 올바르지 않음레이아웃 좌표가 맞지 않음TemplateTableLayout 값을 시각적 그리드에 맞게 미세 조정하십시오.
대용량 PDF에서 메모리 급증Parser가 전체 문서를 메모리로 로드하기 때문페이지를 배치로 처리하고 각 배치 후 Parser를 닫으십시오.

자주 묻는 질문

1. 스캔된 PDF에서 테이블을 추출할 수 있나요, 아니면 디지털 PDF만 가능한가요?

Answer: GroupDocs.Parser는 주로 텍스트가 선택 가능한 디지털 PDF에서 작동합니다. 스캔된 PDF의 경우 먼저 OCR을 실행해야 합니다—GroupDocs OCR 또는 다른 OCR 엔진을 사용하여 텍스트를 검색 가능하게 만든 후에 테이블 추출을 수행합니다.

2. 복잡한 레이아웃이나 병합된 셀이 있는 테이블을 어떻게 처리하나요?

Answer: TemplateTableLayout에 정확한 열 및 행 좌표를 지정하거나 TableExtractionOptions에서 mergeCells 플래그를 활성화하십시오. 병합된 영역을 올바르게 해석하려면 후처리가 필요할 수 있습니다.

3. GroupDocs.Parser가 대용량 문서나 배치 처리에 적합한가요?

Answer: 예. 이 라이브러리는 고처리량 시나리오를 위해 설계되었으며, 메모리 사용량을 낮게 유지하면서 수백 페이지 PDF를 처리할 수 있습니다. 페이지 범위 옵션을 사용하고 각 배치 후 Parser 인스턴스를 해제하여 성능을 최적화하십시오.

4. 추출된 테이블 데이터를 CSV 또는 Excel과 같은 형식으로 내보낼 수 있나요?

Answer: GroupDocs.Parser는 원시 테이블 데이터(행 및 셀)를 반환합니다. OpenCSV를 사용해 CSV로, Apache POI를 사용해 Excel로 쉽게 기록할 수 있습니다. 이는 추가 라이선스 없이 export pdf tables csv 사용 사례를 충족합니다.

5. 여러 페이지에서 한 번에 테이블을 추출하는 것을 지원하나요?

Answer: 물론입니다. 페이지 범위를 지정해 parser.getTables(pageOptions)를 호출하거나 모든 페이지를 순회하십시오. API가 페이지 전반에 걸친 테이블을 집계하여 단일 통합 데이터세트를 만들 수 있게 합니다.

결론

GroupDocs.Parser를 사용하면 Java PDF 테이블 추출이 간단해집니다. Parser를 초기화하고, 테이블 지원을 확인하며, 레이아웃 및 추출 옵션을 구성하고, 결과 Table 객체를 순회함으로써 정적 PDF를 구조화된 CSV 또는 Excel 파일로 변환할 수 있습니다. 이 라이브러리는 성능 중심 설계, 50개 이상의 형식 지원, 원활한 OCR 통합을 제공하여 인보이스 자동화, 데이터 마이그레이션 및 대규모 분석 파이프라인에 이상적인 선택입니다. 위 단계들을 따르면 Java 애플리케이션에 신뢰할 수 있는 테이블 추출을 손쉽게 삽입할 수 있습니다.


최종 업데이트: 2026-09-17
테스트 환경: GroupDocs.Parser 25.5 (Java)
작성자: GroupDocs

관련 튜토리얼