跳轉到主要內容
ABBYY FineReader Engine 中的文件處理流程包含多個步驟:頁面預處理、分析、辨識、頁面合成、文件合成,以及匯出。本節將介紹頁面預處理、分析、辨識,以及頁面/文件合成。匯出參數的詳細資訊,請參閱調整匯出參數 以下依序說明各處理階段:
  1. 頁面預處理
    在此階段,FineReader Engine 會自動改善影像品質,並修正可能干擾 OCR 的缺陷,例如頁面方向、影像反相和幾何失真。
  2. 版面分析
    在分析階段,FineReader Engine 會找出包含不同類型資料的區域。這些區域稱為「區塊」。
  3. 辨識
    位於區塊內的影像部分會根據區塊類型,以不同方式進行辨識。
  4. 頁面合成
    系統會偵測文字與背景色彩、超連結及其他格式設定。
  5. 文件合成
    最後會重建字型樣式和文件的邏輯結構:FineReader Engine 會在已辨識的文件中偵測標題、重建目錄、偵測圖片與表格的說明文字,以及其他文件結構元素。
在處理之前,您可以藉由參數物件設定頁面預處理、分析、辨識與合成的參數。用來存取所有處理參數的主要物件是 DocumentProcessingParams 物件。它包含一組會影響不同處理階段的子物件。 視處理階段而定,可將指向 DocumentProcessingParams 物件的指標,或其子物件的指標,作為輸入參數傳遞給處理方法,從而影響處理結果。FRDocumentFRPage 物件提供頁面預處理、分析、辨識與合成的方法。 頁面預處理、分析、辨識與合成流程也可使用設定檔進行調整,而大多數常見的情境都已由經過充分測試的預定義設定檔涵蓋。詳情請參閱使用設定檔

頁面處理

若要設定各頁面的處理參數,請使用 DocumentProcessingParams 物件中 PageProcessingParams 子物件的屬性。PageProcessingParams 物件是一組用於設定頁面處理參數之物件的父物件: PageProcessingParams 物件也可讓您啟用或停用任何處理階段。例如,如果您打算手動指定區塊且不需要版面分析,則可將 PageProcessingParams 物件的 PerformAnalysis 屬性設為 FALSE。

文件處理

若要設定文件處理參數,除了頁面處理參數之外,還需要透過 SynthesisParamsForDocument 物件設定文件合成參數。在文件合成期間,系統會偵測字型樣式與格式設定。FineReader Engine 中用於處理文件字型與樣式的物件,只有在文件合成完成後才有意義。 在下列情況中,您可以省略文件合成階段:
  • 如果您要將辨識出的文字匯出為 TXT 格式。匯出為此格式時,不會使用合成資訊。
  • 如果您要將文件匯出為 PDF ImageOnly 格式。在此模式下,不會使用辨識文字與版面配置資訊。
在所有其他情況下,都必須執行文件合成。省略文件合成會在匯出時導致錯誤。
名稱中含有 “Process” 一詞的方法 (例如 IFRDocument::Process) 都包含文件合成階段。FRPage 物件的處理方法則不包含此階段,因此在使用這些方法後、匯出之前,您必須明確呼叫某個執行文件合成的方法。
您可以加快文件合成階段,並減少記憶體使用量。如果您在頁面合成期間將 SynthesisParamsForPage 物件的 DetectFontFormattingAtPageLevel 屬性設為 TRUE,之後即可在文件合成期間關閉字型參數與文件結構的偵測 (即 SynthesisParamsForDocument 物件的 DetectFontFormatting 和 DetectDocumentStructure) 。不過,品質可能會下降。 每當文件的文字或版面配置有所變更時 (例如移除或新增區塊,或編輯文字) ,我們建議您重新呼叫文件合成方法。請注意,FRDocument 的 SynthesizePages method 可讓您指定文件中已變更的頁面集合,因此只會重新計算必要的資料。

微調文件處理

使用上述參數物件的逐步程序如下:
  1. 使用 Engine 物件的 CreateDocumentProcessingParams 方法,建立 DocumentProcessingParams 物件。
  2. 設定 PageProcessingParams 子物件所需的屬性。您不必設定所有子物件的全部屬性,因為建立時這些屬性都會以合理的預設值初始化。您只需微調那些想要設為非預設值的屬性即可。
設定要供版面分析函式使用的參數時,請勿忘記為 PageProcessingParams 中會影響辨識的子物件屬性設定正確的值。建議這麼做,因為這些參數都會複製到版面分析期間建立的區塊中,之後用於辨識;此外,影像某些部分的分析也可能涉及辨識。
  1. 如有需要,請設定 SynthesisParamsForDocument 子物件所需的屬性。您不必設定所有物件和子物件的全部屬性,因為建立時這些屬性都會以合理的預設值初始化。您只需微調那些想要設為非預設值的屬性即可。請確認 DocumentProcessingParams 物件的 PerformSynthesis 屬性值為 true。
  2. 您可以將 DocumentProcessingParams 物件或其一組子物件,傳遞給 FRDocumentFRPageEngine 物件的其中一個處理方法。
若要辨識文件,我們建議使用 FRDocument 物件的處理方法。此物件提供完整的一組處理方法。若要只用一個方法完成預處理、分析、辨識和合成,最方便的方法是 Process 方法。它也能最有效率地運用多處理器與多核心系統的平行處理功能。不過,您也可以使用對應的方法依序執行預處理、分析、辨識和合成。
FREngine.IEngine engine;
FREngine.IFRDocument frdoc;
// 我們假設文件已建立,且影像已新增至文件中
// 建立 DocumentProcessingParams 並設定參數
FREngine.IDocumentProcessingParams dpp = engine.CreateDocumentProcessingParams();
FREngine.IPageProcessingParams ppp = dpp.PageProcessingParams;
ppp.PagePreprocessingParams.CorrectOrientationMode = COM_Auto;
// 使用參數進行處理
frDoc.Process( dpp );
下列程式碼範例也使用了類似的程序:

另請參閱

使用設定檔 條碼辨識 調整匯出參數