[解決済み] パフォーマンス iText vs.PdfBox
質問事項
私はpdf(私のお気に入りの本Effective Java、その問題であれば)をテキストに変換しようとしています、私はiTextとApache PdfBoxの両方をチェックしました。私はパフォーマンスで本当に大きな違いを見る。iTextでは2:521かかり、PdfBoxでは。6:117. これは、PdfBOxのための私のコードです。
PDFTextStripper stripper = new PDFTextStripper();
BUFFER.append(stripper.getText(PDDocument.load(pdf)));
そして、これはiTextの場合です。
PdfReader reader = new PdfReader(pdf);
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
BUFFER.append(PdfTextExtractor.getTextFromPage(reader, i));
}
私の質問は、パフォーマンスが何に依存するかである、PdfBoxを高速化する方法はありますか?それともiTextを使うしかないのでしょうか?また、ストラテジーがパフォーマンスにどのような影響を与えるかについて詳しく教えてください。
解決方法は?
<ブロッククオート私の質問は、パフォーマンスが何に依存しているのか、PdfBoxを高速化する方法はありますか?
大きな違いは、PDFBoxは常にテキストをグリフごとに処理するのに対し、iTextは通常チャンク(テキスト描画操作の単一文字列パラメーター)ごとに処理することです。また、iTextのテキスト解析はイベント指向のアーキテクチャを採用しているため、PDFBoxよりもリソースへの負荷が低くなっています。また、PDFBoxはプレーンテキスト抽出に厳密には必要ない情報をより長い時間利用可能にしておくので、より多くのリソースを消費します。
しかし、ライブラリが最初に文書を読み込む方法によっても違いが出てくるかもしれません。ここで少し実験してみると、PDFBoxは複数の
PDDocument.load
のオーバーロードだけでなく、いくつかの
PDDocument.loadNonSeq
オーバーロード(実際には
PDDocument.loadNonSeq
は正しくドキュメントを読みますが
PDDocument.load
はPDFを誤読するように騙される可能性があります)。これらの異なる亜種はすべて、実行時の動作が異なる可能性があります。
ストラテジーがパフォーマンスに与える影響について教えてください。
iTextは、シンプルなテキスト抽出方法と、より高度なテキスト抽出方法を提供します。シンプルなものは、ページのコンテンツストリームにあるテキストが読み順に表示されると仮定し、より高度なものはソートします。デフォルトでは、より高度なものが使用されます。したがって、単純な戦略を使用することによって、iTextをさらに高速化することができます。PDFBoxは常にソートします。
関連
-
[解決済み】Hibernateエラー:同じ識別子値を持つ別のオブジェクトがすでにセッションに関連付けられました。
-
[解決済み】Android Studio クラス org.codehaus.groovy.runtime.InvokerHelper を初期化できませんでした。
-
[解決済み】Eclipseがエラーメッセージ "Java was started but returned exit code = 1" を返す
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 0.1fを0にすると、なぜ10倍もパフォーマンスが落ちるのですか?
-
[解決済み] Swift Betaのパフォーマンス:配列のソート
-
[解決済み] Dockerコンテナのランタイムパフォーマンスコストとは何ですか?
-
[解決済み] 文字列の最初の文字を大文字にする(最大限のパフォーマンスを発揮する)
-
[解決済み] Javaにおける例外処理によるパフォーマンスへの影響とは?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】javaで指定されたファイルが見つからない
-
[解決済み】不正なエスケープ文字"㊧"について
-
[解決済み】Doubleはdereferencedできない?
-
[解決済み】HTTPステータス500 サーブレットクラスのインスタンス化エラー [重複]。
-
[解決済み】JLabelのテキストを中央に配置するには?
-
[解決済み】メソッド本体がない、またはJavaで抽象的な宣言をする
-
[解決済み】Hibernateの例外「failed to lazily initialize a collection of role」の解決方法
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。
-
[解決済み】Java: GZIPInputStreamの作成に失敗しました。GZIP形式ではありません
-
[解決済み】Eclipseで「パッケージエクスプローラー」ビューが見つからない