是否可以从可搜索的 PDF 访问文本覆盖?

Posted

技术标签:

【中文标题】是否可以从可搜索的 PDF 访问文本覆盖?【英文标题】:Is it possible to access the text overlay from a searchable PDF? 【发布时间】:2012-09-25 17:20:40 【问题描述】:

我了解 PDF 和可文本搜索的 PDF 之间存在差异。可文本搜索的 PDF 具有用于搜索的文本覆盖。是否可以将此文本覆盖提取到 txt 文件中?也许使用 Adob​​e API?

【问题讨论】:

【参考方案1】:

“可搜索的PDF”不是官方定义,但它是一个常用的表达方式。

如果标准 PDF 嵌入了它使用的所有字体,并且如果这些字体不使用自定义编码,则很可能它是“可搜索的”:这意味着您可以从中复制“n”粘贴文本,并且你可以从中提取文本(像pdftotext 这样的工具或多或少可以完美地工作)。这与“文本覆盖”无关,它是 PDF 的标准架构。

您所说的“文本覆盖”是可以添加到扫描 PDF 的内容。通过扫描创建的 PDF 是整页图像,通常是 TIFF,嵌入在(否则为空)PDF 页面中。然后,在另一个步骤中,通过对其运行 OCR(光学字符识别)来添加“文本覆盖”。这为原本愚蠢的“仅像素”PDF 提供了“可搜索性”。

如果这种带有“文本覆盖”的 PDF 没有在其字体周围使用奇怪的结构,那么应该很容易将此文本提取到 *.txt 文件中。毕竟,在纯图像 PDF 上运行 OCR 旨在添加“可搜索”文本:

安装pdftotext(适用于Linux、Unix、Windows、Mac OS X)然后尝试运行:

pdftotext -layout some-input.pdf  some-input.txt

注意事项,大​​多数 OCR 都远非完美。如果您对所有 字符 的识别率达到 99%,那么您将很幸运。 (但这意味着:大约 10% 的 words 和大约 100% 的 sentences 包含错误——这会让你在高中时肯定会失败...... )

还应该注意的是,这些“文本覆盖”在技术上与 PDF 中的任何其他文本部分相同(除了它们包含更多的拼写和语法错误 :-)——但它们使用特殊的文本呈现模式(模式 @ 987654324@),描述为“既不填充也不描边文本(不可见)。”虽然它是“不可见的”,但您仍然可以突出显示、复制粘贴或提取这些文本部分。

【讨论】:

谢谢。这不仅是启发性的,而且完美地回答了我的问题。

以上是关于是否可以从可搜索的 PDF 访问文本覆盖?的主要内容,如果未能解决你的问题,请参考以下文章

从可点击的谷歌地图覆盖传播鼠标事件

从可观察对象返回的复杂对象中访问数据

从可组合访问 ref 值

jquery ui,无法从可拖动函数中访问对象变量

从可组合访问 ref 值(第 2 部分)

从可发布的 Angular 库访问环境设置