2016-10-07 6 views
0

多くの異なるコードからテキストを抽出しようとしています(rtf doc pdf)。私は自然にApache Tikaに目を向けると、ドキュメントを自動検出してそれに応じてテキストを抽出できるからです。私はテキストだけに興味があり、フォーマットなどはしません。Apache tikaでPDFontキャッシングを削除する

私のアプリケーションは大きなメモリリークを引き起こし、調査するとPDFBoxの依存関係からPDFFontクラスにキャッシュされています。私はテキストを抽出するだけで、Fontmetricsやその他のフォントフォーマットの問題をpdfsからキャッシュするのは面白くない。

私はtika 1.12を使用しています。誰もこのカッシー問題を回避する方法を知っていますか?

 AutoDetectParser parser = new AutoDetectParser(); 

     BodyContentHandler handler = new BodyContentHandler(-1); 
     Metadata metadata = new Metadata(); 
     FileInputStream inputstream = new FileInputStream(new File(child.getPath())); 
     ParseContext context = new ParseContext();    
     parser.parse(inputstream, handler, metadata, context); 
     String s=null; 
     s =handler.toString(); 
     handler=null; 
     context=null; 
     inputstream.close(); 
     PDFont.clearResources(); 
+2

PDFBox 2.0.3では、フォントの漏れに関するいくつかの問題が解決されました。最新のTIKAバージョンを使用し、それにPDFBox 2.0.3を使用する必要があります。 –

+0

https://issues.apache.org/jira/browse/TIKA-2045 –

答えて

0

だから私は回避策をfudged、ちょうど御馳走を動作しますが、実際には質問に答えていないファイルが処理されて終わったSystem.gc();毎回呼ばれる:これは私が自動検出を使用しています方法です。

+0

これは奇妙なことですが、JDKは空き容量が少なくなるとgc()を実行するとみなされます。さらなる調査を行うために、TIKAの人々はファイルを必要とするでしょう。そして私の賭けは、PDFBOX 2.0.3で解決されたのはフォントを扱っていたためです。 –

関連する問題