Apache Tikaで、PDFの本文内の文字が連続する現象発生
Javaで、Apache Tikaで、PDFのパース処理をしています。
ほとんどのPDFは、正常に、読み込めるのですが、パースエラーになったり、
パースできても、本文内の文字が連続する現象発生します。
ここで、お聞きしたいのは、「本文内の文字が連続する現象」の原因と対策方法です。
パースで取り出した長文の中から同じようなパターンの一部を下記へ抜粋。
(1)(1)(1)(1)風風風風林火林火林火林火山山山山用用用用DBDBDBDB
おそらく、PDFの「(1)風林火山用DB」が書かれている部分をTikaが取り出したときに、
PDFのコメント?、アクセシビリティ?、何かしら、普通に開いた時には見えないが、
PDFに埋め込まれているもの?をTikaがパースで取り出したのでは?と考えています。(想像)
ソース:
InputStream input = new FileInputStream("sample.pdf");
ContentHandler handler = new BodyContentHandler(Integer.MAX_VALUE);
Metadata metadata = new Metadata();
new PDFParser().parse(input, handler, metadata, new ParseContext());
String plainText = handler.toString();
System.out.println(plainText);
原因、及び、対応策(Tikaへの設定?など)は、ありますでしょうか?
■ご回答を頂いたものを試した結果
下記を試してみましたが、文字の連続は治りませんでした。
予想ですが、config 変数を、parser.parse() などに、セットが必要と考えます。
※今、日本のサイトでは事例が1つも見つからないので、海外のサイトでソース例を探していますが、見つかっていません。
もし、解決方法をご存知の方がいらましたら、やってみては?程度でかまいませんので、
お返事をお待ちしております。
PDFParser parser = new PDFParser();
PDFParserConfig config = new PDFParserConfig();
// 太字などを文字を重ねることで表現している場合における重複文字を無視するかどうか
config.setSuppressDuplicateOverlappingText(true);
// テキスト下線などを無視するかどうか
config.setExtractAnnotationText(false);
parser.parse(input, handler, metadata, new ParseContext());