web-dev-qa-db-ja.com

pdfsandwichを使用してPDFにOCRを追加するときに、PDF画像を変更しないようにするにはどうすればよいですか?

PDFにOCRを追加しようとしていますが、 pdfsandwich を使用しています。問題は、pdfsandwichがOCRを実行するときに画像を処理し、ドキュメントの外観を変更することです。

PDF画像が完全に変更されないようにする方法はありますか?これがpdfsandwichで不可能な場合は、別のアプリケーションでこれを実行できます。

前の例: Before

後の例: After

Pdfsandwichを介してpdfを実行した後、品質の低下を簡単に確認できます。

Pdfsandwichのドキュメントを確認しましたが、画像を変更しないでおくことについて何も見つかりませんでした。

2
user3750888

Pdfsandwichの作成者であるTobialElzeに質問をしました。これが彼らの反応です:

私はあなたが何を意味するのかを完全に知っており、これが便利な機能になることに同意します。 pdfsandwichがTesseractを呼び出して最終的なpdfを作成し、内部でスコープ外の処理を実行するため、現在、元の画像を完全に保持することはできません。とpdfsandwichの制御。

独自の例でわかるように、デフォルトでは、pdfsandwichは入力画像を白黒に変換します。オプション-rgbでカラー(カラー画像の場合)を使用するように強制するか、オプション-grayでグレースケールを使用することで、元の画像に近づけることができます。例で後者を試して、改善されるかどうかを確認することをお勧めします。

それとは別に、OCRの前のpdfsandwichの「改善」機能が画像を改善せず、代わりに悪化させることがわかった場合は、オプション-nopreprocを使用してすべての前処理をオフに切り替えることができます。

私はそれがいくらか役立つことを願っていますか?

私のPDFはすでにグレースケールであるため、フラグ-grayを追加するだけで元の品質が維持されるようです。 -rgbは、カラー画像の同等のフラグです。

1
user3750888

Pdfsandwichが小さなPDF画像をひどく再圧縮し、PDFファイルサイズを膨らませたので、私は同じ欲求を持っていました。これは、1ページでそれを処理する複雑な方法ですPDF OCRingの利益のためにすでにクリーンアップされています

  1. 元のPDFのバックアップを作成します。あなたが物事を台無しにした場合、あなたはバックアップを持っているでしょう。
  2. 実行pdfimages -list original.pdf
  3. 電卓を使用して、画像の幅と高さを掛け合わせます。画像が192×643であるとしましょう。これを掛けると、123456になります。次のステップでそれを使用します。
  4. 実行pdfsandwich -nopreproc -maxpixels 123456 original.pdf

これで、置き換えたい画像を含むOCRed PDFができました。この部分は少し注意が必要です。

  1. 実行pdfimages -list original.pdf
  2. 元のPDFにオブジェクト番号を書き留めます。それが123だとしましょう。以下でそれを使用します。
  3. 実行pdfimages -list original_ocr.pdf
  4. OCRedPDFにオブジェクト番号を書き留めます。それが456だとしましょう。以下でそれを使用します。
  5. バイナリブロブのコピーと貼り付けを適切に処理できるテキストエディタで、元のとOCRed PDFの両方を開きます。
  6. 行を見つける123 0 obj元のPDFで。 その下の行次のendobj行まで後続のすべての行と一緒にコピーします。
  7. 行を見つける456 0 obj OCRedPDFで。消去その下の行次のendobj行までの後続のすべての行と一緒に。元のPDFからコピーしたものを貼り付けて、削除した行を置き換えます。
  8. OCRed PDFを新しいファイル名として保存します。
  9. PDF表示プログラムで前の手順の新しいファイル名を開いて、ページが表示されていること、OCRedテキストがそこにあることを確認しますetc
  10. 保存せずにテキストエディタを閉じます。
0
Chai T. Rex