ABBYY FineReader Engine 會將影像載入 FRDocument 物件中進行處理,而該物件代表正在處理的文件。
若要將影像載入文件,請執行下列其中一項操作:
所有這些方法都會接收 PrepareImageMode 物件作為參數,讓您可指定影像預處理的各種參數。呼叫 IEngine::CreatePrepareImageMode 方法建立此物件,視需要變更其屬性,然後將其傳遞給上述其中一個方法。
您也可以使用 FRDocument 物件的 AddImageDocument 方法,新增現有的 ImageDocument 物件 (例如從內部格式檔案載入的物件) 。
載入到文件中後,即可透過 IFRPage::ImageDocument 屬性存取各頁的影像。在 ABBYY FineReader Engine 中,每個已開啟的影像都以一個 ImageDocument 物件表示。ImageDocument 會以所謂的「內部格式」儲存影像,其中包含 4 個影像平面,並以 Image 物件表示:
- 黑白平面。這是來源影像的黑白副本。
- 灰階平面。這是來源影像的灰階副本。如果來源影像是黑白影像,則此平面與黑白平面相同。
- 彩色平面。這是來源影像的彩色副本。如果來源影像是黑白影像,則此平面與黑白平面相同;如果來源影像是灰階影像,則此平面與灰階平面相同。
- 預覽。這是用於在使用者介面中顯示預覽影像的小型彩色影像。預覽會在呼叫 GetPreviewImage 或 GetPreviewImageSpecificSize 方法時建立。對影像進行任何修改 (無論是自動還是手動) 都可能重設已建立的預覽,因此需要重新建立。
黑白、灰階和彩色影像的尺寸與解析度相同。預覽影像通常較小。
開啟影像時,影像可能會進行傾斜校正。若要對應原始影像上的座標與開啟後或進一步修改後的座標,請使用 CoordinatesConverter 物件。它會儲存取得當下的座標狀態。您可以使用這個物件,在影像處理的任意兩個階段之間轉換像素座標。例如:
- 在影像開啟後立即透過 IImageDocument::CoordinatesConverter 屬性取得此物件;在這個過程中,影像傾斜已校正完成。
- 在其他修改之後,從 ImageDocument 再取得此物件的另一個執行個體。
- 現在您可以透過套用 ConvertCoordinates 方法兩次,在初始完成傾斜校正的影像平面與修改後的影像平面之間轉換像素座標:
- 使用 CoordinatesConverter 的第一個執行個體,將座標從完成傾斜校正的影像平面轉換回原始影像。
- 使用 CoordinatesConverter 的第二個執行個體,將結果從原始影像平面轉換到修改後的影像平面。
同一個方法也可讓您在任一全尺寸影像平面與預覽影像平面之間雙向轉換像素座標。黑白、灰階和彩色影像平面上的像素座標相同。
對影像進行修改 (無論是自動還是手動) 都可能重設先前建立的預覽影像平面,屆時您將無法轉換與該預覽之間的座標。轉換座標之前,如果影像已修改,請再次呼叫 GetPreviewImage 方法。
自動預處理機制最適合用於將影像準備為 OCR 所需格式。程式會判定影像來源和文件類型,偵測方向、解析度或影像傾斜是否有誤,並將這些資料一併納入考量以改善影像。我們建議,只有在自動預處理後的結果仍無法令您滿意時,才進行額外的影像修改。
開啟影像時的修改由 PrepareImageMode 物件管理。
開啟後,可使用下列方式修改影像:
您可以使用 Image 物件的 WriteToFile 方法,將目前的影像平面以指定格式儲存為影像檔案。
ABBYY FineReader Engine 也提供將多個影像儲存到單一影像檔案中的功能。若要儲存多頁影像檔案,請使用 MultipageImageWriter 物件:
- 使用 Engine 物件的 CreateMultipageImageWriter 方法建立 MultipageImageWriter 物件。
- 使用 MultipageImageWriter 物件的 AddPage 方法,將影像新增至多頁影像檔案末尾。每個影像都會以單一頁面的形式新增。
- 在新建立的影像檔案可供使用之前,必須釋放對 MultipageImageWriter 物件的所有參考。
請注意,雖然 ImageDocument 物件提供一組儲存方法 (SaveTo、SaveToFile、SaveToMemory) ,但這些方法不能用於以外部格式儲存影像。這些方法會將 ImageDocument 物件的內容儲存為 ABBYY FineReader Engine 內部格式,因此無法在任何外部程式中檢視。
支援的影像格式