Java를 사용하여 PDF 문서에서 텍스트 및 이미지 추출

PDF는 가장 널리 사용되는 디지털 문서 형식입니다. PDF 문서를 구문 분석하고 프로그래밍 방식으로 문서에서 텍스트와 이미지를 추출할 수 있습니다. 텍스트 분석, 정보 검색, 문서 변환 등과 같은 여러 경우에 유용할 수 있습니다. 이 기사에서는 Java를 사용하여 PDF 문서에서 텍스트와 이미지를 추출하는 방법을 배웁니다.

이 기사에서는 다음 주제를 다룹니다.

PDF 문서에서 텍스트 및 이미지를 추출하는 Java API

PDF 문서에서 텍스트와 이미지를 추출하기 위해 GroupDocs.Parser for Java API를 사용할 것입니다. 지원 형식의 파일에서 원시, 형식 및 구조화된 텍스트, 메타데이터 및 이미지를 추출할 수 있습니다. API의 JAR을 다운로드하거나 Maven 기반 Java 애플리케이션에서 다음 pom.xml 구성을 추가하십시오.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>https://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
	<groupId>com.groupdocs</groupId>
	<artifactId>groupdocs-parser</artifactId>
	<version>22.3</version> 
</dependency>

Java를 사용하여 PDF 문서에서 텍스트 추출

아래 단계에 따라 PDF 문서를 구문 분석하고 텍스트를 추출할 수 있습니다.

  • 먼저 Parser 클래스를 사용하여 PDF 파일을 로드합니다.
  • 다음으로 Parser.getText() 메서드를 호출하여 로드된 문서에서 텍스트를 추출합니다.
  • 그런 다음 TextReader 클래스 개체에서 결과를 가져옵니다.
  • 마지막으로 TextReader.readToEnd() 메서드를 호출하여 현재 위치에서 텍스트 리더 끝까지의 모든 문자를 읽고 하나의 문자열로 반환합니다.

다음 코드 샘플은 Java를 사용하여 PDF 파일에서 텍스트를 추출하는 방법을 보여줍니다.

// 이 코드 예제는 PDF를 구문 분석하고 텍스트를 추출하는 방법을 보여줍니다.
// Parser 클래스의 인스턴스 생성
Parser parser = new Parser("D:\\Files\\Parser\\sample.pdf");

// 판독기로 텍스트 추출
try (TextReader reader = parser.getText()) {
    // 문서에서 텍스트 인쇄
    // 텍스트 추출이 지원되지 않는 경우 판독기는 null입니다.
    System.out.println(reader == null ? "Text extraction isn't supported" : reader.readToEnd());
}
Java를 사용하여 PDF 문서에서 텍스트 추출

Java를 사용하여 PDF 문서에서 텍스트 추출

Java를 사용하여 PDF 문서의 특정 페이지에서 텍스트 추출

아래에 언급된 간단한 단계에 따라 PDF 문서를 구문 분석하고 특정 페이지에서 텍스트를 추출할 수 있습니다.

  • 먼저 Parser 클래스를 사용하여 PDF 파일을 로드합니다.
  • 다음으로 Parser.getDocumentInfo() 메서드를 사용하여 문서 정보를 가져옵니다.
  • 그런 다음 IDocumentInfo.getPageCount()이 0이 아닌지 확인합니다.
  • 그런 다음 페이지 인덱스가 있는 Parser.getText() 메서드를 호출하여 해당 페이지에서 텍스트를 추출하고 TextReader 클래스 객체에서 결과를 가져옵니다.
  • 마지막으로 TextReader.readToEnd() 메서드를 호출하여 추출된 텍스트를 읽어 결과를 표시합니다.

다음 코드 샘플은 Java를 사용하여 특정 페이지에서 텍스트를 추출하는 방법을 보여줍니다.

// 이 코드 예제는 PDF를 구문 분석하고 특정 페이지에서 텍스트를 추출하는 방법을 보여줍니다.
// Parser 클래스의 인스턴스 생성
Parser parser = new Parser("D:\\Files\\Parser\\sample.pdf");

// 문서 정보 얻기
IDocumentInfo documentInfo = parser.getDocumentInfo();

// 문서에 페이지가 있는지 확인
if (documentInfo == null || documentInfo.getRawPageCount() == 0) {
    System.out.println("Document hasn't pages.");
    return;
}

// 판독기로 텍스트 추출
try (TextReader reader = parser.getText(1)) {
    // 문서에서 텍스트 인쇄
    // 텍스트 추출이 지원되지 않는 경우 판독기는 null입니다.
    System.out.println(reader.readToEnd());
}

API는 문서가 텍스트 추출 기능을 지원하는지 여부도 확인할 수 있습니다. 이를 위해 Parser.getFeature().isText() 속성을 사용할 수 있습니다. 지원 기능에 대해 자세히 알아보세요.

Java를 사용하여 PDF 문서에서 이미지 가져오기

아래 단계에 따라 PDF 문서를 구문 분석하고 이미지를 추출할 수 있습니다.

  • 먼저 Parser 클래스를 사용하여 PDF 파일을 로드합니다.
  • 다음으로 Parser.getImages() 메서드를 호출하고 로드된 문서에서 PageImageArea 개체 컬렉션을 가져옵니다.
  • 그런 다음 컬렉션이 null이 아닌지 확인하십시오.
  • 그런 다음 발견된 모든 이미지를 반복합니다.
  • 마지막으로 이미지 세부 정보를 표시합니다.

다음 코드 샘플은 Java를 사용하여 PDF 파일에서 이미지 세부 정보를 가져오는 방법을 보여줍니다.

// 이 코드 예제는 PDF를 구문 분석하고 이미지를 가져오는 방법을 보여줍니다.
// Parser 클래스의 인스턴스 생성
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// 이미지 추출
Iterable<PageImageArea> images = parser.getImages();

// 이미지 추출이 지원되는지 확인
if (images == null) {
    System.out.println("Images extraction isn't supported");
    return;
}

// 이미지 반복
for (PageImageArea image : images) {
    // 페이지 인덱스, 직사각형 및 이미지 유형 인쇄:
    System.out.println("Page: " + image.getPage().getIndex());
    System.out.println("Image Rectangle: " + image.getRectangle());
    System.out.println("Image Filetype: " + image.getFileType());
    System.out.println("----------------------------------------");
}
Java를 사용하여 PDF 문서에서 이미지 가져오기

Java를 사용하여 PDF 문서에서 이미지 가져오기

Java를 사용하여 PDF 문서의 특정 페이지에서 이미지 추출

아래에 언급된 간단한 단계에 따라 특정 페이지에서 이미지를 추출할 수 있습니다.

  • 먼저 Parser 클래스를 사용하여 PDF 파일을 로드합니다.
  • 다음으로 Parser.getDocumentInfo() 메서드를 사용하여 문서 정보를 가져옵니다.
  • 그런 다음 IDocumentInfo.getPageCount()이 0이 아닌지 확인합니다.
  • 그런 다음 페이지 인덱스가 있는 Parser.getImages() 메서드를 호출하여 해당 페이지에서 이미지를 추출합니다.
  • 마지막으로 찾은 모든 이미지를 반복하고 세부 정보를 표시합니다.

다음 코드 샘플은 Java를 사용하여 특정 페이지에서 이미지를 추출하는 방법을 보여줍니다.

// 이 코드 예제는 PDF를 구문 분석하고 특정 페이지에서 이미지를 가져오는 방법을 보여줍니다.
// Parser 클래스의 인스턴스 생성
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// 문서 정보 얻기
IDocumentInfo documentInfo = parser.getDocumentInfo();

// 문서에 페이지가 있는지 확인
if (documentInfo.getPageCount() == 0) {
    System.out.println("Document hasn't pages.");
    return;
}

int pageIndex = 1;

// 이미지 반복
// 이전에 이미지 추출 기능 지원을 확인했기 때문에 null 검사를 무시합니다.
for (PageImageArea image : parser.getImages(pageIndex)) {
  // 페이지 인덱스, 직사각형 및 이미지 유형 인쇄:
    System.out.println("Page: " + image.getPage().getIndex());
    System.out.println("Image Rectangle: " + image.getRectangle());
    System.out.println("Image Filetype: " + image.getFileType());
    System.out.println("----------------------------------------");
}

Java를 사용하여 파일에 이미지 추출 및 저장

아래 단계에 따라 추출된 이미지를 저장할 수도 있습니다.

  • 먼저 Parser 클래스를 사용하여 PDF 파일을 로드합니다.
  • 다음으로 Parser.getImages() 메서드를 호출하고 로드된 문서에서 PageImageArea 객체 컬렉션을 가져옵니다.
  • 그런 다음 ImageOptions 클래스의 인스턴스를 만들고 이미지 형식을 설정합니다.
  • 그런 다음 발견된 모든 이미지를 반복합니다.
  • 마지막으로 save() 메서드를 사용하여 저장합니다. 출력 파일 경로와 ImageOptions를 인수로 사용합니다.

다음 코드 샘플은 Java를 사용하여 이미지를 추출하고 파일에 저장하는 방법을 보여줍니다.

// 이 코드 예제는 디렉터리에서 이미지를 추출하는 방법을 보여줍니다.
// Parser 클래스의 인스턴스 생성
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// 문서에서 이미지 추출
Iterable<PageImageArea> images = parser.getImages();

// 이미지 추출이 지원되는지 확인
if (images == null) {
    System.out.println("Page images extraction isn't supported");
    return;
}

// 이미지를 PNG 형식으로 저장하는 옵션 만들기
ImageOptions options = new ImageOptions(ImageFormat.Png);

int imageNumber = 0;

// 이미지 반복
for (PageImageArea image : images)
{
    // 이미지를 PNG 파일로 저장
    image.save(String.format("D:\\Files\\Parser\\Images\\%d.png", imageNumber), options);
    imageNumber++;
}
Java를 사용하여 파일에 이미지 추출 및 저장

Java를 사용하여 파일에 이미지 추출 및 저장

무료 라이선스 받기

임시 무료 라이선스를 요청하면 평가 제한 없이 API를 사용해 볼 수 있습니다.

결론

이 문서에서는 다음 방법을 배웠습니다.

  • Java를 사용하여 전체 PDF 문서 또는 문서의 특정 페이지에서 모든 텍스트를 추출합니다.
  • 프로그래밍 방식으로 PDF 파일에서 이미지를 추출합니다.
  • 추출된 이미지를 로컬 디스크에 저장합니다.

또한 문서를 사용하여 Java API용 GroupDocs.Parser에 대해 자세히 알아볼 수 있습니다. 모호한 부분이 있는 경우 포럼을 통해 언제든지 문의해 주십시오.

또한보십시오