web-dev-qa-db-ja.com

Windowsで検索不可PDFを検索可能PDFに変換するPython

PDFファイルをすべてのページが画像であり、ページにテキスト、表、または両方の組み合わせを検索可能なPDFに含めることができるファイルを変換するソリューションが必要です。

私はABBY FineReader Onlineを使用しましたが、これは仕事を完璧にやっていますが、Windows Pythonで達成できる解決策を探しています

私は詳細な分析を行いましたが、以下は私が望むものに近いリンクですが、正確ではありません:

スキャンした画像/ PDFから検索可能な画像/ PDFへ

Ghostスクリプトを使用して最初にイメージに変換し、その後直接テキストに変換するように指示しています。 tesseractが検索不可PDFを検索可能PDFに変換するとは思わない。

検索可能PDF検索不可PDFに変換

上記のソリューションは、逆に、つまり検索可能から検索不可に変換するのに役立ちます。また、これらはUbuntu/Linux/MacOSでも有効だと思います。

Windows Pythonで検索不可能から検索可能までを達成するためのコードPython


更新1

Asprise Web Ocrで望ましい結果が得られました。以下はリンクとコードです。

https://asprise.com/royalty-free-library/python-ocr-api-overview.html

Windowsでできる解決策を探していますPythonライブラリのみ

  1. 将来的にサブスクリプション費用を支払う必要はありません
  2. 毎日何千ものドキュメントを変換する必要があり、ドキュメントをAPIにアップロードしてからダウンロードするのは面倒です。

更新2

検索不可能なpdfを直接テキストに変換するソリューションを知っています。しかし、私は彼らが検索不可能なPDFを検索可能なPDFに変換する方法を探しています。 PyPDF2を使用してPDFをテキストに変換するコードがあります。

15
Rahul Agarwal

実際、pdf内のすべてをテキストに変換する必要はありません。テキストはテキストのまま、テーブルはテーブルのまま、可能であれば画像はテキストになります。実際にpdfをそのまま読み取り、ブロックで変換を開始するスクリプトが必要です。スクリプトは、ドキュメントが完全に読み取られるまでテキストブロックを書き込み、それをPDFに変換します。何かのようなもの

_if line_is_text():
    write_the_line_as_is()
Elif line_is_img():
    transform_img_in_text()# comments below code
...
..
.
_

transform_img_in_text()これは多くの外部ライブラリで実行できると思います。使用できるものは次のとおりです。

Tesseract OCR Python

このライブラリはpipからダウンロードできます。手順は上記のリンクに記載されています。

6

オンラインocr ソリューションが受け入れられる場合、OCR.spaceからの無料のOCR APIも 検索可能なPDFの作成 で、適切に機能します。

無料版では、作成されたPDFに透かしが含まれています。透かしを削除するには、商用PROプランにアップグレードする必要があります。フロントページのWebフォームでAPIをテストできます。

OCR.spaceは、非サブスクリプションオンプレミスオプションとしても利用できますが、価格についてはわかりません。個人的には、無料のocr apiを使用して成功しています。

4
Fabrice Zaks

これを行うために、過去に pypdfocr を使用しました。ただし、最近は更新されていません。

READMEから:

pypdfocr filename.pdf
--> filename_ocr.pdf will be generated

Windowsのインストール手順を注意深くお読みください。

より最近のPythonライブラリはOCRmyPDFです: https://github.com/jbarlow83/OCRmyPDF Windows用のDockerイメージがあります

4
iacolippo

私は最近ブログ投稿を書きました。

  • OCRmyPDF-pythonライブラリラッピングTesseract
  • azureで実行されているdockerコンテナー

あなたはあなたのニーズを満たすために物事を微調整する必要があるかもしれませんが、私はこの投稿のビルディングブロックがあなたのニーズに適用できると信じています:

http://martyice.github.io/docker-in-Azure/

1
Marty