本篇博客的主题是光学字符识别 (OCR) 技术如何促进 PDF 文档(便携文件格式)的数字化转型。乍听起来这可能有些愚蠢:有人会说,PDF 文档已经是数字化,还有什么可转型的?OCR 技术诞生已经有很长时间,所以使用 OCR 数字化纸质文件已经并不新鲜。然而,PDF 并非如此简单,OCR 所能做的并不仅仅是将纸质文件数字化,当我们需要处理大量 PDF 文档时,它可以真正将我们的工作数字化。
为什么使用 OCR 处理 PDF?
为什么我们需要使用 OCR 将 PDF 文档“数字化”?PDF 文档已经是数字格式的,不是吗?
虽然我们在电脑上能够完整查看大多数 PDF 文档,但是却很难有效分析、修改和重复使用 PDF 中的信息。要解决这个难题,我们首先要了解 PDF 文档的结构。
我们来了解一下不同类型的 PDF:
- 在扫描或“纯图片”的 PDF 文档中只有一张图片。里面没有可用文本,并且我们无从知晓这种 PDF 文档的结构。
- 在可搜索和所谓的“原生数字”PDF 文档中通常有可用文本,但文档结构仍然未知。
PDF 并不包含文档结构信息。这意味着就一个 PDF 文档而言,我们无从知道哪些部分是文本,哪些部分是图像。我们不知道这些元素的作用,也不清楚它们之间的关系。而 OCR 能够帮助我们了解这些东西。
然而,某些类型的 PDF 文档,如 PDF/UA,可能会在一定程度上包含描述结构的附加信息。不过这些文档只占所有 PDF 文档的一小部分,不足以使我们对 PDF 文档进行包括分析和修改在内的许多操作。
OCR 可实现的 PDF 功能
OCR 可以实现哪些功能?除了整体处理 PDF 文档或特定页面外,OCR 还支持处理 PDF 文档的内容,包括文本编辑、全文检索、改编、提取表格、比对文档等等。其中一些功能对 OCR 的依赖显而易见,如处理 PDF 扫描文档,但是还有一些功能对 OCR 的依赖并不明显,如处理 PDF 数字文档。稍后,我们会通过三个用例详细了解这个问题。
在这之前,我们先来简单了解一下 OCR 的工作原理,明确一下它能提供哪些与文档相关的有用信息。
OCR 如何处理文档?
OCR 对文档的处理主要分为三个步骤。
第一步,使用名为“文档分析”(DA) 的系统分析文档页面。DA 系统会“查看”每一页内容,首先分析图片的总体外观,然后检测图片中可能为独立文字和字符的最小部分。通过这种方式,DA 确定页面中哪些部分是文字,哪些部分是图片或表格,并识别页面上是否有背景图片。DA 还能检测到条形码。此外,DA 还可以分析表格,识别表格图片中的分隔符和单元格。
第二步是识别 DA 发现的每一个文字。这是由 OCR 系统自身完成。OCR 可以“读取”每个字符或字符组合的图像,为我们提供计算机代码的形式数字文本,供我们进一步处理。
第三步是使用合成系统进行合成。
经过前两步,我们已经了解了文本、图片和表格在页面中的位置,表格单元格和分隔符的位置,以及各部分文本和表格单元格中存在哪些字符序列等信息。另外,我们还(通过 DA 处理)了解了图像的线条和文字是如何划分的及其在页面上的位置。
我们已经获得了所有组件,但是还没能将这些组件组装起来。而这正是合成系统所要做的。基本来说,合成系统会将先前步骤中获得的所有组件组装成数字形式的文档。合成系统会分析组件的参数和顺序,寻找页面上和页面之间的特定模式和相似性,并通过一些其他处理来重建文档结构。通过这一步,我们最终得到 PDF 文档的内容信息,如:
- 文本功能:段落、标题、页眉/页脚、列表等
- 在数字文档中的哪里放置这些组件
- 每个段落,或一个段落各部分的格式:字符和行距、缩进、对齐等
现在,我们就获得了一个数字化的 PDF 文档结构,可以有效地分析、比较、修改或提取文档中的内容了。
OCR 为 PDF 处理带来的三大转变
现在,我们已经对 OCR 如何识别 PDF 文档结构有了大体了解,下面让我们看看如何利用这些知识解决一些特定的 PDF 处理问题。
1.PDF 段落编辑
有何障碍?
编辑数字 PDF 文档的障碍是什么?PDF 用户一般都希望能够处理数字 PDF 文档中的文本和所有内容。也就是说,可以轻松编辑这些内容。
虽然我们希望如此,
但不幸的是,显示却并非如此:
- PDF 格式在创建之初并没有考虑到编辑功能。恰恰相反,PDF 文档是不可编辑的。
- 如前文所述,PDF 文档中只有单独字符的信息,并没有字词、行、段落或其他文档元素的信息。添加或删除文本时,没有任何用来确定文档结构的相关信息。
- 可以简单添加或删除字符,但不会改变周围固定结构字符的显示方式。比如下面的图片。如果只是简单地在一个 PDF 文档中插入或删除字符,就会像是这样。
综上所述,编辑 PDF 文档的障碍在于 PDF 中缺失的信息(关于在添加或删除信息时如何重新排列其他元素的信息)对于编辑文字时确保文本段落的一致性至关重要。
OCR 救场
借助 OCR,可以轻松在数字 PDF 文档中编辑段落。PDF 文档中的文本会原样提取。OCR 会检测标记,我们需要了解并遵循这些标记,以正确编辑整段内容。
OCR 在 PDF 段落编辑中的作用如下:
当用户发起编辑后,DA 系统会处理页面的栅格图像,找到文字和图片等元素。
随后,合成系统会在页面上创建一个临时副本,并添加所有必要标记。
从 PDF 文档中提取的数字文本与检测到的结构保持一致。这种合成可以让页面可编辑。
然后用户进行编辑,由于程序现在已经知道并且遵循段落结构,因此文本可以顺利编辑。这样可以实现行与行之间自然过渡,行间距和字符间距保持一致,自动选择字体,以及根据编辑需要扩大或缩小段落边框等编辑操作。用户可以实时看到所有编辑操作。
一旦用户完成编辑,只有修改的部分才会更新到 PDF 文档中。虽然使用 OCR 进行转换,但编辑时并不需要将生成的文档创建为原始文档的副本。因为编辑的就是原始文档本身,所有未被编辑的内容都会原样保留。
2.提取 PDF 表格
能否原样得到我们看到的内容?
利用 OCR 可以直接从 PDF 文档中提取表格,使表格得到重复使用。下面我们就来详细了解一下。
数字 PDF 文档中的表格看起来不错。我们可以轻松选择单个单元格中的文本,并将其复制到其他地方。如果我们可以复制一个单元格,我们可不可以复制整个表格,轻松快速地提取我们看到的信息?
为什么不直接复制呢?
很遗憾,我们不能直接复制。像选择文本一样,在一个数字 PDF 文档中选中整个表格并不会保留表格结构,所以我们必须重新创建表格。
为什么会出现这种情况呢?在数字 PDF 文档中,表格的视觉外观由一组对象(如线条和矩形)来定义。这些对象相互独立,都有着自己的外观,与其他对象和表格中的内容无关。也就是说,我们不知道每段文本属于哪个单元格,也不知道它是否属于这个表格。
既然线条和矩形都已经在 PDF 中,为什么不直接复制和粘贴呢?如果这样做,我们至多可以将复制的内容粘贴到另一个 PDF 文档中。即便如此,也不能确保一定成功。而且,我们无法将我们复制的内容粘贴到任何其他应用程序中,例如 Microsoft Word 或 Excel。
如果“读”不到,就“看”不到!
不过,还是有办法可以解决。如果我们不能“读取” PDF 文档中的表格(即使在“数字原生”PDF 文档中对表格也没有描述),那我们就直接用“看”的! OCR 可以根据表格的图像描述和重现表格结构。
借助 OCR,可以提取表格整体的栅格化结构。工作原理如下:
首先,将带有表格的选定区域转换为图像。
接下来,DA 系统分析图像,识别单元格、分隔符、背景以及单元格中的文字和图片等表格元素。
然后,我们需要获取文本。如果 PDF 文本清晰,可直接从 PDF 中提取文本。如果不清晰,可以使用 OCR 识别文本。
最后,合成系统将检测到的结构与内容进行“组装”并进行标注。这些结构和内容会被放入剪贴板,用户可以将其作为整个表格粘贴到另一个应用程序中,如 Excel、Word、电子邮件等。
3.比较“数字原生”PDF 文档
字符都有了,还需要什么?
第三个用例是 OCR 如何帮助我们更准确地比较数字 PDF 文档。
说到比较数字 PDF 文档,你可能会问:“我们已经有了 PDF 中的所有字符,要成功比较 PDF 文档,还需要哪些东西呢?”
下面我们就来了解一下。
一般来说,不仅是 PDF,比较任何格式的两个文档时,都要尽量减少错误差异。另外,就是不能漏掉两个文档之间的任何实际差异。
造成错误差异主要有三个原因:
造成两个文档比较时产生错误差异的第一个原因是,同一文本的格式不同,或在页面中的位置不同,但文本在文件中出现的总体顺序没有改变。第二个原因是页眉/页脚或插入的文字在不同位置打断正文。这两种情况都可能是由于其中一个文档被编辑,或者修改了版面布局,比如设置了不同的页边距。对于这两种情况,您可能已经猜到了解决方案,那就是获取并使用文档结构信息,即通过 OCR 重建结构。然而,还有另外一个原因也会造成错误差异,那就是 OCR 精度。一般来说,OCR 并非 100% 准确。关于这个问题,我们稍后再作讨论。
考虑与不考虑文档结构有何区别?
上面截图的两个文档中只存在一处真正的差异。左边的文档中有一条脚注,而右边的文档没有。其余的文本都是一样的,但在各页之间的分布有所不同(请看两个文档中第 4 节的开头)。
下面的截图中同样是这两个文档,是在不考虑文档结构的情况下进行对比:
可以看到,只存在一处真正的差异,然而错误差异却多达四处。错误差异会浪费我们的时间和精力,导致专注度和工作效率下降。 所以,我们要尽量减少错误差异。
总而言之,如果我们简单地从数字 PDF 文档中提取文本进行比较,有可能产生许多错误差异,因为没有而且不能考虑文档结构。这包括文本在页与页之间的衔接方式可能不同,可能被不属于正文的页眉和页脚打断等等。
只是简单地从 PDF 文档中提取文本的另一个问题是,PDF 文档的文本层并不一定准确或可用。
有真正有效的解决方案吗?
我们在上面讲到了通过 OCR 了解文档结构对于准确比较数字 PDF 文档的益处,以及 OCR 错误识别差异带来的挑战,然而要解决文本层质量的问题,最好还是使用 OCR……那么,有没有什么真正有效的解决方案可以解决所有这些难题呢?
当然有,那就是巧妙利用 OCR。尽可能多地从 PDF 文档中提取数字文本,最大程度减少字符识别的使用,同时使用足够的文档结构信息正确识别要比较的内容和确定比较的顺序。
下面是比较数字 PDF 文档的流程:
首先,对 PDF 文档进行光栅化和预识别。接下来,DA 系统和合成系统确定文档结构,识别段落、列表、插入内容、页眉和页脚、页码等元素。
然后,评估文本层质量。顺便说一句,这也是为什么要在准备阶段对 PDF 文档进行预识别。直接从 PDF 文档中提取文本的有效部分进行比较。识别无效部分。在两个文档中的段落、标题和插入内容正确对齐后,自动进行比较。即使没有做到像素对齐,或者在两个文档中发生了偏移,现在也可以正确地进行比较。
总结
以上就是处理 PDF 文档的三个用例,它们都利用了甚至依赖 OCR 技术。使用 OCR 技术还可以对 PDF 文档进行很多其他处理。除了纯粹的文档转换外,ABBYY FineReader PDF 15 约三分之一的功能都用到了 OCR 技术,软件中高质量的 OCR 对于处理 PDF 的重要性不容小觑。现在就来亲自尝试一下 FineReader PDF 15 的所有功能吧!
电子邮件订阅
您的订阅成功!
您已成功訂閱!
請檢查信箱並確認您的訂閱。若您在幾分鐘內都未看見電子郵件,請檢查垃圾郵件資料夾。