微调页面预处理、分析、识别和合成参数
ABBYY FineReader Engine 中的文档处理包括几个步骤:页面预处理、分析、识别、页面合成、文档合成和导出。本节将关注页面预处理、分析、识别和页面及文档合成参数。要了解导出参数详情,请参见 导出参数调整。
我们来详细探讨下处理阶段:
- 文档处理的第1阶段是页面预处理。在此阶段 FineReader Engine 会检测页面方向并在必要时予以纠正,反转黑色背景的图像,去除几何畸变。
- 下个阶段是 布局分析。分析期间 FineReader Engine 会查找文档页面上的某些区域。这些区域被称为“块”。每个块有自己的类型。
- 然后会按照块类型定义的方式识别块内的图像部分,即执行 识别。
- 之后会检测文本和背景颜色、超级链接和一些其它格式元素(这个进程被称为"页面合成")。
- 最后会重新创建字体样式和文档的逻辑结构: FineReader Engine 将检测识别文档中的标头,重新构建目录,检测图片和表格标题等等。这个阶段被称为"文档合成"。
处理前,您可以借助参数对象来设置页面预处理、分析、识别和合成参数。DocumentProcessingParams 对象提供对所有处理参数的访问。该对象含有一个子对象集,对不同处理阶段产生影响。
根据处理阶段的不同,可以将指向DocumentProcessingParams 对象的指针或其子对象指针可以作为输入参数传递至处理方法,从而影响处理结果。以下 FineReader Engine 对象可提供页面预处理、分析、识别和合成方法:FRDocument 和 FRPage。
也可以使用配置文件调整页面预处理、分析、识别和合成进程。请参见 配置文件的处理 了解详情。
页面预处理参数
若要设置每个页面的处理参数,您需要调整 DocumentProcessingParams 对象的 PageProcessingParams 子对象的属性。PageProcessingParams 对象是设置页面处理参数的对象组的父对象:
- PagePreprocessingParams 包含用于页面预处理的参数,有一个子对象:
- OrientationDetectionParams 可影响页面方向检测。
- ColorObjectsProhibitingParams 可影响在处理前筛选出彩色对象。
- PageAnalysisParams 可影响页面布局分析,有两个子对象:
- TableAnalysisParams 可影响表格块分析进程。
- BarcodeParams 包含一个针对条形码提取的属性集。
- ObjectsExtractionParams 包含的参数可用于在识别前检测页面上的其它对象(例如:垃圾、纹理、低质量的小文本区域)。
- RecognizerParams 包含通用页面识别参数。
- SynthesisParamsForPage 用于设置页面合成参数,有一个子对象:
- FontFormattingDetectionParams 包含一个字体格式检测属性集。
PageProcessingParams 对象及其子对象包含一个 Boolean 属性集,可让您开启或关闭任何处理阶段。例如,您可以将 PageProcessingParams 对象的 PerformPreprocessing 属性设为 TRUE(将它的其它 Boolean 属性设为 FALSE),将 PageProcessingParams 的 CorrectOrientation 属性设为 TRUE(而所有其他 Boolean 属性为 FALSE)。在此情况下,将只执行方向检测。
文档处理参数
若要设置文档处理参数,您应该设置页面处理参数(请见上文)和文档合成参数,它们可通过 SynthesisParamsForDocument 对象进行设置。文档合成期间会检测字体样式和格式化。处理文档字体和样式的 FineReader Engine 对象只有在文档合成后才有意义。
在以下情况下您可以省略文档合成阶段:
- 如果要将已识别文本导出为 TXT 格式。导出到该模式时不使用合成信息。
- 如果要将文档导出为 PDF ImageOnly 格式。在此模式中不使用已识别文本和布局信息。
在所有其它情况下,必须执行文档合成。省略文档合成将导致导出过程中出现错误。
注: 名称中出现单词"Process"的方法(例如 IFRDocument::Process)包括文档合成阶段。FRPage 对象的处理方法不包括该阶段,所以在使用它们后和导出前,您必须显式调用一些执行文档合成的方法。
可以加快文档合成阶段,减少内存使用。如果在页面合成期间将 SynthesisParamsForPage 对象的 DetectFontFormattingAtPageLevel 属性设为 TRUE,则可以在文档合成期间关闭字体参数和文档结构检测(SynthesisParamsForDocument 对象的 DetectFontFormatting 和 DetectDocumentStructure)。但文档质量会降低。
每次文档的文本或布局被更改(例如块被删除或添加,或者文本被编辑)时,我们建议您重新调用文档合成方法。注意 FRDocument 的 SynthesizePages 方法允许您指定已更改文档的页面集合,因此只会重新计算必要的数据。
调整文档处理
使用上述参数对象的详细过程如下所示:
- 借助 Engine 对象的 CreateDocumentProcessingParams 方法创建一个 DocumentProcessingParams 对象。
- 设置 PageProcessingParams 子对象的必要属性。您不需要设置所有子对象的所有属性,因为创建时它们已初始化为了合理的默认值。您只需要调整默认值中个别需要调整的属性即可。
设置布局分析函数要使用的参数时,不要忘记设置影响识别的 PageProcessingParams 的子对象属性的正确值。之所以建议如此操作,是因为所有这些参数都会复制到布局分析期间创建的块中,然后用于识别,另外,图像某些部分的分析可能会涉及识别。
- 必要的话,设置 SynthesisParamsForDocument 子对象的必需属性。您不需要设置所有对象和子对象的全部属性,因为创建时它们已初始化为了合理的默认值。您只需要调整默认值中个别需要调整的属性即可。请确认DocumentProcessingParams 对象的 PerformSynthesis 属性的值为 true。
- 您可以将 DocumentProcessingParams 对象或其子对象集传递到任意一个 FRDocument, FRPage 和 Engine对象的处理方法。
我们建议使用 FRDocument 对象的处理方法来识别文档。该方法可提供一整套处理方法。最方便的方法为 Process 方法,仅使用一个方法就可以进行预处理、分析、识别和合成的。该方法也可以最高效地使用多处理器和多核系统的同时处理功能。不过,您也可以使用相应方法执行连续预处理、分析、识别和合成。
用于设置处理参数的示例代码:
C# 代码
以下代码示例中具有类似的过程:CustomLanguage,VisualComponents;和演示工具:Camera OCR, Image Preprocessing, MultiProcessingRecognition, PDFExportProfiles。
也请参阅
17.09.2024 15:14:41