[java] Apache Tika 와 PDF 처리

Apache Tika는 텍스트, 메타데이터, 그림 등 다양한 형식의 문서를 처리하기 위한 라이브러리입니다. 이 라이브러리는 Java로 작성되어 있으며, 특히 PDF 문서 처리에 유용하게 사용될 수 있습니다.

Apache Tika를 사용해서 PDF 문서를 처리하는 방법에 대해 알아보겠습니다.

1. Apache Tika 설치

Apache Tika를 사용하기 위해서는 다음과 같이 Maven 또는 Gradle을 이용하여 의존성을 추가해주어야 합니다.

<dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-parsers</artifactId>
    <version>1.27</version>
</dependency>

2. PDF 문서 파싱하기

다음은 Apache Tika를 사용하여 PDF 문서를 파싱하는 간단한 예제 코드입니다.

import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.sax.BodyContentHandler;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

public class PdfParserExample {

    public static void main(String[] args) throws Exception {
        // 파싱할 PDF 파일 경로
        String filePath = "path/to/pdf/file.pdf";

        // Tika Parser 객체 생성
        AutoDetectParser parser = new AutoDetectParser();

        // 문서 내용을 추출할 핸들러 생성
        BodyContentHandler handler = new BodyContentHandler();

        // 메타데이터를 추출할 객체 생성
        Metadata metadata = new Metadata();

        // ParseContext 객체 생성
        ParseContext context = new ParseContext();

        try (InputStream inputStream = new FileInputStream(new File(filePath))) {
            // PDF 문서 파싱
            parser.parse(inputStream, handler, metadata, context);
        }

        // 문서의 텍스트 내용 출력
        System.out.println(handler.toString());

        // 문서의 메타데이터 출력
        for (String name : metadata.names()) {
            System.out.println(name + ": " + metadata.get(name));
        }
    }
}

위 예제 코드에서는 Apache Tika의 AutoDetectParser를 사용하여 PDF 문서를 파싱합니다. BodyContentHandler는 문서의 텍스트 내용을 추출하기 위한 핸들러이며, Metadata 객체는 문서의 메타데이터를 저장합니다. ParseContext는 파싱에 필요한 컨텍스트 정보를 제공합니다.

3. 결과 확인하기

위 예제 코드를 실행하면 PDF 문서의 텍스트 내용과 메타데이터를 추출할 수 있습니다. 문서 내용은 handler.toString()을 통해 확인할 수 있고, 메타데이터는 metadata 객체를 통해 확인할 수 있습니다.

Apache Tika를 사용하면 PDF 문서를 포함한 다양한 형식의 문서를 쉽게 처리할 수 있습니다. 추가적인 기능이나 설정에 대해서는 Apache Tika 문서를 참고하시기 바랍니다.

이 글은 Tech Blog에서 작성되었습니다.