タグ付けされた質問 「pdfbox」

2
小さなpdfファイルで巨大なBufferdImageが生成される
PDFでOCRを実行しようとしています。コードには2つのステップがあります。 PDFをTIFFファイルに変換 TIFFをテキストに変換する 最初のステップでghost4jを使用し、次に2番目のステップでtess4jを使用しました。マルチスレッドで実行を開始するまではすべてうまくいき、その後奇妙な例外が発生しました。私はここを読みました:https : //sourceforge.net/p/tess4j/discussion/1202293/thread/44cc65c5/そのghost4jはマルチスレッドに適していないので、PDFBoxで動作するように最初のステップを変更しました。 だから今私のコードは次のようになります: PDDocument doc = PDDocument.load(this.bytes); PDFRenderer pdfRenderer = new PDFRenderer(doc); BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(0, 300); ByteArrayOutputStream os = new ByteArrayOutputStream(); ImageIO.write(bufferedImage, "tiff", os); os.flush(); os.close(); bufferedImage.flush(); 800 kbのpdfファイルを使用してこのコードを実行しようとしています。 BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(0, 300); 500 MBを超えます。このBufferedImageをディスクに保存すると、出力は1 MBのサイズになります...したがって、このコードを8つのスレッドで実行しようとすると、Javaヒープサイズの例外も発生します... ここで何が欠けていますか?1 MBのファイルが500 MBの画像ファイルになるのはなぜですか?DPIで遊んで品質を下げようとしましたが、ファイルはまだ非常に大きいです... PDFをtiffにレンダリングできる他のライブラリはありますか?メモリの問題なしに10スレッドを実行できますか? 再現する手順: Linkedin CEOの履歴書ファイルをこちらからダウンロードしてください-https://gofile.io/?c= TtA7XQ …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.