私は第三者によって生成されたPDFを持っています。テキストを取り出そうとしていますが、pdf2text
もコピーして貼り付けても読み取り可能なテキストにはなりません。 (2つのうちの)出力を少し掘り下げた後、私は画面上の各文字が3バイトで構成されていることを発見しました。たとえば、「A」は、バイトef
,81
、および81
です。 PDF上のメタデータを見ると、Identity-Hでエンコードされていると主張しているので、Identity-Hでエンコードされた文字セットがあると想定しています。私は既に持っているドキュメントに基づいて部分的なマッピングをしていますが、より完全なマッピングをしたいのです。そのためには、Identity-H用のASCIIテーブルのようなものが必要です。Identity-Hエンコード文字のASCIIまたはUnicode文字へのマッピングはどこでできますか?
答えて
特に、/ ToUnicodeマップがmklによって指摘されていない場合、PDFからテキストを抽出することは必ずしも可能ではありません。
Acrobatから正しいテキストを切り取って貼り付けることができない場合は、自分でテキストを抽出する可能性はほとんどありません。 Acrobatがそれを抽出できない場合、他のツールがテキストを正しく抽出することはほとんどありません。
手動でエンコードテーブルを作成する場合は、これを使用して抽出された文字を正しい値に再マップできますが、これはこの1つのドキュメントでのみ有効です。
これは、しばしば意図的に行われます。私はドット内のフォントごとに文字をランダムに再マップする文書を見てきました。これは難読化の一種として使用され、これらのPDFからテキストを抽出する唯一の実際の方法はOCRに頼ることです。このタイプのトリックを使用して人々がデータを抽出するのを止める多くの財務報告があります。
また、Identity-Hは、0x0000から0xFFFFまでのすべての文字の1:1文字マッピングです。すなわち、アイデンティティはアイデンティティマッピングです。
あなたの実際の問題は、このPDFの欠落/ ToUnicodeのエントリです。あなたのPDFに埋め込まれたCMapがあり、なぜ文字あたり3バイトがあるのかが分かると思います。
だから、基本的に私はすでに持っているものをやらなければなりませんdone:自分でマッピングを作成します。幸いなことに、この代理店が生産しているPDFはすべて同じ設定を使用しているようですので、意図的ではないかと疑います(もしそうであれば、あいまいではありません)。 –
- 1. ASCII文字のURLエンコードはどうすればできますか?
- 2. URL Unicode文字エンコード
- 3. UnicodeEncodeError: 'ascii'コーデックは文字をエンコードできません[...]
- 4. ascii 'コーデックは文字' u 'をエンコードできません\ xe2
- 5. PySpark - UnicodeEncodeError: 'ascii'コーデックは文字をエンコードできません
- 6. Python3 'ascii'コーデックは文字をエンコードできません
- 7. ASCIIまたはUnicodeをキリル文字に変換するには?
- 8. エンコーディング= ASCII;エンコード= UNICODE。 Npgsql 3の接続文字列で動作しません
- 9. asciiコーデックは文字をエンコードすることができません、Python 2.6
- 10. Python Pandas to_clipboard()UnicodeEncodeError: 'ascii'コーデックで文字をエンコードできません
- 11. ASCIIコーデックで文字をエンコードできません '\ u2013'
- 12. 'ascii'コーデックで文字 'u503c'をエンコードできません
- 13. UnicodeEncodeError: 'ascii'コーデックでu '\ u03c0'文字をエンコードできません
- 14. 使用されていない文字(ASCIIまたはUnicode)
- 15. PythonのUnicode文字列からASCIIへの変換2.7
- 16. 文字セットがASCIIの場合は、どのようにしてリテラル文字列ISO/ANSI CでUnicode文字を表現できますか?
- 17. =?UTF?Q? ASCIIからUnicodeへのニュースグループ文字列
- 18. VBScriptでUnicode文字列をBase64にエンコード
- 19. UnicodeEncodeError: 'ascii'コーデックは位置7の文字 'u2013'をエンコードできません。
- 20. Unicodeエスケープシーケンス進は私のプログラムでのUnicode/UTF-8文字をエンコードするには
- 21. Python2.7印刷Unicode文字列: 'ASCII' コーデックが文字をエンコードすることはできません...序ない範囲内(128)
- 22. エンコードURI(スペースなど)、エンコード非ASCII文字のない
- 23. ASCIIへの特殊文字
- 24. 「Charmap」コーデックは文字をエンコードできません(Unicodeセルビア語のラテン語)
- 25. R言語のUnicode文字のマッピングR
- 26. 文字列のUnicodeへの変換をテストできません
- 27. この文字は何ですか:?類似の文字はどこで見ることができますか?
- 28. 不可能なbecome_userエラーUnicodeEncodeError: 'ascii'コーデックは文字をエンコードできません
- 29. 非ASCII文字列のUnicode表現をそのままPython文字列に変換するには?
- 30. UTF8でエンコードされた非ASCII文字をPerlでASCII同等の文字に変換するにはどうすればよいですか?
すぐには解決できませんが、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
ID-hを使用してフォントを持つPDFをお持ちの場合は、**/ToUnicode **マップを使用する必要がありますテキスト抽出のためのPDFで。 Cf。 9.10.2 ISO 32000-1:2008のUnicode値への文字コードのマッピング。 – mkl
こんにちは、これについての私の質問をチェックしてくださいhttp://stackoverflow.com/questions/22431215/read-japanese-characters-in-a-pdf-file/22489010#22489010 – TacB0sS