Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 如何知道PDF是否仅包含图像或已进行OCR扫描以进行搜索?_Search_Pdf_Ocr_Acrobat - Fatal编程技术网

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

Search 如何知道PDF是否仅包含图像或已进行OCR扫描以进行搜索?,search,pdf,ocr,acrobat,Search,Pdf,Ocr,Acrobat,我有一堆来自扫描文档的PDF文件。这些文件包含图像和文本的混合。有些被扫描为没有OCR的图像,因此每个PDF页面都是一个大图像,即使整个页面都是文本。其他人用OCR扫描,在有文本的地方包含图像和可搜索文本。在许多情况下,甚至图像中的文字也可以搜索 我想用Acrobat 8 Pro进行一个自动过程,使用OCR识别所有扫描文档中的文本,但我不想重新识别过去已经通过OCR过程的文件。有人知道有没有办法分辨哪些只包含图像,哪些已经包含可搜索文本 我计划在C#或VB.NET中这样做,但我不认为能够区分这两

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

我想用Acrobat 8 Pro进行一个自动过程,使用OCR识别所有扫描文档中的文本,但我不想重新识别过去已经通过OCR过程的文件。有人知道有没有办法分辨哪些只包含图像,哪些已经包含可搜索文本


我计划在C#或VB.NET中这样做,但我不认为能够区分这两种文件取决于语言。

各种PDF工具可以告诉你是否有文本。有些可以作为COM控件使用,甚至可以是原生的.NET控件。

Apago的pdfspy将PDF中的信息提取到XML文件中。它包括有关文档的信息,包括图像和文本。对于您的项目,有用的信息包括图像计数和大小以及存在OCR(隐藏)文本的位置


在acrobat中打开文档。转到文件->属性。查看“高级”部分,找到PDF制作人。如果它读起来像“纸张捕获…”,那么它就是OCR


希望这能有所帮助。

扫描图像转换为PDF格式,之后经过OCR处理以使文本可搜索,但通常包含呈现为“不可见”的文本部分。所以你在屏幕上看到的(或打印时在纸上看到的)仍然是原始图像。但是,当您搜索成功时,您会得到不可见文本上突出显示的点击

我建议您查看XPDF派生的命令行工具
pdffonts(.exe)
pdfinfo(.exe)
pdftotext(.exe)
。下载请参见此处:

Pdfonts的示例用法:

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
[....]
C:\downloads\> pdftotext ^
                   -layout ^
                   cisco-ip-phone-7911-guide6.1.pdf ^
                   cisco-ip-phone-7911-guide6.1.txt
此PDF使用字体(由“名称”列表示),嵌入字体(由“emb”列中的“是”表示),并使用子集字体(由“子”列中的“是”表示)

此PDF使用2种字体(由“名称”列指示)。字体“Universe BlackClose”完全嵌入(在“emb”列中用“是”表示,在“子”列中用“否”表示)。也使用“Arial”字体,但未嵌入

C:\downloads\> pdffonts examle2.pdf
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
此PDF不使用单一字体,因此没有嵌入任何文本(因此也没有OCR)。

pdftotext的用法示例:

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
[....]
C:\downloads\> pdftotext ^
                   -layout ^
                   cisco-ip-phone-7911-guide6.1.pdf ^
                   cisco-ip-phone-7911-guide6.1.txt

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

很抱歉,我要挖掘旧线程,但如果您发现了,请查看我的线程:


您可以通过在unix/linux/osx中转换pdf或在python中以“rb”模式打开它来获得关于pdf的额外信息。(当然,这是python,你不想使用它,但可能它有一些等价物)。

一个技术含量非常低的解决方案:任何扫描文本的文件无疑都会包含字母“A”,所以搜索所有不包含字母A的文件内容。i、 e.“不是一个”。显示的任何文件都不会进行OCR

使用“dtsearch”为所有pdf文件创建索引。。。然后“查看索引过程的日志文件”,检查未索引的pdf文件列表。

您能推荐一个您知道有效的,或者我应该尝试的文件吗?好的,在我的示例集中,基于图像的pdf有一个空白的pdf生产者,但OCR显示的是“Adobe Acrobat 8.16纸张捕获插件”但我发现了另一个有可选文本的,制作人是“Acrobat Dilleter 5.0.5(Windows)”,还有一个有文本,“v5.1”,还有一个有文本“Microsoft Office Word 2007”和“GPL Ghostscript 8.54”对于基于图像的PDF,生成器似乎是空白的,但是对于包含文本的PDF,其他值是空白的。我尝试了您的方法,但是对于一些扫描的PDF,“pdffonts”命令仍然返回Helvetica字体?你能解释或指导我怎样才能更准确地做到这一点吗。Thanks@DanglingPiyush:如果没有这样一个扫描PDF文件的样本,我无法告诉你Helvetica是从哪里来的。您能否提供一个显示此行为的示例页面?这是示例pdf的链接,它仅包含扫描图像,但pdf显示Helvectica字体。请查看。感谢您的时间。::您查看过吗?