0
には:アパッチティカ抽出するjarファイルを介したメタデータではなく、私は次の行を使用してティカアプリ実行可能なjarファイルを経由してメタデータを抽出することができましたサンプルコード
java -jar tika-app-1.13.jar --metadata example_received_regular.msg
これは、すべてのメタデータを出力します。しかし、私がJavaプログラムで同じファイルを簡単に抽出しようとすると、私はそれを取得しません。
public static void main(String[] args) throws Exception {
Class<?> clazz = Class.forName("org.apache.tika.parser.ocr.TesseractOCRParser");
FileInputStream des = new FileInputStream("/Users/jason/docstore/example_received_regular.msg");
Tika tika = new Tika();
AutoDetectParser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler(-1);
String detected = tika.detect(des);
Metadata tikaMetadata = new Metadata();
parser.parse(des, handler, tikaMetadata, new ParseContext());
String[] names = tikaMetadata.names();
for (String name : names) {
System.out.println(name + ": " + tikaMetadata.get(name));
}
System.out.println(detected);
}
私が最初に考えたのは、ティカ・パーサライブラリが何らかの形で、実行時に使用できなかったこと、したがって、私は最初の行にTesseractOCRParserをロードしようとしますが、そのクラスのロードだけで大丈夫でした。次の出力では、このプログラムの結果を実行すると:
X-Parsed-By: org.apache.tika.parser.EmptyParser
Content-Type: application/octet-stream
application/x-tika-msoffice
これは、私はどこでも見つけることができるティカメタデータ抽出の最も基本的な例のように思えます。抽出は、この例ではなく、瓶でうまくいく。何か不足していますか?
おかげで多くのことを、TikaInputStreamが働い使用します。あなたの例のget(ファイル・ファイル、メタデータ・メタデータ)メソッドは実際には廃止されましたので、get(パス・パス、メタデータ・メタデータ)バージョンを使用しました。 – json4639
TikaInputStreamは、メタデータオブジェクト(ファイル/パスが送信された場合)にのみファイル長を追加し、その他のメタデータは追加しません。私は、ファイルストリームが解析前に正しくリセットされていなかったということが起こったと思います。通常、TikaInputStreamはmark/resetを使って正しいことを行います。常にそれをお勧めします。 –