使用情境
- 轉換頁數很多的多頁文件。這通常表示要處理書籍、長篇報告等。在這種情況下,您可以先並行識別文件各頁,再於主程序中執行合成,之後再次並行匯出。使用 Engine 集區時,您也可以同時處理多個多頁文件,但記憶體耗用可能非常龐大,甚至導致「記憶體不足」錯誤。
- 轉換大量單頁文件。這種情況常見於處理發票、合約、信件等。對這類情況而言,並行處理最簡單,因為單頁文件彼此之間沒有相依性,也不會一次占用大量記憶體。
- 處理大量影像,並從中搜尋所需資訊,或以其他方式使用識別結果。您可能不需要將其中大多數轉換為可編輯格式,因此合成與匯出的速度不是問題。會在多個程序中執行的操作,是逐一走訪版面配置區塊並存取文字區塊的識別結果。
如果您想在匯出時使用並行處理,請注意,此功能僅支援匯出為 PDF (TextOnly 模式除外) 和 PPTX 格式。
建議和限制
-
對於多頁文件的並行處理,我們建議使用 FRDocument。這是最易於以程式碼實作的多處理方式,因為您無需實作任何額外的介面。
開啟、預處理、分析和識別會並行執行;文件合成會在主程序中依序執行,然後匯出至 PDF (TextOnly 模式除外) 和 PPTX 格式會並行執行。 -
要處理從某個來源 (例如掃描器) 接收的許多單頁文件,我們建議使用 BatchProcessor。
此方法的優點是,即使事先不知道文件數量,也可以使用;這些文件可能為不同類型,且必須在它們到達時立即處理。缺點是它需要更多的實作工作:您必須實作檔案配接器和自訂影像來源的介面。
所有處理階段都會並行執行,因為在單頁文件的情況下,頁面和文件合成會針對每個頁面單獨執行。
並行匯出在與 Batch Processor 相關的情境中不支援。
頁面並行處理期間發生的イベント會轉換為整個文件的イベント。
使用 FRDocument 物件進行處理
- 設定 Engine 物件的 MultiProcessingParams 子物件的 MultiProcessingMode 屬性值。若此屬性設定為 MPM_Parallel 或 MPM_Auto,且文件頁面數量與可用 CPU 核心數量均大於一,則會啟用平行處理。
- 使用 RecognitionProcessesCount 屬性調整要執行的處理程序數量,並視需要指定其他屬性的值。
- AddImageFile、AddImageFileFromMemory、AddImageFileFromStream、AddImageFileWithPassword、AddImageFileWithPasswordCallback
- Preprocess、PreprocessPages
- Analyze、AnalyzePages
- Recognize、RecognizePages
- Process、ProcessPages
- Export、ExportPages、ExportToMemory — 僅適用於匯出至 PDF (TextOnly 模式除外) 及 PPTX 格式
使用 Batch Processor 進行處理
- 實作 IImageSource 與 IFileAdapter 介面,以提供對影像來源及其中檔案的存取。
- [選用] 實作 IAsyncProcessingCallback 介面,以管理處理流程。此介面的方法可讓您處理錯誤和/或取消處理。
- [選用] 使用 Engine 物件的 MultiProcessingParams 子物件來設定多程序處理。請注意,無需設定 MultiProcessingMode 屬性,因為使用 Batch Processor 時,預設會採用平行處理。請使用 RecognitionProcessesCount 屬性調整要執行的程序數量,並在需要時指定其他屬性的值。
- 呼叫 Engine 物件的 CreateBatchProcessor 方法,以取得 BatchProcessor 物件。
- 呼叫此物件的 Start 方法,以初始化處理器並啟動非同步識別程序。您可以在呼叫此方法時指定影像來源、傳入 IAsyncProcessingCallback 介面的參考,以及參數物件。
- 在迴圈中呼叫 GetNextProcessedPage 方法,直到該方法回傳 0,這表示來源中已無更多影像,且所有已處理的影像都已回傳給使用者。
