【问题标题】:Where can I a mapping of Identity-H encoded characters to ASCII or Unicode characters?在哪里可以将 Identity-H 编码字符映射到 ASCII 或 Unicode 字符?
【发布时间】:2013-06-16 03:23:07
【问题描述】:

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

【问题讨论】:

标签: pdf text unicode encoding character-encoding


【解决方案1】:

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

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

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

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

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

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

【讨论】:

  • 所以,基本上我必须做我已经做过的事情:自己创建映射。幸运的是,该机构制作的所有 PDF 似乎都使用相同的设置,所以我怀疑这是故意的(或者如果是,它们不太擅长隐藏)。
猜你喜欢
  • 1970-01-01
  • 2021-11-08
  • 2011-08-29
  • 2019-02-04
  • 1970-01-01
  • 1970-01-01
  • 2017-03-15
  • 2011-08-20
  • 1970-01-01
相关资源
最近更新 更多