如何将外部 OCR 嵌入现有 PDF?

Posted

技术标签:

【中文标题】如何将外部 OCR 嵌入现有 PDF?【英文标题】:How to embed external OCR into existing PDF? 【发布时间】:2010-12-02 03:34:18 【问题描述】:

我有一组图像,我在这些图像上运行 OCR 应用程序。此过程会生成一个带有字符偏移的 XML 文件。然后我使用 Acrobat 9 将图像转换为 PDF。现在,我想将 XML 文件信息作为不可见文本层添加到 PDF 中,以实现可搜索的 PDF。有没有简单免费的方法?

一些细节:

我不想使用 Acrobat 的 OCR 功能;

OCR 过程生成一个 XML 文件,其中包含以下元素:

<line baseline="1049" l="158" t="1012" r="1196" b="1060">This is a sample line of text from an image</line>

更新:也许可以用不同的方式做我想做的事。假设已经有一个从一组图像生成的 PDF 文件,并且其中已经包含 OCRed 文本。是否可以(可能以编程方式)仅访问每个页面的图像,对其进行处理(例如,将其转换为单色),并将其保存回 PDF 文件?如果是,则 OCRed 文本不会丢失。

[我应该将此更新放在一个单独的问题中吗?]

【问题讨论】:

你可能会发现hocr2pdf很有用 【参考方案1】:

关于在不丢失隐藏层的情况下处理 PDF 文件的后续问题:我相信 Ghostscript 能够做到这一点。例如,以下命令应将 PDF 转换为灰度:

gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dColorConversionStrategy=/Gray -dProcessColorModel=/DeviceGray -sOutputFile=output.pdf input.pdf

【讨论】:

很好,它成功了。但是输出没有我想要的那么干净。如果 ImageMagick 可以在不丢失文本层的情况下转换 PDF,我想使用以下内容处理每个页面: convert \( -white-threshold 50% \) -monochrome ... 也许有一种方法可以告诉 IM 如何使用GS,就像 DaveParillo 说的。我稍后会检查。【参考方案2】:

如果您只想将现有 pdf 转换为灰度,请尝试Imagemagick:

convert foo.pdf -colorspace Gray -compress zip gray.pdf

我认为这不会改变您 pdf 中的任何其他属性。

【讨论】:

这似乎没有保留 PDF 中的隐藏文本层。 (用 ImageMagick 6.4.5 试过。) 我也试过了,也丢了文字层。我也使用了 ImageMagick 6.4.5。

以上是关于如何将外部 OCR 嵌入现有 PDF?的主要内容,如果未能解决你的问题,请参考以下文章

如何识别需要 OCR 的 PDF 文件?

将外部 PDF 插入 Prawn 生成的文档

如何修复 PDF 文件并嵌入丢失的字体

请问如何查看pdf内嵌字体?

如何替换或修改嵌入在 PDF 文件中的字体或字形?

如何知道 PDF 是不是仅包含图像或已被 OCR 扫描以进行搜索?