4

表形式のデータを含む PDF ファイルがあります。

http://dl.dropbox.com/u/44235928/sample_rotate-0.pdf

そこから表形式のデータを抽出する必要があります。私は次のことを試みましたが成功しませんでした:

  1. テキストを選択し、メモ帳/Excel シートに貼り付けます。(ジャンクキャラ出てる)
  2. Acrobat Reader からテキストとして保存を使用しました。また、実際のテキストではなく、ジャンク文字を提供しています。
  3. PDFからテキストを抽出するためにApachePDFBoxコマンドラインユーティリティを試しました。また、実際のテキストの代わりにジャンク文字を提供しています。
  4. 最後に、OCR ソリューションを試しています。ImageMagick を使用して pdf ファイルを .tif 画像に変換し、それらの画像を tesseract OCR で処理しています。

ただし、OCR ソリューションはあまり正確ではありません (約 80% の単語が一致しました)。

PDFから作成された画像の密度とジオメトリを変更して、tesseract OCRからより良い結果を得ようとしました。

convert -rotate 90 -geometry 10000 -depth 8 -density 800 sample.pdf img_800_10000.tif;
tesseract img_800_10000.tif img_800_10000.tif nobatch letters;

OCRに最適な画像(密度、ジオメトリ、単色、シャープな境界など)の種類がわかりません。

tesseract の精度が向上するように、PDF ファイルから画像を生成するための最良のパラメータ (密度、ジオメトリ、深さなど) を提案してください。

私は他の( ocr 以外の)ソリューションにもオープンです。

4

3 に答える 3

4

この場合、PDF -> TIFF 変換に ImageMagick を使用しないことをお勧めします。代わりに、Ghostscript を使用してください。2 つの理由:

  1. Ghostscript を直接使用すると、変換の個々のパラメーターをより詳細に制御できます。

  2. ImageMagick は、その特定の変換自体を行うことはできません。Ghostscript を「デリゲート」として呼び出しますが、独自の Ghostscript コマンドが提供するのと同じ詳細な制御をすべて与えることはできません。

サンプル PDF の表のテキストのほとんどは非常に小さいです (高さは 4 ~ 5 ポイントしかないと思います)。これにより、解像度を大幅に上げない限り、成功した OCR を実行することがかなり難しくなります。

Ghostscript は-r72デフォルトでイメージ形式の出力 (TIFF など) に使用します。Tesseract は r=300 または r=400 で最適に動作しますが、フォント サイズが 10 ~ 12 pt 以上の場合のみです。したがって、小さなテキスト サイズを補うには、Ghostscript が PDF を画像にレンダリングするときに少なくとも 1200 DPI の解像度を使用する必要があります。

また、テキストが通常の読み取り方向 (下から上ではなく) に表示されるように、画像を回転させる必要があります。

これは私が最初に試すコマンドです:

gs                              \
  -o sample.tif                 \
  -sDEVICE=tiffg4               \
  -r1200                        \
  -dAutoRotatePages=/PageByPage \
   sample_rotate-0.pdf

-r1200最良の結果を得るには、パラメーターのバリエーション (より高いまたはより低い) を試してみる必要がある場合があります。

于 2012-09-10T08:36:27.893 に答える
1

「Ghostscript を使用する場合、画像のジオメトリを定義する方法はconvert?」というコメントがありました。、ここに答えがあります:

  1. Ghostscript によって作成されたラスター イメージのジオメトリ(イメージの寸法) と解像度を同時に定義することは意味がありません。

  2. 所定の寸法 (PDF など)のベクトルベースのページをラスターイメージ (TIFF G4 形式など) に変換すると、目的の解像度が得られます (他の回答で行ったように) 。寸法:

    • サンプル ファイルsample_rotate-0.pdfの元の PDF 寸法は1008x612ポイントです。
    • 解像度が 72 DPI の場合 (直接指定されていない場合はデフォルトの Ghostscript が使用し、直接指定さ-r72れている場合は Ghostscript コマンドで使用されます)、画像の寸法は1008x612ピクセルになります。
    • 720 DPI の解像度 ( -r720Ghostscript コマンドで) では、画像の寸法は10080x6120ピクセルになります。
    • 1440 DPI の解像度 (-r1440他の回答の Ghostscript コマンド) では、画像の寸法は20160x12240ピクセルになります。
    • 1200 DPI ( -r1200Ghostscript コマンドで) の解像度では、画像の寸法は16800x10200ピクセルになります。
    • 1000 DPI の解像度 ( -r1000Ghostscript コマンドで) では、画像の寸法は14000x8500ピクセルになります。
    • 120 DPI ( -r120Ghostscript コマンドで) の解像度では、画像の寸法は1680x1020ピクセルになります。
    • 100 DPI の解像度 ( -r100Ghostscript コマンドで) では、画像の寸法は1400x850ピクセルになります。
  3. Ghostscript コマンドラインで (解像度ではなく) 出力画像の寸法/ジオメトリを絶対に指定する必要がある場合は-gNNNNxMMMM -dPDFFitPage、コマンドラインに追加することで指定できます。

于 2012-09-10T21:43:32.647 に答える
0

そこで、ファイルのデコードされたコンテンツを見つけることができます: https://docs.google.com/open?id=0B1YEM-11PerqSHpnb1RQcnJ4cFk

OCRがpdfファイルを読むための最良の方法であることは間違いありませんが、ネイティブコンテンツをREGEXで試すことができます。それは困難で長い道のりになるでしょう。

于 2012-09-08T13:10:58.170 に答える