web-dev-qa-db-ja.com

スキャンしたページで選択可能なテキストを使用してPDFを作成する方法

今日、私はサプライヤからPDFを受け取りました。それには、署名などの印刷およびスキャンされたページがいくつか含まれていました。AcrobatReader DCで開きました。しかし、驚いたことに、明らかにスキャンされた画像のテキストをテキストとして選択してコピーすることができました。スクリーンショットを見てください。

PDF scanned with selectable text

コピーされたテキストに間違いが含まれているため、明らかにこの背後にいくつかのOCRがあります。しかし、これはどのように可能ですか?これまで見たことがないのですが、どうすれば作成できますか。

32
Vojtěch Dohnal

これは(ここにある他のいくつかの答えとは反対に)Acrobatとはまったく関係がないでしょう。

「PDFとして保存」を選択し、設定内で「検索可能」チェックボックスをオンにすると、ほとんどの(すべての!!)プロフェッショナルドキュメントスキャナーおよびほとんどのセミプロフェッショナルスキャナーが自動的にOCRを実行します。より安価な「消費者向け」モデルは、接続されたPCでOCRを実行しますが、一般的なネットワークスキャナは内部的にそれを実行します。

「検索可能」という言葉は、スキャナがOCRを実行し、スキャンされたビットマップを含むページを生成し、それらをOCRからの不可視文字でオーバーレイし、それぞれがビットマップ上のそれぞれの文字の上に配置されることを意味します。

このようにして、まるで魔法のように「ビットマップ」を検索し、選択し、コピーして貼り付けることができます。しかし、それはまったく魔法ではありません。実際には、目に見えないテキストをコピーしているだけです。

スキャナはまた、再利用される多くの小さなタイルから大きな画像を合成するなど、いくつかの追加のマジックを行うことがあります。これにより、実際に可能なサイズよりはるかに小さい文書サイズになりますが、 Xeroxが請求書を変更するような など、面白い驚きが生じることもあります(それほど面白いことではありません)。ファームウェアによっては、OCRが行われていなくても皮肉なことに。

53
Damon

しかし、これはどのように可能ですか?

基本的に、プログラムは入力ファイルに対してOCRを実行し、画像の上に目に見えないテキストレイヤーを配置します。あるいは、画像の下にテキストの可視レイヤーを配置することもできます、同じ効果が得られます。

何かを選択しても、テキストレイヤーが選択されるため、画像は重要ではありません。

これはどのように作成できますか?

いくつかの方法があります。 Acrobatがすでに提案されていることを考えると、無料のオプションをいくつか追加します(幸いなことに、Windowsでそれらを使用する必要はありません)。

PDF-XChangeビューアー

これは Tracker SoftwareのネイティブWindowsプログラム です。 32ビットプレフィックスで32ビットエディションを使用する場合、フリーウェアバージョンはWineで正常に動作するため、Windows、macOSおよびLinuxで使用できます。最後の2つのケースでは、それぞれPlayOnMacまたはPlayOnLinuxが必要です。

この回答 からの写真です:Ask Ubuntuに残しました:

Screenshot of PDF-XChange Viewer under Wine

OCRmyPDF

これは Pythonで書かれたマルチプラットフォームプログラム で、Ghostscript、Tesseract、Unpaperに基づいています。ドキュメントから:

OCRmyPDFの機能

OCRmyPDFはPDFの各ページを分析して、コンテンツを失うことなくそのページのすべての情報をキャプチャするために必要な色空間と解像度(DPI)を決定します。 Ghostscriptを使用してページをラスタライズしてから、ラスタライズされた画像に対してOCRを実行し、OCR「レイヤー」を作成します。その後、レイヤーは元のPDFにグラフトされます。

DebianおよびUbuntuの派生製品に簡単にインストールできます。

apt-get install ocrmypdf

またはmacOSの場合:

brew tap jbarlow83/ocrmypdf
brew install ocrmypdf

Windowsでは、Dockerイメージを使用する必要があります。詳細については、公式ドキュメントを参照してください。

使用方法は非常に簡単です。より良い結果を得るには、オプションの-d(スキュー調整)および-c(クリーン)パラメーターを使用することをお勧めします。 OCRプロセスを実行する前に、すべてのページを真っ直ぐにし、小さなドット/欠陥をクリーンアップします。

-lを使用して言語を提供できます(また提供する必要があります)。

以下は、イタリア語で書かれた この歪んだドキュメント からの例です。

Example for OCRmyPDF

使用したコマンドは次のとおりです。

ocrmypdf -l ita -d -c input.pdf output.pdf

オンラインツール

同じことを行うオンラインツールがいくつかあります。注目すべきは、PDF24が 無料のOCRmyPDFのWebベースバージョン をホストしていることです。これは制限なしで使用できます。

こちらもご覧ください:

10

これはおそらく Acrobat OCR機能 によるものです。

Acrobatは、任意のPDFのテキストまたは数十の言語の画像ファイルを認識できます。あなたがしなければならないのは、あなたがOCRしたいスキャンした文書または画像を開いて、それからツールバーの右上にある青いツールボタンをクリックすることだけです。そのサイドバーで、[テキストの認識]タブを選択し、[このファイルの中]ボタンをクリックします。

...

テキストが認識されたら、通常のすべてのマークアップツールを使用してPDFをマークアップできます。ハイライト表示、テキストの取り消しなどができます。検出された書式設定を使用してテキストをコピーすることもできますが、テキスト認識自体よりも精度が低いことがよくあります。

4
duDE

から アドビのWebサイト

スキャンしたPDFファイル内のテキストを認識する

紙の文書をPDFにスキャンすると、実際にはそれらの文書の写真を撮るだけです。写真やその他の印刷画像には最適ですが、特定の単語やフレーズを見つけるために必要な200ページの文書があるとしたらどうでしょうか。 Acrobatを使用して、スキャンしたファイル内のテキストを認識し、テキストコンテンツを検索可能かつ使用可能にします。

  1. スキャンした文書をAcrobatで開いた状態で、[ツール]ペインを開き、[テキスト認識]パネルを展開します。 [ツール]ウィンドウに[テキストの認識]が表示されない場合は、右上隅のメニューを選択して追加できます(下の画像 - 小さな赤い矢印が指している場所を確認しますか?そこをクリックします)。
  2. 開いた文書をスキャンするには、「このファイル内」をクリックします。デフォルトの設定をそのまま使用して、[テキストの認識]ボックスが表示されたら[OK]をクリックするだけです。 Acrobatは画像を使用可能なテキストに変換します。テストするには、コンテンツ編集パネルでWordまたは文を編集してみてください。それほど素晴らしいことではありませんか。
3
Máté Juhász