Zum Hauptinhalt springen
Diese Methode ermittelt die Trennposition, an der das Bild in Seiten aufgeteilt werden kann, falls eine solche existiert. Sie dient der Erkennung, ob Doppelseiten in einem Buch aufgeteilt werden können. Um die Trennposition zu ermitteln, an der das Bild aufgeteilt werden kann:
  1. Ermitteln Sie die Orientierung des Bildes mithilfe der IFRPage::DetectOrientation-Methode.
  2. Übergeben Sie das zurückgegebene TextOrientation-Objekt an die FindPageSplitPosition-Methode.
Die Trennposition wird durch zwei Linien definiert, deren Koordinaten in den Parametern startSplitPosition und endSplitPosition zurückgegeben werden. Der Bildbereich zwischen diesen beiden Linien sollte beim Aufteilen des Bildes in Seiten entfernt werden. Dieser Bereich enthält in der Regel einige Bildstörungen.

Syntax

C++

HRESULT FindPageSplitPosition(
  IObjectsExtractionParams* ExtractionParams,
  ITextOrientation*         TextOrientation,
  PageSplitDirectionEnum*   SplitDirection,
  int*                      StartSplitPosition,
  int*                      EndSplitPosition
);

C#

void FindPageSplitPosition(
  IObjectsExtractionParams    ExtractionParams,
  ITextOrientation            TextOrientation,
  out PageSplitDirectionEnum SplitDirection,
  out int                    StartSplitPosition,
  out int                    EndSplitPosition
);

Visual Basic .NET

Sub FindPageSplitPosition( _
  ExtractionParams As IObjectsExtractionParams, _
  TextOrientation As TextOITextOrientationrientation, _
  ByRef SplitDirection As PageSplitDirectionEnum, _
  ByRef StartSplitPosition As Integer, _
  ByRef EndSplitPosition As Integer _
)

Parameter

ExtractionParams [in] Das ObjectsExtractionParams-Objekt, das die Parameter für die Extraktion von Objekten speichert. Dieser Parameter kann 0 sein. In diesem Fall werden die Objekte mit den Standardparametern extrahiert oder, falls ein Profil geladen wurde, die in diesem Profil festgelegten Parameter verwendet. TextOrientation [in] Bezieht sich auf das TextOrientation-Objekt, das die Orientierung des Texts auf dem Bild angibt. Wenn dieser Parameter 0 ist, geht ABBYY FineReader Engine davon aus, dass das Bild eine normale Orientierung aufweist. SplitDirection [out] Diese Variable erhält den Typ der möglichen Spaltung: vertikale Spaltung, horizontale Spaltung oder keine Spaltung. Siehe die Beschreibung der PageSplitDirectionEnum für Details. StartSplitPosition [out] Die Koordinate der ersten Linie, die die Trennposition definiert (falls eine Spaltung möglich ist). Die Bedeutung dieses Werts hängt vom Wert der Variable splitDirection ab. Wird eine vertikale Spaltung erkannt, enthält sie die horizontale Koordinate der Spaltlinie. Wird eine horizontale Spaltung erkannt, enthält sie die vertikale Koordinate der Spaltlinie. Die Koordinate wird relativ zur schwarz-weißen, der Schieflage korrigierten Seite des Bildes angegeben. EndSplitPosition [out] Die Koordinate der zweiten Linie, die die Trennposition definiert (falls eine Spaltung möglich ist). Die Bedeutung dieses Werts hängt vom Wert der Variable splitDirection ab. Wird eine vertikale Spaltung erkannt, enthält sie die horizontale Koordinate der Spaltlinie. Wird eine horizontale Spaltung erkannt, enthält sie die vertikale Koordinate der Spaltlinie. Die Koordinate wird relativ zur schwarz-weißen, der Schieflage korrigierten Seite des Bildes angegeben.

Rückgabewerte

Diese Methode hat keine eigenen Rückgabewerte. Sie gibt die Standardrückgabewerte von ABBYY FineReader Engine-Funktionen zurück.

Beispiele

private bool splitImage(FREngine.IFRPage page, FREngine.IFRDocument frDoc, FREngine.IPageProcessingParams ppp)
{
 int splitStartPosition = 0;
 int splitEndPosition = 0;
 bool isVerticalSplit = true;
 // Textorientierung erkennen
 FREngine.ITextOrientation ori = page.DetectOrientation(null, ppp.ObjectsExtractionParams, ppp.RecognizerParams);
 // Trennposition finden
 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;
 }
 // Das Bild in zwei Seiten teilen
 // Bildabmessungen
 int width = page.ImageDocument.ColorImage.Width;
 int height = page.ImageDocument.ColorImage.Height;
 // Seite duplizieren
 frDoc.AddPage(page);
 FREngine.IFRPage secondPage = frDoc.Pages[frDoc.Pages.Count - 1];
 // Erste und zweite Seite zuschneiden
 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;
}

Siehe auch

FRPage DetectOrientation PageSplitDirectionEnum Arbeiten mit Profilen