此物件已在適用於 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 方法的輸出參數。
// 建立 Batch Processor
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