跳轉到主要內容ABBYY FineReader Engine 處理的文字是純文字,也就是說,其中不包含文字框、表格等元素。所有字元皆為 Unicode。純文字可包含下列特殊字元:
- 0x2028 — 換行符號
- 0x2029 — 段落分隔符號
- 0xFFFC — 物件取代字元 (表示文字中內嵌的圖片)
- 0x0009 — 定位符
- 0x005E — 抑揚符號 (^);ABBYY FineReader Engine 會將其用作無法辨識字元的替代符號
- 0x00AC — 軟連字號
文字的屬性和格式可透過對應的物件和屬性取得。您可以透過文件的頁面版面 (IFRPage::Layout 屬性) 存取已辨識文字。
只有文字、表格和條碼區塊在辨識後包含文字,其他區塊則不含文字。Text 物件可用來存取文字區塊和表格區塊中已辨識的文字,而 BarcodeText 物件則可用來存取條碼區塊中的文字。
若要存取區塊中已辨識的文字,請執行下列操作:
使用 ITextBlock::Text 屬性。
使用 IBarcodeBlock::BarcodeText 或 IBarcodeBlock::Text 屬性取得條碼文字。前者會傳回 BarcodeText 物件,也就是由已辨識條碼的字元 (BarcodeSymbol 物件) 組成的集合。後者則會將條碼文字作為單一 string 傳回。
Text 物件包含一個段落集合。此集合是 Paragraphs 物件,可透過 Text 物件的 Paragraphs 屬性存取。Paragraphs 物件是由 Paragraph 物件組成的集合。已辨識文字可透過 IParagraph::Text 屬性存取。此屬性中的文字為 Unicode string。
此外,還有一個 ParagraphParams 物件,其中包含整個段落特有的屬性,例如對齊方式與縮排資訊。此物件可透過 IParagraph::ExtendedParams 屬性存取。
IParagraph::Lines 屬性可讓您存取段落行集合,該集合由 ParagraphLines 物件表示,而後者又是由 ParagraphLine 物件組成的集合。後者提供單一段落行幾何位置的相關資訊,因此表示文字如何分成各行。
IParagraph::Words 屬性可讓您存取段落中單字的集合,該集合由 Words 物件表示,而此物件是由 Word 物件組成的集合。Word 物件可讓您存取段落中的單一單字。
文字中的每個字元都有自己的參數。這些參數可透過 CharParams 物件存取。CharParams 物件具有大量字元屬性,例如幾何參數、字型和語言。CharParams 物件也會在 SelectedCharacterRecognitionVariant 屬性中包含該字元本身。另請參閱下方的 純文字,瞭解取得文件中所有字元資訊的建議方式。
字元在文字中的位置,是由其所在段落的索引以及它在該段落中的索引來定義。文字中還有一種所謂的「特殊位置」:段落索引等於段落總數,而字元索引為 0。這是文字末尾的插入點。Text 物件的某些方法會對這個特殊位置執行操作,例如在其中插入另一段文字片段或圖片。
CharParams 物件的 SelectedCharacterRecognitionVariant 屬性可讓您存取單一字元專屬的一組擴充屬性,這些屬性由 CharacterRecognitionVariant 物件表示。這些屬性會在辨識期間設定,並提供該字元特有的一些內部辨識資訊。特別是,此物件可提供更精確的字元辨識可信度資訊、該字元採用襯線字型的機率等。
您可以嘗試變更 Text 物件的屬性,但如果文字要匯出為外部格式,則必須格外小心。ABBYY FineReader Engine 的匯出方法是假設辨識出的文字是辨識作業的結果,而且使用者只修正了辨識錯誤,沒有做其他變更。Text 群組中的物件具有許多彼此相依的屬性,而變更其中一項屬性時,往往也需要一併變更其他屬性。因此,變更已辨識文字的屬性,有時可能會導致無法預期的匯出結果。
您也可以透過特殊的「純文字」格式,存取文件或頁面的完整已辨識文字;此格式由 PlainText 物件表示。它僅提供已辨識文字字元、其辨識信賴度,以及相對於來源影像的位置等資訊。不過,如果您需要存取大型文件中所有字元的這些屬性,這種格式會很實用。在 Windows 版 FRE 中:請使用其 GetCharacterData 方法,您即可一次取得所有字元的資料,並在應用程式端逐一處理。逐一走訪所有文字區塊會耗費明顯更多時間,尤其是在您的應用程式透過 DCOM 運作時。
使用 Layout 與區塊
使用語言
運用投票演算法