如何创建带有扫描页面但可选文本的PDF?


32

今天,我收到了供应商提供的PDF,其中包含几张带有签名等的印刷和扫描页面。我在Acrobat Reader DC中打开了它。但是令我惊讶的是,可以从明显扫描的图像中选择文本并将其复制为文本。看截图:

用可选文本扫描PDF

由于复制的文本包含错误,因此在此之后显然存在一些OCR。但这怎么可能呢?我以前从未见过,如何创建呢?


4
github.com/gkovacs/pdfocr这样的软件包允许已存在的图像
PDFS

这与您通过Batch-OCR获得许多PDF的结果有何不同?
德米特里·格里戈里耶夫

@DmitryGrigoryev我以前从未见过这种类型的PDF,所以我问它是什么。答案中没有关于打印机固件OCR或OCRMyPDF的内容,问题和答案都非常不同。除了两个问题都是关于OCR和PDF之外,我看不到任何重复的内容。
Vojtěch多纳尔

好吧,我从未见过与您发布的内容不同的OCR PDF,这就是为什么您的问题对我来说很奇怪。
德米特里·格里戈里耶夫

Answers:


53

(与这里的其他答案相反),这很可能与Acrobat毫无关系。

当您选择“另存为PDF”并在设置中选中“可搜索”复选框时,大多数(全部?!)专业文档扫描仪和大多数半专业的文档扫描仪将自动执行OCR。较便宜的“消费级”型号将在连接的PC上执行OCR,典型的网络扫描仪在内部执行。

“可搜索”一词的含义不外乎是扫描程序将执行OCR,然后生成一个页面,其中包含扫描的位图,并用OCR的不可见字符覆盖它们,每个字符都放在位图上的相应字符上。

这样,您就可以像魔术一样搜索,选择,复制和粘贴“位图”。但是,这根本不是魔术。实际上,您只是在复制不可见的文本。

扫描仪还可以执行一些其他操作,例如将许多小图块中的大图像合成在一起,这些小图块也可以重复使用。这样会导致文档尺寸比实际可能的要小得多,但是也可能导致有趣的惊喜(如果碰巧发生在您面前,那就不会那么有趣!),例如Xerox会改变您的账单故事,具有讽刺意味的是,即使没有完成OCR,这也取决于在固件上。


是的,这很可能是他们创建它的方式,我非常怀疑他们使用完整的Adobe Acrobat。
Vojtěch多纳尔

为此,我们将扫描图像后面的所有文本放置在OCR报告发现每个文本节点的位置。
托尔比约恩Ravn的安德森

10

但这怎么可能呢?

基本上,程序对输入文件执行OCR,然后在图片上放置不可见的文本层。或者,它也可以在图片放置可见的文本层,从而产生相同的效果。

选择某项时,图片无所谓,因为选择了文本层。

如何创建?

有几种方法。鉴于已经建议了Acrobat,我将添加一些免费选项(幸运的是,您不必强迫Windows使用它们)。

PDF-X更改查看器

这是Tracker Software本机Windows程序。如果在32位前缀中使用32位版本,则该免费软件版本在Wine下运行良好,因此可以在Windows,macOS和Linux上使用它。在后两种情况下,您将分别需要PlayOnMac或PlayOnLinux。

这是我在Ask Ubuntu上留下的答案的图片:

Wine下PDF-XChange Viewer的屏幕截图

OCRmyPDF

这是一个基于Python的多平台程序,基于Ghostscript,Tesseract和Unpaper。从文档:

OCRmyPDF做什么

OCRmyPDF分析PDF的每个页面,以确定捕获该页面上的所有信息而不丢失内容所需的色彩空间和分辨率(DPI)。它使用Ghostscript栅格化页面,然后对栅格化图像执行OCR,以创建OCR“图层”。然后将该层移植回原始PDF。

它可以轻松地安装在Debian和Ubuntu衍生产品上:

apt-get install ocrmypdf

或在macOS上:

brew tap jbarlow83/ocrmypdf
brew install ocrmypdf

在Windows上,您将需要使用Docker映像。有关详细信息,请参见官方文档。

用法非常简单,我建议您使用可选的-d(歪斜校正)和-c(干净)参数以获得更好的结果。在运行OCR程序之前,它将拉直每一页并清除小点/缺陷。

您可以(并且应该)使用提供语言-l

这是一个用意大利语编写的偏斜文档中的示例:

OCRmyPDF示例

我使用的命令是:

ocrmypdf -l ita -d -c input.pdf output.pdf

线上工具

有一些在线工具可以做到这一点。值得注意的是,PDF24托管了一个基于Web免费OCRmyPDF版本,可以不受限制地使用。

也可以看看:


谢谢您的回答,我尝试了OCRMyPDF,它工作得很好,但不幸的是,我所需的语言支持还不成熟,因此结果还不是很有用。
Vojtěch多纳尔

@VojtěchDohnal您对哪种语言感兴趣?您是否为Tesseract安装了相关的语言包?在此处查看列表:macports.org/ports.php?
by=name&substr

4

这可能是由于Acrobat OCR功能所致

Acrobat可以用多种语言识别任何PDF或图像文件中的文本。您所要做的就是打开要OCR的扫描文档或图像,然后单击工具栏右上方的蓝色“工具”按钮。在该边栏中,选择“识别文本”选项卡,然后单击“在此文件中”按钮。

...

识别出文本后,您现在可以使用所有常规标记工具标记PDF —您可以突出显示,划线文本等等。您甚至可以使用检测到的格式复制文本,尽管这通常不如文本识别本身准确。


这也适用于Reader吗?其他文件不工作对我来说这样...
Vojtěch多纳尔

我不害怕,但请看一下这篇文章:pdf.wondershare.com/pdf-software-comparison/…–
duDE

3

Adobe网站

识别扫描的PDF文件中的文本

当您将纸质文档扫描为PDF时,您实际上只是在为这些文档拍照。这对于照片和其他打印图像非常有用,但是如果您有一个200页的文档,需要在其中找到特定的单词或短语,该怎么办?使用Acrobat识别该扫描文件中的文本,使文本内容可搜索和可用。

  1. 在Acrobat中打开扫描的文档后,打开“工具”窗格并展开“文本识别”面板。如果在“工具”窗格中看不到“文本识别”,则可以通过选择右上角的菜单来添加它(下图–看到红色小箭头指向的位置吗?单击此处)。
  2. 单击“在此文件中”以扫描您打开的文档。您可以接受默认设置,然后在“识别文本”对话框弹出时单击“确定”。Acrobat会将图像转换为可用的文本;要对其进行测试,只需尝试使用“内容编辑”面板编辑一个单词或句子。那不是很棒!?

谢谢,但我刚开了PDF阅读器中的直流和没有做任何特别的它,与扫描书页其它PDF文档不会自动这种工作方式...
Vojtěch多纳尔

5
在收到文件之前,OCR已完成,当识别出文本时,它将与pdf一起保存。
队友Juhász

@VojtěchDohnal你可能需要完整的Acrobat,不只是读者
托尔比约恩Ravn的安德森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.