10

貴重なテキスト情報を含む PDF ファイルがあります。

問題は、テキストを抽出できないことです。得られるのは、文字化けしたシンボルの束だけです。PDF リーダーからテキスト ファイルにテキストをコピー アンド ペーストすると、同じことが起こります。ファイル -> Acrobat Reader でテキストとして保存しても失敗します。

手に入れることができるすべてのツールを使用しましたが、結果は同じです。これはフォントの埋め込みと関係があると思いますが、正確にはわかりません。

私の質問:

  • この奇妙な文字化けの原因は何ですか?
  • PDF からテキスト コンテンツを抽出する方法(プログラムで、ツールを使用して、ビットを直接操作するなど)?
  • コピー時に文字化けしないように PDF を修正するにはどうすればよいですか?
4

3 に答える 3

25

一部の PDF ファイルは、テキストを正常に抽出するために重要な特別な情報なしで生成されます。Adobeツールでも。基本的に、このようなファイルには、グリフから文字へのマッピング情報が含まれていません。

このようなファイルは問題なく表示および印刷されますが (文字の形状が適切に定義されているため)、それらのテキストを適切にコピー/抽出することはできません (使用されているグリフ/形状の意味に関する情報がないため)。

たとえば、「最小ファイル サイズ」プリセットが使用されている場合、Distiller はそのようなファイルを生成します。

OCR 以外に、そのようなファイルからテキストを取得する方法はありません。最近、.NET で PDF を OCR する方法のガイドを公開しました。


元の回答の補足

元の回答では、「使用されているグリフ/形状の意味に関する情報」に言及していました。この情報は、テーブルと呼ばれる PDF 構造に含まれている必要があり/ToUnicodeます。このようなテーブルは、サブセットとして埋め込まれ、非標準 ( Custom) エンコーディングを使用するすべてのフォントに必要です。

テキスト コンテンツの抽出可能性をすばやく評価するために、pdffontsコマンド ライン ユーティリティを使用できます。これにより、PDF で使用される各フォントに関する一連の項目が表形式で出力されます。テーブルの存在は、/ToUnicode列見出し で示されますuni

いくつかの出力例:

$ kp@mbp:git.PDF101.angea> pdffonts handcoded/textextract/textextract-good.pdf

    name                     type        encoding   emb sub uni object ID
    ------------------------ ----------- ---------- --- --- --- ---------
    BAAAAA+Helvetica         TrueType    WinAnsi    yes yes yes     12  0
    CAAAAA+Helvetica-Bold    TrueType    WinAnsi    yes yes yes     13  0


$ kp@mbp:git.PDF101.angea> pdffonts handcoded/textextract/textextract-bad1.pdf

    name                     type        encoding   emb sub uni object ID
    ------------------------ ----------- ---------- --- --- --- ---------
    BAAAAA+Helvetica         TrueType    WinAnsi    yes yes no      12  0
    CAAAAA+Helvetica-Bold    TrueType    WinAnsi    yes yes no      13  0


$ kp@mbp:git.PDF101.angea> pdffonts handcoded/textextract/textextract-bad2.pdf

    name                     type        encoding   emb sub uni object ID
    ------------------------ ----------- ---------- --- --- --- ---------
    BAAAAA+Helvetica         TrueType    WinAnsi    yes yes yes     12  0
    CAAAAA+Helvetica-Bold    TrueType    WinAnsi    yes yes no      13  0

good.pdfでは、両方のフォントに対応するテーブルがあるため、両方のフォントのテキスト コンテンツを正しく抽出できます/ToUnicode

bad1.pdfと の場合bad2.pdf、テキストの抽出は 2 つのフォントのうち 1 つのみで成功し、もう 1 つのフォントでは失敗します。これは、1 つのフォントだけに/ToUnicodeテーブルがあるためです。

私、Kurt Pfeifleは最近、PDF ソース コード内の既存の、バグのある、操作された、または欠落しているテーブルの影響を示すために、一連の手作業でコーディングされた PDF ファイルを作成しました。/ToUnicodeこれらの PDF は広範囲にコメントされており、テキスト エディターを使用して調べるのに適しています。上記のpdffonts出力例は、これらの手作業でコーディングされたファイルを使用して作成されました。(別の結果を示す PDF が他にもいくつかあります。興味のある読者は、それらを調べてみてください...)

于 2012-08-30T05:07:19.327 に答える
12

多くの人に助けを求めましたが、OCR がこの問題の唯一の解決策です

于 2012-08-31T17:27:10.293 に答える
3

私も同じ問題を抱えていました。それをGoogleドライブにアップロードし、Googleドキュメントで開き、そこからテキストをコピーするとうまくいきました.

于 2014-11-19T09:46:28.430 に答える