自動偵測會判定已辨識文字片段的類型。如果 RecognizerParams 物件的 TextTypes 屬性設為多個常數,就會啟用自動偵測。此模式主要是為表單辨識而設計。對於一般 OCR,我們建議只有在絕對必要時才使用。
啟用自動偵測時,ABBYY FineReader Engine 會先嘗試偵測指定區塊或區塊群組中的文字類型 (對這些區塊而言,RecognizerParams 物件的 TextTypes 屬性會設為多個常數) 。ABBYY FineReader Engine 會從 TextTypes 屬性中指定的常數裡進行選擇。此屬性包含 TextTypeEnum 列舉常數的 OR 組合,這些常數表示可用於辨識的可能文字類型。例如,若其設為 TT\_Normal | TT\_Index,ABBYY FineReader Engine 會假定文字僅包含一般印刷文字,以及以郵遞區號格式書寫的數字,並忽略所有其他類型。在自動偵測期間,ABBYY FineReader Engine 會針對 TextTypes 屬性中指定的所有文字類型執行辨識。接著系統會比較 OCR 結果,並由 ABBYY FineReader Engine 選出最佳結果作為最終結果。
自動偵測應用於一組區塊,且這些區塊都包含相同類型的文字。如果必須為每個區塊個別選取文字類型,則您必須針對每個區塊呼叫 RecognizeBlocks 方法,而且 RecognizerParams 物件必須列出可能的文字類型。
如果單一區塊包含不同類型的文字,系統會針對所有文字類型執行辨識,但只會選取一個結果。因此,區塊中的所有文字都會被視為相同類型進行辨識。這就是為什麼,包含多種類型文字的區塊,其辨識結果可能會與只包含單一類型文字的區塊不同。為了獲得更好的 OCR 結果,請為每種文字類型分別繪製獨立的區塊。
自動偵測的速度和準確性取決於 TextTypes 屬性中指定的文字類型集合。對於 TT_Normal、TT_Matrix、TT_Typewriter、TT_OCR_A 和 TT_OCR_B 類型的組合 (可稱為「快速自動偵測集合」) ,自動偵測速度最快。在這種情況下,辨識器只會啟動一次,自動偵測會在 OCR 過程中執行,並以單字而非區塊來偵測文字類型。如果只指定一種文字類型,則不會啟動自動偵測,而是由 Engine 啟動與指定文字類型對應的辨識器。
對於不在「快速自動偵測集合」涵蓋範圍內的文字,文字類型是依區塊而不是依單字來偵測。這表示如果可能的文字類型集合包含 TT_Normal、TT_Matrix、TT_Typewriter、TT_OCR_A 和 TT_OCR_B 以外的文字類型,自動偵測的速度就會較慢。在這種情況下,Engine 需要先執行多次初步 OCR:對「快速自動偵測集合」中的類型執行一次,並對每個額外的文字類型各執行一次初步辨識。接著,系統會比較結果,並選出最佳的文字類型。
- 請務必將 TextTypes 屬性中的文字類型數量降到最低。
- 如果 TextTypes 屬性等於 TT_Handwritten 和 TT_Index 的任意組合,則物件 的 TrainUserPatterns 屬性不能設為 TRUE。
RecognizerParams
TextTypeEnum