2

pdfminerライブラリを使用していくつかの PDF ファイルを解析しています。

ドキュメントがスキャンされたドキュメントであるかどうかを知る必要があります。スキャン マシンは、スキャンした画像を一番上に配置し、OCR で抽出したテキストを背景に配置します。

OCR マシンが選択のためにページにテキストを配置するため、テキストが表示されているかどうかを識別する方法はありますか。

一般に、問題は 2 つの非常に異なるが類似したケースを区別することです。

あるケースでは、スキャンされたドキュメントの画像がページの大部分を占め、その後ろにOCR テキストがあります。

画像が切り捨てられたテキストとしての PDF は次のとおりです: http://pastebin.com/a3nc9ZrG

他のケースでは、ページの大部分を覆う背景画像があり、そのにテキストがあります。

それらを区別することは、私にとって難しいことがわかっています。

4

2 に答える 2

2

あなたの質問は少しわかりにくいので、何が最も役立つのかよくわかりません。ただし、OCR からテキストを「非表示」にする 2 つの方法について説明します。どちらも検出可能だと思いますが、一方は他方よりもはるかに簡単です。

隠しテキスト
隠しテキストは、何かの後ろに配置される通常のテキストまたは目に見えないテキストです。つまり、オブジェクトの重なり順を使用して、オブジェクトの一部を非表示にします。このタイプのケースを検出できる唯一の方法は、ページ上のすべてのテキスト オブジェクトがどこにあるかを把握し (それらの境界ボックスを計算するのは簡単ではありませんが、確かに可能です)、ページ上の画像が重なっているかどうかを調べることです。そのテキストとその前にあります。いくつかの追加コメント:

  • 理論的には、それを隠している画像以外のものである可能性がありますが、OCR の場合、常に画像であると思います。
  • 画像が重なっている場合もありますが、何らかの形で透明になっている場合もあります。その場合、下にあるテキストが透けて見えることがあります。一般的なOCRエンジンの場合、おそらくそうではありません。

不可視テキスト
PDF は不可視テキストをサポートしています。より正確には、PDF はさまざまなテキスト レンダリング モードをサポートしています。これらのレンダリング モードによって、文字が塗りつぶされるか、アウトライン化されるか、塗りつぶしとアウトライン化されるか、または非表示になるかが決まります (他の可能性はまだあります)。投稿した PDF ファイルには、次のフラグメントがあります。

BT
3 Tr
0.00 Tc
/F3 8.5 Tf
1 0 0 1 42.48 762.96 Tm
(Chicken ) Tj

そこは目に見えないチキンです!命令 "3 Tr" は、テキスト レンダリング モードを "3" に設定します。これは、PDF 仕様で非常にエレガントに記述されているように、"見えない" または "ストロークも塗りつぶされていない" ことにもなります。

これら 2 つの手法は、OCR エンジンで同じ意味で使用できることに注意してください。スキャンした画像の上に非表示のテキストを配置することは、ほとんどの PDF ビューアでテキストを選択できることを意味するため、実際には良い方法です。ある時点で見た一部の PDF ビューアでは、テキストが画像の「後ろ」にある場合、テキストを選択できませんでした。

于 2015-08-04T14:15:31.523 に答える
1

私は PDF 1.7 仕様のコピーを持っていませんが、ページ上のオブジェクトが順番にレンダリングされる、つまり、先行するオブジェクトが後続のオブジェクトによって覆われてしまうのではないかと思います。

したがって、レイアウト オブジェクトを反復処理し (「レイアウト分析の実行」を参照)、すべてがページ上のどこにあるか、それらの寸法、レンダリング順序 (および場合によっては透明度) を計算する必要があります。

pdfminer のドキュメントに記載されているように、PDF は悪です。

于 2015-08-04T11:19:28.983 に答える