Java의 PDF 파일에서 텍스트 추출

Java의 PDF 파일에서 텍스트 추출

빠르게 변화하는 세상에서 데이터의 양은 기하급수적으로 확장되고 있습니다. PDF 파일은 데이터를 저장하고 표현하는 데 엄청나게 사용되고 있습니다. 유용한 단락에 액세스하기 위해 많은 수의 PDF 페이지를 탐색하는 것이 어려워집니다. 따라서 프로그래밍 방식으로 Java의 PDF 파일에서 텍스트를 추출하는 방법을 배웁니다. 그러나 텍스트 추출의 전체 프로세스를 자동화하면 시간과 노력을 절약하고 효율성을 얻을 수 있습니다. PDF 파일 작업을 위한 구성 가능한 방법을 제공하는 설치하기 쉬운 PDF Java 라이브러리를 사용합니다.

이 블로그 게시물에서는 다음 사항을 다룹니다.

PDF Java 라이브러리 - 설치 단계

jar 파일을 다운로드하여 Java 애플리케이션에 이 라이브러리를 쉽게 설치하거나 다음 Maven 구성을 따를 수 있습니다.

저장소

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

의존

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-pdf</artifactId>
    <version>20.12</version>
    <classifier>jdk17</classifier>
</dependency>

Java의 PDF 파일에서 텍스트 추출

이 섹션에서는 PDF 문서의 모든 페이지에서 텍스트를 추출하는 단계와 코드 스니펫을 작성합니다.

다음 단계를 수행하십시오.

  1. Document 클래스의 객체를 생성하여 PDF 문서를 엽니다.
  2. TextAbsorber 클래스의 객체를 초기화하여 텍스트 추출을 수행합니다.
  3. 모든 페이지에 대해 흡수기를 허용하는 getPages() 메서드를 호출합니다.
  4. getText() 메서드를 호출하여 추출된 텍스트를 가져옵니다.
  5. 추출된 텍스트를 파일에 쓰고 작성기를 닫습니다.

프로그래밍 방식으로 PDF 문서에서 텍스트를 추출하려면 다음 코드 조각을 복사하여 붙여넣습니다.

        // Document 클래스의 객체를 생성하여 PDF 문서를 엽니다.
        Document pdfDocument = new Document("INPUT-PDF-FILE");

        // TextAbsorber의 객체를 초기화하여 텍스트 추출을 수행합니다.
        TextAbsorber textAbsorber = new TextAbsorber();

        // 모든 페이지에 대한 흡수 장치를 허용하는 getPages() 메서드를 호출합니다.
        pdfDocument.getPages().accept(textAbsorber);

        // getText() 메서드를 호출하여 추출된 텍스트를 가져옵니다.
        String extractedText = textAbsorber.getText();
        try {
            FileWriter writer = new FileWriter(  "PATH-FOR-OUTPUT-FILE/extracted-text.txt", true);
            // 파일에 한 줄의 텍스트 쓰기
            writer.write(extractedText);
            // 스트림 닫기
            writer.close();
        } catch (java.io.IOException e) {
            e.printStackTrace();
        }

특정 페이지 영역에서 텍스트를 추출하는 방법

라이브러리를 사용하면 PDF 문서의 원하는 페이지에서 텍스트를 추출할 수도 있습니다.

이를 달성하기 위해 다음 단계를 따릅니다.

  1. Document 클래스의 개체를 만들고 원본 PDF 파일을 로드합니다.
  2. TextAbsorber 클래스의 객체를 인스턴스화하여 데이터를 추출합니다.
  3. 추출된 텍스트를 구분하는 사각형을 정의할 수 있는 getTextSearchOptions() 메서드를 호출합니다.
  4. getPages()을 호출하여 문서 페이지 컬렉션을 가져오고 첫 페이지에 대한 흡수 장치를 수락합니다.
  5. getText()을 호출하여 추출된 텍스트를 가져와 파일에 씁니다.
  6. close() 메서드를 호출하여 스트림을 닫습니다.

Java 파일에 다음 코드 스니펫을 복사하여 붙여넣습니다.

       // Document 클래스의 객체를 생성하고 소스 PDF 파일을 로드합니다.
        Document doc = new Document("INPUT-PDF-FILE");
        // TextAbsorber의 개체를 인스턴스화하여 데이터를 추출합니다.
        TextAbsorber absorber = new TextAbsorber();
        // 추출된 텍스트를 구분하는 사각형을 정의할 수 있는 getTextSearchOptions() 메서드를 호출합니다.-
        absorber.getTextSearchOptions().setRectangle(new Rectangle(100, 200, 250, 350));
        // getPages()를 호출하여 문서 페이지 모음을 가져오고 첫 페이지에 대한 흡수 장치를 수락합니다.
        doc.getPages().get_Item(1).accept(absorber);
        // getText()를 호출하여 추출된 텍스트를 가져와 파일에 씁니다.
        String extractedText = absorber.getText();
        // 작성자를 만들고 파일을 엽니다.
        BufferedWriter writer = new BufferedWriter(new FileWriter(new java.io.File("PATH-FOR-OUTPUT-FILE/ExtractedText.txt")));
        // 추출한 내용 쓰기
        writer.write(extractedText);
        // 작가 닫기
        writer.close();

단락 형식의 PDF 파일에서 텍스트를 추출하는 Java 라이브러리

이 섹션에서는 단락의 PDF 문서에서 데이터를 추출하는 다음 단계와 코드 조각을 보여줍니다.

  1. Document 클래스의 개체를 초기화하고 원본 PDF 파일을 로드합니다.
  2. ParagraphAbsorber 클래스의 객체를 생성합니다.
  3. 지정된 문서의 섹션 및 단락 검색을 수행하는 visit(Document doc)를 호출합니다.
  4. getPageMarkups()을 호출하여 흡수된 PageMarkup 컬렉션을 가져옵니다.
  5. getSections() 메서드를 사용하여 페이지에서 찾은 MarkupSection 컬렉션을 반복합니다.
  6. 페이지에서 찾은 MarkupParagraph 컬렉션을 가져오는 이 getParagraphs() 메서드를 호출합니다.
  7. getLines() 메서드를 호출하여 단락의 줄을 반복합니다.
        // Document 클래스의 객체를 초기화하고 원본 PDF 파일을 로드합니다.
        Document doc = new Document(  "./static/sample.pdf");
        // ParagraphAbsorber 클래스의 개체를 만듭니다.
        ParagraphAbsorber absorber = new ParagraphAbsorber();
        // 지정된 문서의 섹션 및 단락 검색을 수행하는 방문(Document doc)을 호출합니다.
        absorber.visit(doc);
        // getPageMarkups()를 호출하여 흡수된 PageMarkup 컬렉션을 가져옵니다.
        for (PageMarkup markup : absorber.getPageMarkups()) {
            int i = 1;
            // getSections() 메서드를 사용하여 페이지에서 찾은 MarkupSection 컬렉션을 반복합니다.
            for (MarkupSection section : markup.getSections()) {
                int j = 1;
         // 페이지에서 찾은 MarkupParagraph 컬렉션을 가져오는 getParagraphs() 메서드를 호출합니다. https://reference.aspose.com/pdf/java/com.aspose.pdf/page/Markup#getParagraphs--
                for (MarkupParagraph paragraph : section.getParagraphs()) {
                    StringBuilder paragraphText = new StringBuilder();
                    // getLines() 메서드를 호출하여 단락의 줄을 반복합니다.
                    for (java.util.List<TextFragment> line : paragraph.getLines()) {
                        for (TextFragment fragment : line) {
                            paragraphText.append(fragment.getText());
                        }
                        paragraphText.append("\r\n");
                    }
                    paragraphText.append("\r\n");

                    System.out.println("Paragraph "+j+" of section "+ i + " on page"+ ":"+markup.getNumber());
                    System.out.println(paragraphText.toString());

                    j++;
                }
                i++;
            }
        }

무료 라이선스 받기

평가 제한 없이 API를 사용해 볼 수 있는 무료 임시 라이선스를 얻을 수 있습니다.

합산

이것은 우리를 이 기사의 끝으로 이끕니다. 프로그래밍 방식으로 Java의 PDF 파일에서 텍스트를 추출하는 방법을 살펴보았습니다. 또한 특정 페이지 영역에서 텍스트를 추출하는 코드 스니펫을 살펴보고 단락 형식으로 텍스트 추출을 탐색했습니다. 또한 문서를 통해 이 PDF Java 라이브러리의 다른 기능을 탐색할 수 있습니다. 마지막으로 conholdate.com은 지속적으로 새로운 블로그 게시물을 작성하고 있습니다. 따라서 최신 업데이트에 대한 연락을 유지하십시오.

질문하기

문의 사항이 있는 경우 포럼에 언제든지 문의해 주십시오.

또한보십시오