如果将带有文本的页面扫描到PDF中并在其上运行OCR应用程序,则文本将添加到页面中,但是“文本呈现模式”设置为不可见。它在那里,但不呈现在屏幕上(或打印在纸上)。您看到或打印的是原始扫描图像。
我们如何使不可见的文字可见?
好吧,我们可以编辑PDF ...将文本渲染设置为不可见的PDF代码是这样的:
3 Tr
您无法在原始from_abbyy.pdf或from_ghostscript.pdf中找到此字符串(因为),因为部分PDF已压缩。因此,在以下帮助下,我们将其尽可能地解压缩qpdf
:
qpdf \
--qdf \
from_abbyy.pdf \
qdf--from_abbyy.pdf
qpdf \
--qdf \
after_ghostscript.pdf \
qdf--after_ghostscript.pdf
现在,我们可以轻松找到上面的字符串(每个文件中只有一个出现)。
让我们将其切换为文本渲染的可见模式之一。总体而言,我们可以在以下8种文本呈现模式中进行选择:
0 - fill glyph shapes
1 - stroke glyph shapes
2 - fill, then stroke glyph shapes
3 - neither fill nor stroke glyph shapes (invisible)
4 - fill and add to path for clipping glyph shapes
5 - stroke glyph shapes and add to path for clipping
6 - fill, then stroke glyph shapes and add path for clipping
7 - add glyph shapes to path for clipping
如果我使用“填充”模式,则来自OCR的文本在基础扫描图像的顶部可能看起来不太好。因此,我更喜欢“笔画”变体。所以我只是改变上面的行来阅读
1 Tr
查看此修改过的PDF,我不喜欢它,因为默认线宽对于我的口味来说太粗了。此外,轮廓笔触的颜色为黑色(默认);我希望使用红色,以便与最初扫描的形状形成对比。因此,我在此行的开头添加了一些代码,以将线宽设置为四分之一点:
.25 w
以及其他一些将笔触颜色设置为红色:
1 0 0 RG
现在整行显示为:
.25 w 1 0 0 RG 1 Tr
就这样。
请注意,我们的少量操作已损坏了该文件,因为其“ TOC”(以技术术语:其xref
表)现在将不再有效。尽管如此,Acrobat Reader或Acrobat Professional仍将打开它(甚至不会抱怨)并以静默方式“修复”文件的外部参照部分。其他PDF查看器可能会拒绝该文件,但目前我们不在乎...
以下是结果的
屏幕截图:(第一个屏幕截图放大到窗口宽度。)
(第二个屏幕截图放大到800%。)
红色轮廓是所扫描的文本,现在可以看到,就像我们想要的一样。
我对from_abbyy.pdf和after_ghostscript.pdf这两个文件执行了与上述相同的过程。我在2个不同的Acrobat Reader实例中打开了两个结果。如果我们使它们都缩放到相同的值并最大化两个窗口,则可以通过轻松在两个文件之间切换视图[alt]+[tab]
。这是揭示两个PDF文件之间最好的渲染差异的好方法。
我的结果是:Ghostscript(v9.02)输入和此文件的输出之间甚至没有一个像素不同。但是,如果您要复制'n'粘贴文本,则有很大的不同...