我有一堆来自扫描文档的 PDF 文件。这些文件包含图像和文本的混合。有些被扫描为没有 OCR 的图像,因此每个 PDF 页面都是一个大图像,即使整个页面完全是文本。其他人使用 OCR 扫描,并包含图像和可搜索文本,其中存在文本。在许多情况下,甚至可以搜索图像中的单词。
我想使用 Acrobat 8 Pro 使用 OCR 进行自动处理以识别所有扫描文档中的文本,但我不想对过去已经通过 OCR 处理的文件进行重新 OCR。有谁知道是否有办法分辨哪些只包含图像,哪些已经包含可搜索的文本?
我计划在 C# 或 VB.NET 中执行此操作,但我认为无法区分这两种文件取决于语言。
最佳答案
已转换为 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
[....]
此 PDF 使用字体(由“名称”列表示)、嵌入字体(由“emb”列中的"is"表示)并使用子集字体(由“子”列中的"is"表示)。
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...
关于search - 如何知道 PDF 是否仅包含图像或已进行 OCR 扫描以进行搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1489733/