16

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

4

1 回答 1

10

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

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

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

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

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

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

于 2013-07-15T08:07:23.453 回答