10

我有一个包含有价值的文本信息的 PDF 文件。

问题是我无法提取文本,我得到的只是一堆乱码。如果我将文本从 PDF 阅读器复制并粘贴到文本文件中,也会发生同样的情况。甚至Acrobat Reader 中的文件 -> 另存为文本也会失败。

我已经使用了所有可以使用的工具,结果是一样的。我相信这与字体嵌入有关,但我不知道究竟是什么?

我的问题:

  • 这个奇怪的文字乱码的罪魁祸首是什么
  • 如何从 PDF 中提取文本内容(以编程方式、使用工具、直接操作位等)?
  • 如何修复PDF在复制时不乱码?
4

3 回答 3

25

某些 PDF 文件是在没有特殊信息的情况下生成的,这些信息对于从中成功提取文本至关重要。甚至通过 Adob​​e 工具。基本上,此类文件不包含字形到​​字符的映射信息。

此类文件将很好地显示和打印(因为字符的形状已正确定义),但无法正确复制/提取其中的文本(因为没有关于使用的字形/形状的含义的信息)。

例如,当使用“最小文件大小”预设时,Distiller 会生成此类文件。

恐怕除了 OCR 之外,没有其他方法可以从此类文件中检索文本。我们最近发布了关于如何在 .NET 中 OCR PDF的指南。


补充原答案

原始答案提到了“有关使用的字形/形状含义的信息”。此信息应包含在称为/ToUnicode表格的 PDF 结构中。每个作为子集嵌入并使用非标准 ( Custom) 编码的字体都需要这样的表。

为了快速评估文本内容的可提取性,您可以使用pdffonts命令行实用程序。这以表格形式打印有关 PDF 使用的每种字体的一系列项目。表的存在/ToUnicode由列标题指示uni

一些示例输出:

$ kp@mbp:git.PDF101.angea> pdffonts handcoded/textextract/textextract-good.pdf

    name                     type        encoding   emb sub uni object ID
    ------------------------ ----------- ---------- --- --- --- ---------
    BAAAAA+Helvetica         TrueType    WinAnsi    yes yes yes     12  0
    CAAAAA+Helvetica-Bold    TrueType    WinAnsi    yes yes yes     13  0


$ kp@mbp:git.PDF101.angea> pdffonts handcoded/textextract/textextract-bad1.pdf

    name                     type        encoding   emb sub uni object ID
    ------------------------ ----------- ---------- --- --- --- ---------
    BAAAAA+Helvetica         TrueType    WinAnsi    yes yes no      12  0
    CAAAAA+Helvetica-Bold    TrueType    WinAnsi    yes yes no      13  0


$ kp@mbp:git.PDF101.angea> pdffonts handcoded/textextract/textextract-bad2.pdf

    name                     type        encoding   emb sub uni object ID
    ------------------------ ----------- ---------- --- --- --- ---------
    BAAAAA+Helvetica         TrueType    WinAnsi    yes yes yes     12  0
    CAAAAA+Helvetica-Bold    TrueType    WinAnsi    yes yes no      13  0

允许您正确提取两种字体的good.pdf文本内容,因为两种字体都有一个/ToUnicode附表。

对于bad1.pdf和 ,bad2.pdf文本提取仅对两种字体中的一种成功,而对另一种失败,因为只有一种字体有/ToUnicode表格。

我,Kurt Pfeifle最近创建了一系列手工编码的 PDF 文件,以展示 PDF 源代码中现有的、有缺陷的、被操纵的或缺失/ToUnicode的表格的影响。这些 PDF 包含大量注释,适合在文本编辑器的帮助下进行探索。上面pdffonts的输出示例是在这些手工编码文件的帮助下创建的。(还有一些显示不同结果的 PDF,有兴趣的读者可能想探索一下……)

于 2012-08-30T05:07:19.327 回答
12

我向很多人寻求帮助,OCR 是解决这个问题的唯一方法

于 2012-08-31T17:27:10.293 回答
3

我有同样的问题。将其上传到 Google Drive,使用 Google Docs 打开并从那里复制文本对我有用。

于 2014-11-19T09:46:28.430 回答