Apache POIを使用しているときに私が(プログラムで)MS Wordファイルから取得している文字列は、MS Wordでファイルを開くと見ることができるテキストと同じではありません。Java:Apache POI:MS Word(.doc)ファイルからクリーンテキストを取得できますか?
次のコードを使用している場合:
File someFile = new File("some\\path\\MSWFile.doc");
InputStream inputStrm = new FileInputStream(someFile);
HWPFDocument wordDoc = new HWPFDocument(inputStrm);
System.out.println(wordDoc.getText());
の出力が "、多くの「無効」の文字(はい、「ボックス」)を持つ単一の行、および「FORMTEXT
」のような多くの不要な文字列であり、HYPERLINK \l "_Toc##########"
「(数字であること 『#』)、」PAGEREF _Toc########## \h 4
」など
次のコードを 『修正』シングルラインの問題が、すべての無効な文字や不要なテキストを維持します。
File someFile = new File("some\\path\\MSWFile.doc");
InputStream inputStrm = new FileInputStream(someFile);
WordExtractor wordExtractor = new WordExtractor(inputStrm);
for(String paragraph:wordExtractor.getParagraphText()){
System.out.println(paragraph);
}
テキストを抽出するのに間違った方法を使用しているのかどうかわかりませんが、それはPOI's quick-guideを見ると思い付きます。私の場合、正しいアプローチは何ですか?
出力が正しい場合は、不要なテキストを取り除くための標準的な方法がありますか、それとも独自のフィルターを作成する必要がありますか?
などの段落に直接それを使用いけない場合
私のテスト。 TIKA-1.2は、.docファイルからFORMCHECKBOXなどを返しました。 .docxファイルは正常に機能しました。 – Simon
最新のTikaバージョン1.3を試してみることをお勧めします。それでも問題が発生した場合は、[バグを報告](https://issues.apache.org/jira/browse/TIKA)して、それを示すサンプルファイルをアップロードしてください。 – Gagravarr
これは、私にとってTika 1.3では、それが価値があるためにまだ起こります。 – damd