7

Apache Tikaを使用して、さまざまなドキュメント(ODS、MS Office、PDF)の簡単な処理を行っています。私は少なくとも取得する必要があります:

word count, author, title, timestamps, language etc.

これはそれほど簡単ではありません。私の戦略は、6種類のドキュメントにテンプレートメソッドパターンを使用することです。ここでは、最初にドキュメントの種類を見つけ、それに基づいて個別に処理します。

apache tikaでこれが不要になることはわかっていますが、ドキュメントの形式はまったく異なりますよね?

例えば

InputStream input = this.getClass().getClassLoader().getResourceAsStream(doc);
ContentHandler textHandler = new BodyContentHandler();
Metadata metadata = new Metadata();
Parser parser = new OfficeParser();
parser.parse(input, textHandler, metadata, new ParseContext());
input.close();

for(String s : metadata.names()) {
    System.out.println("Metadata name : "  + s);
}

私はODS、MS Office、PDFドキュメントに対してこれを実行しようとしましたが、メタデータは大きく異なります。MSドキュメントのメタデータキーといくつかのDublicCoreメタデータリストを一覧表示するMSOfficeインターフェイスがあります。しかし、このようなアプリケーションをどのように実装する必要がありますか?

それを経験した人は誰でも彼の経験を共有できますか?ありがとうございました

4

1 に答える 1

6

通常、パーサーは、すべてのドキュメント形式で同じ種類のものに対して同じメタデータキーを返す必要があります。ただし、一部のファイルタイプでのみ発生するメタデータの種類があるため、他のファイルタイプからそれらを取得することはできません。

AutoDetectParserを使用するだけで、後でmimetypeに基づいてメタデータハンドルで特別なことを行う必要がある場合は、次のようになります。

Metadata metadata = new Metadata();
metadata.set(Metadata.RESOURCE_NAME_KEY, filename);
ParseContext context = new ParseContext();

Parser parser = new AutoDetectParser();
parser.parse(input, textHandler, metadata, new ParseContext());

if(metadata.get(CONTENT_TYPE).equals("application/pdf")) {
   // Do something special with the PDF metadata here
}
于 2011-03-31T21:56:57.870 に答える