如何知道PDF是否仅包含图像还是已经过OCR扫描以进行搜索?

Bra*_*tch 23 pdf ocr search acrobat

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

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

我打算在C#或VB.NET中这样做,但我不认为能够分辨两种文件是依赖于语言的.

Kur*_*fle 24

转换为PDF的扫描图像在事后已被OCR处理以使文本可搜索通常包含呈现为"不可见"的文本部分.因此,您在屏幕上(或打印时在纸上)看到的仍然是原始图像.但是当您成功搜索时,您会突出显示隐藏文本上的匹配.

我建议你看看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
[....]
Run Code Online (Sandbox Code Playgroud)

此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
Run Code Online (Sandbox Code Playgroud)

此PDF使用2种字体(由"名称"列表示).字体'Universe-BlackOblique'完全嵌入(由'emb'列中的'yes'表示,'sub'列中的'no'表示).字体'Arial'也被使用,但未嵌入.

C:\downloads\> pdffonts examle2.pdf
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
Run Code Online (Sandbox Code Playgroud)

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

用法示例pdftotext:

C:\downloads\> pdftotext ^
                   -layout ^
                   cisco-ip-phone-7911-guide6.1.pdf ^
                   cisco-ip-phone-7911-guide6.1.txt
Run Code Online (Sandbox Code Playgroud)

这将从PDF中提取所有文本字符串(试图保留原始布局的一些相似性).如果PDF中没有文字,你就知道没有OCR ......