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

我有一堆来自扫描文档的PDF文件。这些文件包含图像和文本的混合。有些被扫描为没有OCR的图像,所以每个PDF页面是一个大的图像,即使整个页面完全是文本。其他人用OCR进行扫描,并包含图像和可搜索的文本,其中存在文本。在许多情况下,图像中的单词甚至可以搜索。

我想使用Acrobat 8​​ Pro使用OCR来识别所有扫描文档中的文本的自动化过程,但是我不想重新OCR过去已经通过OCR过程的文件。有谁知道是否有办法告诉哪些只包含图像,哪些包含可搜索的文本?

我正在计划在C#或VB.NET中执行此操作,但我不认为能够区分两种文件是与语言相关的。

最佳答案
已转换为PDF的已扫描的图像已经被修改为使文本可搜索,通常包含呈现为“不可见”的文本部分。那么你在屏幕上看到的东西(或打印在纸上)仍然是原始图像。但是,当您成功搜索时,您会收到突出显示在不可见文本上的命中。

我建议您查看XPDF派生的命令行工具pdffonts(.exe),pdfinfo(.exe)和pdftotext(.exe)。看到这里下载:http://www.foolabs.com/xpdf/download.html

pdffonts的用法示例:

C:\downloads\> pdffonts cisco-ip-phone-7911-guide6.1.pdf
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
LGOKFL+Univers-BlackOblique          Type 1C           yes yes no   13171  0
LGOKGM+Univers-Black                 Type 1C           yes yes no   13172  0
[....]

该PDF使用字体(由’name’列表示),嵌入(’emb’列中的’yes’)并使用子集字体(在’sub’列中由’yes’表示)。

C:\downloads\> pdffonts examle1.pdf
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
Univers-BlackOblique                 Type 1C           yes no  no   14    0
Arial                                TrueType          no  no  no   15    0

此PDF使用2种字体(由“名称”列指示)。 “Universe-BlackOblique”字体被完全嵌入(在’emb’列中显示’yes’,’sub’列中的’no’指示)。字体’Arial’也被使用,但不嵌入。

C:\downloads\> pdffonts examle2.pdf
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------

此PDF不使用单一字体,因此没有嵌入任何文本(因此也不会有OCR)。

pdftotext的使用示例:

C:\downloads\> pdftotext ^
                   -layout ^
                   cisco-ip-phone-7911-guide6.1.pdf ^
                   cisco-ip-phone-7911-guide6.1.txt

这将从PDF中提取所有文本字符串(尝试保留原始布局的一些相似之处)。如果PDF中没有文字,你会知道没有OCR …

转载注明原文:如何知道PDF是仅包含图像还是被OCR扫描进行搜索? - 代码日志