[java] Apache Tika 와 문서 분할하기

Apache Tika는 다양한 문서 형식을 분석하고 추출하기 위한 오픈 소스 라이브러리입니다. 이를 사용하여 텍스트 파일, PDF, 워드 문서, 스프레드시트 등 다양한 형식의 문서를 분석하고 내용을 추출할 수 있습니다.

Apache Tika 설치

Apache Tika를 사용하기 위해서는 먼저 아파치 Tika를 설치해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음과 같이 의존성을 추가합니다.

<dependency>
  <groupId>org.apache.tika</groupId>
  <artifactId>tika-core</artifactId>
  <version>1.26</version>
</dependency>

Gradle을 사용하는 경우, build.gradle 파일에 다음과 같이 의존성을 추가합니다.

dependencies {
  implementation 'org.apache.tika:tika-core:1.26'
}

의존성을 추가한 후, 프로젝트를 다시 빌드합니다.

문서 분할하기

Apache Tika를 사용하여 문서를 분할하는 방법은 매우 간단합니다. 다음은 예제 코드입니다.

import org.apache.tika.Tika;
import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;

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

public class DocumentSplitter {
    public static void main(String[] args) {
        File inputFile = new File("input.docx");

        try (InputStream inputStream = new FileInputStream(inputFile)) {
            Tika tika = new Tika();
            Parser parser = tika.getParser();
            Metadata metadata = new Metadata();
            ParseContext parseContext = new ParseContext();
            BodyContentHandler handler = new BodyContentHandler();

            parser.parse(inputStream, handler, metadata, parseContext);

            String[] paragraphs = handler.toString().split("\\n\\n");

            for (String paragraph : paragraphs) {
                System.out.println(paragraph);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TikaException e) {
            e.printStackTrace();
        }
    }
}

위 코드는 input.docx 문서를 읽고, 각 단락을 분할하여 출력합니다. input.docx 파일은 변경해야 합니다.

결론

Apache Tika를 사용하면 다양한 문서 형식을 쉽게 분할하고 내용을 추출할 수 있습니다. 이를 통해 텍스트 분석, 검색 엔진 구현 등 다양한 응용 프로그램을 개발할 수 있습니다.

더 자세한 내용은 Apache Tika 공식 웹 사이트에서 확인할 수 있습니다.