Documentation Index Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
Use this file to discover all available pages before exploring further.
このメソッドは、画像をページに分割する位置が存在する場合に、その位置を特定します。これは、書籍の見開きページを分割できるかどうかを検出するために使用されます。
画像を分割できる位置を特定するには:
IFRPage::DetectOrientation メソッドを使用して、画像の向きを検出します。
返された TextOrientation オブジェクトを FindPageSplitPosition メソッドに渡します。
分割位置は 2 本の線で定義され、その座標は startSplitPosition パラメーターと endSplitPosition パラメーターで返されます。画像をページに分割する際は、これら 2 本の線の間にある画像領域を削除する必要があります。この領域には通常、何らかのごみが含まれます。
HRESULT FindPageSplitPosition (
IObjectsExtractionParams * ExtractionParams ,
ITextOrientation * TextOrientation ,
PageSplitDirectionEnum * SplitDirection ,
int* StartSplitPosition ,
int* EndSplitPosition
);
void FindPageSplitPosition (
IObjectsExtractionParams ExtractionParams ,
ITextOrientation TextOrientation ,
out PageSplitDirectionEnum SplitDirection ,
out int StartSplitPosition ,
out int EndSplitPosition
);
Sub FindPageSplitPosition ( _
ExtractionParams As IObjectsExtractionParams , _
TextOrientation As TextOITextOrientationrientation , _
ByRef SplitDirection As PageSplitDirectionEnum , _
ByRef StartSplitPosition As Integer , _
ByRef EndSplitPosition As Integer _
)
ExtractionParams
[in] オブジェクト抽出のパラメーターを格納する ObjectsExtractionParams オブジェクトです。このパラメーターには 0 を指定することもできます。この場合、オブジェクトは既定のパラメーターで抽出されます。または、プロファイル がロードされている場合は、そのプロファイルで設定されたパラメーターが使用されます。
TextOrientation
[in] 画像上のテキストの向きを指定する TextOrientation オブジェクトを参照します。このパラメーターが 0 の場合、ABBYY FineReader Engine は画像が通常の向きであると見なします。
SplitDirection
[out] この変数は、可能な分割の型 (垂直分割、水平分割、または分割なし) を受け取ります。詳しくは、PageSplitDirectionEnum の説明を参照してください。
StartSplitPosition
[out] 分割位置を定義する 1 本目の線の座標です (分割が可能な場合) 。この値の意味は、splitDirection 変数の値によって異なります。垂直分割の可能性が検出された場合、この値には分割線の水平座標が格納されます。水平分割の可能性が検出された場合、この値には分割線の垂直座標が格納されます。座標は、画像の傾き補正された白黒ページを基準に指定されます。
EndSplitPosition
[out] 分割位置を定義する 2 本目の線の座標です (分割が可能な場合) 。この値の意味は、splitDirection 変数の値によって異なります。垂直分割の可能性が検出された場合、この値には分割線の水平座標が格納されます。水平分割の可能性が検出された場合、この値には分割線の垂直座標が格納されます。座標は、画像の傾き補正された白黒ページを基準に指定されます。
このメソッド固有の戻り値はありません。戻り値は、ABBYY FineReader Engine 関数の標準の戻り値 です。
private bool splitImage ( FREngine . IFRPage page , FREngine . IFRDocument frDoc , FREngine . IPageProcessingParams ppp )
{
int splitStartPosition = 0 ;
int splitEndPosition = 0 ;
bool isVerticalSplit = true ;
// テキストの向きを検出
FREngine . ITextOrientation ori = page . DetectOrientation ( null , ppp . ObjectsExtractionParams , ppp . RecognizerParams );
// 分割位置を特定
FREngine . PageSplitDirectionEnum pageSplitDirection ;
page . FindPageSplitPosition ( ppp . ObjectsExtractionParams , ori , out pageSplitDirection , out splitStartPosition , out splitEndPosition );
if ( pageSplitDirection == FREngine . PageSplitDirectionEnum . PSD_NoSplit )
{
return false ;
}
else if ( pageSplitDirection == FREngine . PageSplitDirectionEnum . PSD_HorizontalSplit )
{
isVerticalSplit = false ;
}
// 画像を2つのページに分割
// 画像サイズ
int width = page . ImageDocument . ColorImage . Width ;
int height = page . ImageDocument . ColorImage . Height ;
// ページを複製
frDoc . AddPage ( page );
FREngine . IFRPage secondPage = frDoc . Pages [ frDoc . Pages . Count - 1 ];
// 1つ目と2つ目のページを切り抜く
FREngine . IImageModification firstModification = engine . CreateImageModification ();
FREngine . IRegion firstClipRegion = engine . CreateRegion ();
FREngine . IImageModification secondModification = engine . CreateImageModification ();
FREngine . IRegion secondClipRegion = engine . CreateRegion ();
if ( isVerticalSplit )
{
firstClipRegion . AddRect ( 0 , 0 , splitStartPosition , height - 1 );
secondClipRegion . AddRect ( splitEndPosition , 0 , width - 1 , height - 1 );
}
else
{
firstClipRegion . AddRect ( 0 , 0 , width - 1 , splitStartPosition );
secondClipRegion . AddRect ( 0 , splitEndPosition , width - 1 , height - 1 );
}
firstModification . AddClipRegion ( firstClipRegion );
page . ImageDocument . Modify ( firstModification );
secondModification . AddClipRegion ( secondClipRegion );
secondPage . ImageDocument . Modify ( secondModification );
return true ;
}
FRPage
DetectOrientation
PageSplitDirectionEnum
プロファイルの操作