▶ Apache Tika 예제 테스트
- 다양한 문서에서 메타 정보와 컨텐츠를 추출하기 위해 사용할 수 있는 유용한 라이브러리는 아파치 Tika이다.
- Docar 프로젝트에 Tika를 적용을 위한 사전 검증으로서 프로젝트 환경 설정 및 예제 테스트를 수행한다.
▶ 프로젝트 환경 설정 및 예제 작성
- Maven 환경 설정
: 프로젝트 내에서 Tika를 사용하기 위해 의존성(dependencies)을 설정한다. 2015년 3월 기준, 아파치 Tika의 최신 버전은 1.7 이다.
<!-- [end] 아파치 Tika 라이브러리 --> <properties> <tika.version>1.7</tika.version> </properties> <!-- [start] 아파치 Tika 라이브러리 --> <dependency> <groupId>org.apache.tika</groupId> <artifactId>tika-core</artifactId> <version>${tika.version}</version> </dependency> <dependency> <groupId>org.apache.tika</groupId> <artifactId>tika-parsers</artifactId> <version>${tika.version}</version> </dependency>
- 예제 코드 작성
: MS Word 문서 파일 읽어들여, 메타 데이터를 검출하고 컨텐츠를 추출하는 예제는 다음과 같다.
package docar.archive.extraction; import java.io.IOException; import java.io.InputStream; import org.apache.tika.exception.TikaException; import org.apache.tika.metadata.Metadata; import org.apache.tika.parser.AutoDetectParser; import org.apache.tika.parser.ParseContext; import org.apache.tika.parser.Parser; import org.apache.tika.sax.BodyContentHandler; import org.xml.sax.SAXException; public class AutoDetectionExample { public static void main(final String[] args) throws IOException, SAXException, TikaException { Parser parser = new AutoDetectParser(); System.out.println("------------ Parsing an Office Document:"); extractFromFile(parser, "/demo.doc"); } private static void extractFromFile(final Parser parser, final String fileName) throws IOException, SAXException, TikaException { long start = System.currentTimeMillis(); BodyContentHandler handler = new BodyContentHandler(10000000); Metadata metadata = new Metadata(); InputStream content = AutoDetectionExample.class .getResourceAsStream(fileName); parser.parse(content, handler, metadata, new ParseContext()); for (String name : metadata.names()) { System.out.println(name + ":\t" + metadata.get(name)); } System.out.println(String.format( "------------ Processing took %s millis\n\n", System.currentTimeMillis() - start)); System.out.println("------------ content of document\n" + handler.toString()); } }
▶ 추가 고려 사항
- 다양한 문서 형식에서 추출할 수 있는 메타 데이터에서 '문서관리 시스템'에서 활용할 수 있는 유용한 후보(candidates)들은 다음과 같다. : "Content-Type", "Author", "Last-Modified", "Creation-Date", "title"
- "Content-Type" : 파일 형식 별 검색을 위해 필요한 정보이므로 필수 항목이다.
- "Author" : "작성자" 혹은 "저자" 정보는 MS-Office 등의 문서 형식에서 부정확한 경우가 많다. 예를 들어 타인이 작성한 문서를 복사 및 편집한 후 저장한 문서일 경우에는 원래 파일의 작성자 정보만이 남아 있게 된다. 따라서, 부수적인 정보로 취급해야 한다.
- "Creation-Date" : 문서의 생성일자는 특정 기간에 생성된 문서를 검색하는데 유용한 정보이다.
- "Last-Modified" : 문서의 최종 변경일자는 버전 관리를 위해 필요한 정보이다. 문서 저장소에 저장된 파일과 입력된 파일을 비교해서 입력된 파일의 변경일자가 저장소의 파일보다 나중인 경우에는 새로운 버전으로 문서 저장소에 추가해야 한다.
- "title" : 제목 또한 부정확한 정보가 될 수 있다. 앞서 작성자 정보와 마찬가지로 복사한 파일을 편집한 후에 저장하면 이전 작성자의 정보가 그대로 남아있게 된다.
▶ 참조 링크 및 이클립스 프로젝트 (소스 다운로드)