我在哪里可以将Identity-H编码字符映射到ASCII或Unicode字符?

时间:2013-06-19 14:24:00

标签: pdf text unicode encoding character-encoding

我有第三方生成的PDF。我试图从中获取文本,但pdf2text和复制和粘贴都不会产生可读文本。在对输出(两个中的任何一个)进行一点挖掘之后,我发现屏幕上的每个字符都由三个字节组成。例如,“A”是字节ef8181。查看PDF上的元数据,它声称在Identity-H中编码,所以我假设我看到的是一组用Identity-H编码的字符。我有一个基于我已经拥有的文档的部分映射,但我想做一个更完整的映射。要做到这一点,我需要像Identity-H的ASCII表。

1 个答案:

答案 0 :(得分:7)

尤其是当mkl指出缺少/ ToUnicode映射时,并不总是可以从PDF中提取文本。

如果无法从Acrobat剪切和粘贴正确的文本,那么您将很难自己提取文本。如果Acrobat无法提取它,那么任何其他工具都不可能正确提取文本。

如果手动创建编码表,则可以使用此功能将提取的字符重新映射到正确的值,但这很可能只适用于这一个文档。

通常这是故意的。我已经看到了为点中的每种字体随机重新映射字符的文档。它被用作混淆的一种形式,从这些PDF中提取文本的唯一真正方法是求助于OCR。有许多财务报告使用这种技巧来阻止人们提取数据。

此外,Identity-H只是从0x0000到0xFFFF的所有字符的1:1字符映射。即。身份是一种身份映射。

您真正的问题是此PDF中缺少/ ToUnicode条目。我怀疑PDF中还有一个嵌入式CMap,它解释了为什么每个字符可能有3个字节。