Chinese Simplified (简体中文)

处理布局和块

当处理文档时,ABBYY FineReader Engine 首先分析其布局,并检测文档页面上的某些区域。这些区域被称为“块”。块决定了图像区域的识别方式和顺序。

在 ABBYY FineReader Engine 中,Layout 对象为块和已识别文本的存储区。文档处理的基本场景会借助 FRDocument 对象内的布局进行处理,该对象表示正在处理中的文档。可通过 IFRPage::Layout 属性访问文档页面的布局。

如果使用作为进程外服务器加载的 Engine 对象,您可以通过以下方案加速 Layout 对象的循环访问:

  1. 使用加载为进程外服务器的 Engine 对象 来处理文档并获取每个页面的布局。通过 SaveToArray 方法,将获取的布局写为字节数组。
  2. 使用本机加载(即在当前进程中从 libFREngine.so 库加载)的 Engine 对象通过实现 IReadStream 接口来读取获取的字节数组。
  3. 使用本机加载的 Engine 对象用 CreateLayoutFromStream 方法恢复原始布局的副本。将该副本用于后续的布局内容循环访问。

布局块

Layout 对象可通过 BlocksBlackSeparators 属性提供对布局结构的访问。这些属性都可提供对 LayoutBlocks 子对象的访问,子对象代表块集合。第一个指主要布局块集,其包含文本、表格、图片、条形码和复选标记。第二个指用于分隔符的块集合。分隔符指页面布局分析期间检测到的黑线。它们用于在合成和导出期间进行更精确的页面布局重建。

您也可以用 Layout 对象的 SortedBlocks 属性按逻辑排序获取块。

每个块有自己的区域,由多个矩形组成。每个区域由 Region 对象表示。

根据块中包含的数据类型,块也会有不同的类型,每个块都有自己的特定属性。可以通过对应块类型对象访问这些属性,对应快类型可通过 Block 对象方法进行接受。对应块类型接口源自 IBlock 接口,并继承了它的所有属性。可用块类型如下:

文本块

 

表格块

光栅图片块

矢量图片块

条形码块

复选标记块

复选标记组块

分隔符块

分隔符组块

手动添加块

版面分析期间,页面上会自动找到块。但或许您想手动绘制块。在此情况下:

  1. 打开 FRPage 对象,通过 Layout 属性获取页面布局。
  2. 借助 IEngine::CreateRegion 方法为块创建 Region 对象,然后使用 IRegion::AddRect 方法向其添加矩形。
  3. 创建一个所需类型的块,然后通过 LayoutBlocks 对象的 AddNew 方法将其添加到布局块集合中。
  4. 设置块的所需参数(使用对应块类型的块属性对象)。

更改块类型

块类型是在创建过程中定义的,不能更改。如需更改块类型,必须删除此块,并在同一地方再创建一个所需类型的块:

  1. 创建一个 Region 对象(使用 IEngine::CreateRegion 方法),借助 IRegion::CopyFrom 方法,复制需要替换的块区域。
  2. 通过调用 ILayoutBlocks::DeleteAt 方法,从布局中删除旧块。
  3. 新创建所需类型的块,然后使用 LayoutBlocks 对象的 AddNew 方法,将其添加入布局块集合中。把从旧块中复制的 Region 传递为所需参数之一进行传递。

另请参阅

识别复选标记

处理文本

03.07.2024 8:50:25

Usage of Cookies. In order to optimize the website functionality and improve your online experience ABBYY uses cookies. You agree to the usage of cookies when you continue using this site. Further details can be found in our Privacy Notice.