2013-06-19 11 views
9

私は第三者によって生成されたPDFを持っています。テキストを取り出そうとしていますが、pdf2textもコピーして貼り付けても読み取り可能なテキストにはなりません。 (2つのうちの)出力を少し掘り下げた後、私は画面上の各文字が3バイトで構成されていることを発見しました。たとえば、「A」は、バイトef,81、および81です。 PDF上のメタデータを見ると、Identity-Hでエンコードされていると主張しているので、Identity-Hでエンコードされた文字セットがあると想定しています。私は既に持っているドキュメントに基づいて部分的なマッピングをしていますが、より完全なマッピングをしたいのです。そのためには、Identity-H用のASCIIテーブルのようなものが必要です。Identity-Hエンコード文字のASCIIまたはUnicode文字へのマッピングはどこでできますか?

+1

すぐには解決できませんが、CID(Identity-H)のドキュメントhttp://partners.adobe.com/public/developer/en/font/5092.CID_Overview.pdfとhttp:// www。 adobe.com/content/dam/Adobe/en/devnet/font/pdfs/5014.CIDFont_Spec.pdf – borrible

+1

ID-hを使用してフォントを持つPDFをお持ちの場合は、**/ToUnicode **マップを使用する必要がありますテキスト抽出のためのPDFで。 Cf。 9.10.2 ISO 32000-1:2008のUnicode値への文字コードのマッピング。 – mkl

+0

こんにちは、これについての私の質問をチェックしてくださいhttp://stackoverflow.com/questions/22431215/read-japanese-characters-in-a-pdf-file/22489010#22489010 – TacB0sS

答えて

6

特に、/ ToUnicodeマップがmklによって指摘されていない場合、PDFからテキストを抽出することは必ずしも可能ではありません。

Acrobatから正しいテキストを切り取って貼り付けることができない場合は、自分でテキストを抽出する可能性はほとんどありません。 Acrobatがそれを抽出できない場合、他のツールがテキストを正しく抽出することはほとんどありません。

手動でエンコードテーブルを作成する場合は、これを使用して抽出された文字を正しい値に再マップできますが、これはこの1つのドキュメントでのみ有効です。

これは、しばしば意図的に行われます。私はドット内のフォントごとに文字をランダムに再マップする文書を見てきました。これは難読化の一種として使用され、これらのPDFからテキストを抽出する唯一の実際の方法はOCRに頼ることです。このタイプのトリックを使用して人々がデータを抽出するのを止める多くの財務報告があります。

また、Identity-Hは、0x0000から0xFFFFまでのすべての文字の1:1文字マッピングです。すなわち、アイデンティティはアイデンティティマッピングです。

あなたの実際の問題は、このPDFの欠落/ ToUnicodeのエントリです。あなたのPDFに埋め込まれたCMapがあり、なぜ文字あたり3バイトがあるのか​​が分かると思います。

+1

だから、基本的に私はすでに持っているものをやらなければなりませんdone:自分でマッピングを作成します。幸いなことに、この代理店が生産しているPDFはすべて同じ設定を使用しているようですので、意図的ではないかと疑います(もしそうであれば、あいまいではありません)。 –

関連する問題