私は修士論文-NLPシステムを書いています。私は1つのコンポーネントを持っています-抽出器。
PDFファイルからプレーンテキストを抽出しています。正しく抽出できないPDFファイルがいくつかあります。Extractor(PDFBoxライブラリ)は次のような文字列を返しますこの:
"┤xDn║if|d├gDF" Ti&cD╬lhdFÁhis〜n╗xdf" "d┤ffih"h"
または
「10a61a91a22a25a3a27a17a23a20a8a13a14a61a25a17」
この抽出の問題を引き起こす各ファイルをチェックしていましたが、これらのファイルのテキストもすべてPDFリーダー(Adobe ReaderおよびFoxItリーダー)からコピーアンドペーストできません。このリーダーでの表示が有効になっています、しかし、そのコンテンツを選択してクリップボードにコピーした後、同じ間違ったテキストが表示されます(上記のように-意味的に正しくない文字の文字列または数字と文字の文字列)。
誰かが私を助けることができますか?
Adobe Readerでテキストを正常に選択してコピーできる場合(PDFにはテキストオブジェクトが含まれていることを示します))、コピーしたテキストをメモ帳に貼り付けるには、ガベージ文字の束の場合、問題はおそらく、選択したテキストが使用するCMapに関連しています。
PDF仕様は、 テキストコンテンツおよび関連するテキストコンテンツの抽出 の表示に多くのオプションを提供します。CMapは、文字コードから文字セレクターへのマッピングを指定します。 PDF仕様は、いくつかの事前定義されたCMapの概要を示していますが、他のCMapを埋め込むこともできます。
私の推測では、このテキストのCMapが破損しているか、PDFBoxライブラリがこの特定のCMapをサポートしていないと思われます。別のSDKを試して、別の結果が得られるかどうかを確認することをお勧めします。
このような場合、Acrobat(リーダー)ウィンドウからテキストを選択してコピーして貼り付けることができない場合は、それでも機能する可能性のある別のオプションがあります。
ファイル内のすべてのページのすべてのテキストがあり、最初にコピーして貼り付けたい場所を見つける必要があります。直接コピーして貼り付けるほど快適ではない場合に限ります。しかし、それはより確実に機能します。
Linuxではacroread
でも機能します(ただし、ファイルメニューから「テキストとして保存...」を選択する必要があります)。
pdffonts
コマンドラインユーティリティを使用して、PDFで使用されているフォントのクイックショット分析を取得できます。
これは出力例であり、テキスト抽出の問題が発生する可能性が非常に高い場所を示しています。これらの手書きのPDFGitHub-Repositoryからのファイルの1つを使用しますPDFよくコメントされ、テキストエディタで簡単に開くことができるサンプルファイルを提供するために作成されました:
$ pdffonts 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
このテーブルの解釈方法
BAAAAA+
およびCAAAAA+
プレフィックス、およびyes
のsub
エントリで示されます。列)、Helvetica
およびHelvtica-Bold
。TrueType
です。WinAnsi
エンコーディングを使用します(フォントエンコーディングは、PDFソースコードで使用される文字識別子を描画する必要のあるグリフにマップします)。ただし、フォント/Helvetica
の場合のみです。 yes
-列のno
/uni
で示されるように、PDF(/ToUnicode
の場合はありません)内で使用可能な/Helvetica-Bold
テーブル)。/ToUnicode
テーブルは、文字識別子/コードから文字への逆マッピングを提供するために必要です。
特定のフォントの/ToUnicode
テーブルが欠落していることは、ほとんどの場合、このフォントを使用するテキスト文字列をPDFから抽出またはコピーして貼り付けることができないことを示しています。 (/ToUnicode
テーブルがある場合でも、このテーブルが破損している可能性があるため、テキスト抽出で問題が発生する可能性があります。または不完全-多くの実際のPDFファイルに見られるように、また上記のリンクされたGitHubリポジトリ内のいくつかのコンパニオンファイルによっても示されているように。)
Chrome(内部PDFブラウザ)でGmailの添付ファイルとして開くと、コピーは通常の読み取り可能な文字をコピーします!
私がこの問題を抱えていたとき、それは私のために働きました 他の人にとっても 。 Chrome PDFビューアは GoogleドライブOCR を自動的に使用します...魔法のようです!
PDFで作成されたもの。一部のPDFにはエンコード情報が含まれておらず、描画するためのデータのみが含まれています。したがって、データを抽出する方法はありません。
これに対処する最善の方法は(Adobe Acrobatなどがあり、Readerがこれを実行できるかどうかわからない場合)、ドキュメントをJPEGとして保存することです。次に、すべての画像を1つのPDFとして再コンパイルし、OCR関数を使用してページ内のテキストを検索し、テキストをコピーして貼り付けることができます。
コピーするテキストを選択します。 [選択オプション]を右クリックします。ダイアログボックスでファイル名を選択し、新しいファイルをリッチテキスト形式(RTF)として保存します。開くRTF)テキストを表示します。