貴重なテキスト情報を含むPDFファイルがあります。
問題は、テキストを抽出できないことです。取得するのは、文字化けした記号の束だけです。 PDFリーダーからテキストファイルにテキストをコピーして貼り付けると、同じことが起こります。ファイル->テキストとして保存AcrobatReaderで失敗します。
手に入るすべてのツールを使用しましたが、結果は同じです。これはフォントの埋め込みと関係があると思いますが、正確にはわかりません。
私の質問:
私は多くの人に助けを求めましたが、OCRがこの問題の唯一の解決策です
一部のPDFファイルは、テキストを正常に抽出するために重要な特別な情報なしで作成されます。Adobeツールを使用しても、基本的に、このようなファイルにはグリフから文字へのマッピング情報が含まれていません。
このようなファイルは(文字の形状が適切に定義されているため)問題なく表示および印刷されますが、それらのテキストは適切にコピー/抽出できません(使用されているグリフ/形状の意味に関する情報がないため)。
たとえば、「最小ファイルサイズ」プリセットが使用されている場合、Distillerはそのようなファイルを生成します。
OCR以外に、そのようなファイルからテキストを取得する方法は他にありません。
元の回答では、「使用されているグリフ/形状の意味に関する情報」について言及されていました。この情報は、/ToUnicode
テーブルと呼ばれるPDF構造体に含まれている必要があります。このようなテーブルは、サブセットとして埋め込まれ、非標準(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つのフォントの一方のみで成功し、もう一方のフォントでは失敗します。これは、一方のフォントのみが/ToUnicode
テーブルを持っているためです。
私、 Kurt Pfeifle は、最近一連の手書きのPDFファイルPDFソースコード内の既存の、バグのある、操作された、または欠落している/ToUnicode
テーブルの影響を示すため。これらのPDFは広範囲にコメントされており、テキストエディタを使用して調査しました。上記のpdffonts
の出力例は、これらの手作業でコーディングされたファイルを使用して作成されました。(さまざまな結果を示すPDFがさらにいくつかあります。興味のある読者は探求したいかもしれません...)
私も同じ問題を抱えていました。それをGoogleドライブにアップロードし、Googleドキュメントで開き、そこからテキストをコピーすることは私にとってはうまくいきました。