> ## 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.

# FRPage オブジェクトの FindPageSplitPosition メソッド

> ABBYY FineReader Engine API の FRPage オブジェクトの FindPageSplitPosition メソッド。画像をページに分割できる位置（たとえば書籍の見開き）を特定します。入力として TextOrientation を受け取ります。

このメソッドは、画像をページに分割する位置が存在する場合に、その位置を特定します。これは、書籍の見開きページを分割できるかどうかを検出するために使用されます。

画像を分割できる位置を特定するには:

1. [IFRPage::DetectOrientation](/ja/fine-reader/engine/api-reference/document-related-objects/frpage/detectorientation-method) メソッドを使用して、画像の向きを検出します。
2. 返された [TextOrientation](/ja/fine-reader/engine/api-reference/text-related-objects/textorientation) オブジェクトを FindPageSplitPosition メソッドに渡します。

分割位置は 2 本の線で定義され、その座標は startSplitPosition パラメーターと endSplitPosition パラメーターで返されます。画像をページに分割する際は、これら 2 本の線の間にある画像領域を削除する必要があります。この領域には通常、何らかのごみが含まれます。

<div id="syntax">
  ## 構文
</div>

<div id="c">
  ### C++
</div>

```cpp theme={null}
HRESULT FindPageSplitPosition(
  IObjectsExtractionParams* ExtractionParams,
  ITextOrientation*         TextOrientation,
  PageSplitDirectionEnum*   SplitDirection,
  int*                      StartSplitPosition,
  int*                      EndSplitPosition
);
```

### C\#

```csharp theme={null}
void FindPageSplitPosition(
  IObjectsExtractionParams    ExtractionParams,
  ITextOrientation            TextOrientation,
  out PageSplitDirectionEnum SplitDirection,
  out int                    StartSplitPosition,
  out int                    EndSplitPosition
);
```

<div id="visual-basic-net">
  ### Visual Basic .NET
</div>

```vb theme={null}
Sub FindPageSplitPosition( _
  ExtractionParams As IObjectsExtractionParams, _
  TextOrientation As TextOITextOrientationrientation, _
  ByRef SplitDirection As PageSplitDirectionEnum, _
  ByRef StartSplitPosition As Integer, _
  ByRef EndSplitPosition As Integer _
)
```

<div id="parameters">
  ## パラメーター
</div>

ExtractionParams

\[in] オブジェクト抽出のパラメーターを格納する [ObjectsExtractionParams](/ja/fine-reader/engine/api-reference/parameter-objects/preprocessing-analysis-recognition-and-synthesis-parameters/objectsextractionparams) オブジェクトです。このパラメーターには 0 を指定することもできます。この場合、オブジェクトは既定のパラメーターで抽出されます。または、[プロファイル](/ja/fine-reader/engine/guided-tour/advanced-techniques/working-with-profiles) がロードされている場合は、そのプロファイルで設定されたパラメーターが使用されます。

TextOrientation

\[in] 画像上のテキストの向きを指定する [TextOrientation](/ja/fine-reader/engine/api-reference/text-related-objects/textorientation) オブジェクトを参照します。このパラメーターが 0 の場合、ABBYY FineReader Engine は画像が通常の向きであると見なします。

SplitDirection

\[out] この変数は、可能な分割の型 (垂直分割、水平分割、または分割なし) を受け取ります。詳しくは、[PageSplitDirectionEnum](/ja/fine-reader/engine/api-reference/enumerations/pagesplitdirectionenum) の説明を参照してください。

StartSplitPosition

\[out] 分割位置を定義する 1 本目の線の座標です (分割が可能な場合) 。この値の意味は、splitDirection 変数の値によって異なります。垂直分割の可能性が検出された場合、この値には分割線の水平座標が格納されます。水平分割の可能性が検出された場合、この値には分割線の垂直座標が格納されます。座標は、画像の傾き補正された白黒ページを基準に指定されます。

EndSplitPosition

\[out] 分割位置を定義する 2 本目の線の座標です (分割が可能な場合) 。この値の意味は、splitDirection 変数の値によって異なります。垂直分割の可能性が検出された場合、この値には分割線の水平座標が格納されます。水平分割の可能性が検出された場合、この値には分割線の垂直座標が格納されます。座標は、画像の傾き補正された白黒ページを基準に指定されます。

<div id="return-values">
  ## 戻り値
</div>

このメソッド固有の戻り値はありません。戻り値は、[ABBYY FineReader Engine 関数の標準の戻り値](/ja/fine-reader/engine/api-reference/return-codes)です。

<div id="samples">
  ## サンプル
</div>

<Accordion title="C# コード">
  ```csharp theme={null}
  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;
  }
  ```
</Accordion>

<div id="see-also">
  ## 関連項目
</div>

[FRPage](/ja/fine-reader/engine/api-reference/document-related-objects/frpage)

[DetectOrientation](/ja/fine-reader/engine/api-reference/document-related-objects/frpage/detectorientation-method)

[PageSplitDirectionEnum](/ja/fine-reader/engine/api-reference/enumerations/pagesplitdirectionenum)

[プロファイルの操作](/ja/fine-reader/engine/guided-tour/advanced-techniques/working-with-profiles)
