此对象在 Linux 和 Windows 版 FRE 中实现。
这是一个处理器对象,用于将输入图像转换为已识别的页面 (FRPage 对象) 。
处理器初始化时,会启动并配置异步识别进程。随后,处理器从自定义图像源获取图像文件。对于图像文件中的每一页,都会创建一个新的处理任务,并将该任务分配给某个识别进程。如果某个文件的所有任务都已提交处理,但并非所有识别进程都处于忙碌状态,则会从源的图像队列中取出下一个图像文件并提交处理。该过程会持续进行,直到第一个图像页面被转换并返回给用户。页面会按照从图像源中提取的顺序返回给用户。
要使用 Batch Processor 组织处理,请执行以下操作:
- 实现 IImageSource 和 IFileAdapter 接口,以提供对图像源及其中图像文件的访问。
- [可选] 实现 IAsyncProcessingCallback 接口来管理处理过程。此接口的方法可用于处理错误和/或取消处理。
- 调用 Engine 对象的 CreateBatchProcessor 方法,以获取 BatchProcessor 对象。
- 使用 PageFlushingPolicy 属性设置文档页面在内存中的处理方式。
- 调用 Start 方法以初始化处理器并启动异步识别进程。你可以在此方法中指定图像源和处理设置。
- BatchProcessor 对象不能重复使用。重复调用 Start 方法会导致错误。
- 不要同时创建和使用多个 Batch Processor,否则可能会造成页面处理混乱。
- 循环调用 GetNextProcessedPage 方法,直到该方法返回 0,这表示源中已没有更多图像,并且所有处理后的图像都已返回给用户。
由 GetNextProcessedPage 方法返回的页面仅在下一次调用该方法之前有效。因此,如果你想保存此页面,你必须在下一次调用 GetNextProcessedPage 方法之前,使用 FRPage 对象的方法保存该页面,或者使用 IFRDocument::AddPage 方法将其添加到现有文档中。
| 名称 | 类型 | 描述 |
|---|
| Application | Engine, 只读 | 返回 Engine 对象。 |
| PageFlushingPolicy | PageFlushingPolicyEnum | 指定当没有对这些对象的引用时,是否应卸载相应页面的 ImageDocument 和 Layout 对象,并将其保存到磁盘。 <Note> 在 Linux 中,当此属性值设为 PFP_KeepInMemory 时,未使用页面的图像文档和布局不会保存到磁盘。 </Note> <Note> 在 Windows 中,若要卸载文档中各个页面的 ImageDocument 和 Layout 对象并将其保存到磁盘,请对相应页面使用 IFRPage::Flush 方法。 </Note> 此属性的默认值为 PFP_Auto。 |
| 名称 | 说明 |
|---|
| GetNextProcessedPage | 持续执行后台处理,直到下一个已识别的图像可用。 |
| ProcessPageAsync | 允许您使用另一组参数重新处理某个页面。该页面可以被放到处理队列的开头或末尾。 |
| Start | 使 Batch Processor 进入工作准备状态。该方法会启动异步识别过程,并指定图像源和处理设置。 |
此对象是 Engine 对象的 CreateBatchProcessor 方法的输出参数。
// 创建批处理器
FREngine.IBatchProcessor batchProcessor = engine.CreateBatchProcessor();
FREngine.IFRDocument document = engine.CreateFRDocument();
// 初始化处理器
FREngine.IImageSource imageSource = new CImageSource; // 该类由用户实现
batchProcessor.PageFlushingPolicy = FREngine.PageFlushingPolicyEnum.PFP_KeepInMemory;
batchProcessor.Start( imageSource, null, null, null );
// 开始处理
while( true ) {
FREngine.IFRPage page = batchProcessor.GetNextProcessedPage();
if( page == null ) {
break; // 没有更多页面,处理结束
}
// 对页面执行某些操作
...
document.AddPage( page );
}
此对象在以下代码示例和演示工具中使用:BatchProcessing 和 BatchProcessingRecognition。
ABBYY FineReader Engine 并行处理
IImageSource