FlexiCapture プロジェクトに読み込んだ帳票イメージが回転しているときに、回転角度に応じて回転を補正するスクリプトについて

質問

FlexiCapture プロジェクトに読み込んだ帳票イメージが回転しているときに、合致したセクションがある状態で、回転角度に応じて回転を補正するスクリプトがあれば教えてください。

回答

プロジェクトのワークフローで、認識の前に新たにスクリプトのステージを作成して、各ページ単位で Picture プロパティの DetectPageOrientation メソッドを用いて回転角を取得して、その回転角度が 0 ではない場合に変更を行う流れになります。

なお ReplaceImage メソッドを実行した後では、改めて認識操作が必要になるますので、あらかじめご留意ください。

IPage→Picture プロパティ (IPictureObject)

IPictureObject→DetectPageOrientation メソッド

ページの向きをテキストで検出します。その言語の内部名が入力パラメーターとして渡されます。言語が指定されていない場合は、現在のロケールの言語が使用されます。ページを回転させる角度(度単位で)を返します。次の値が返されます:0、90、180、270。

認識言語の内部名

IPage→ReplaceImage メソッド
ページ画像を新しい画像に置き換えます。

新しい画像を作成する場合は、別のIPictureObjectオブジェクトを編集してください。ファイルから新しい画像を読み込む場合は、FCTools.LoadImageメソッドをご使用ください。メモリに保存したビットマップファイル(例:.NET System.Drawing.Image)から画像を作成する場合は、FCTools.PictureFromHBitmapメソッド。

以下はスクリプトのサンプルです。

// ページ単位で処理を行う
foreach( IPage page in Document.Pages )
{
// 合致するセクションがあるときのみ実施する
if( page.MatchedSection == null )
{
// 言語を日本語に指定してページの回転角度を取得する
var angle = page.Picture.DetectPageOrientation( "Japanese" );

// 角度が 0 度でない場合は回転する
if( angle != 0 )
{
var picture = page.Picture.CreateEditableCopy();
picture.Rotate( -angle );
page.ReplaceImage( picture );
}
}
}

他にご質問がございましたら、リクエストを送信してください

コメント

0件のコメント

サインインしてコメントを残してください。