ドキュメントの識別と索引作成のためにスクリプトを作成

スクリプトを使用することによってドキュメントの識別と索引作成を設定できます。 スクリプトはドキュメントのタイプを検出し、認識されたテキスト、バーコードなどに基づいてドキュメントの属性を追加するために使用できます。 ドキュメントが結合された後各ドキュメントによってスクリプトをそれぞれ実行できます。

重要事項!ドキュメント識別と索引作成のスクリプトは、処理ステーションによってトリガされます。 従って、共有リソースでスクリプトを正確に作業するには、これらのリソースへのアクセスに必要な権限を持っているユーザーアカウントで処理ステーションを実行する必要があります。

スクリプトを作成して利用するには、以下の操作を行ってください:

  1. ワークフローのプロパティ ダイアログボックスの5. インデックスタブで、 ドキュメントのタイプを指定します。 少なくとも一つのドキュメントのタイプが指定された場合、ドキュメントの索引作成だけが利用できます。
  2. 新規ドキュメントのタイプを追加するには、新規...。をクリックしてください。 表示されている ドキュメントタイプ ダイアログボックスで、ドキュメントのタイプ名とその属性を指定します。 [OK] をクリックします。
  3. スクリプト...ボタンをクリックします。 表示されている スクリプトエディタ ダイアログボックスで、スクリプト言語を選択してスクリプトテキストを入力します。 参照の「this」または「Me」とはDocumentToIndexオブジェクトを指しています。

注:索引作成スクリプト完了時の索引作成ステーションで、処理用のドキュメントを待ち行列に入れるには、DocumentToIndexオブジェクトのSkipManualIndexing の値をFALSEに設定します。

  1. 確認 ボタンをクリックしてスクリプトをチェックします。 OKをクリックしてスクリプトを保存します。

スクリプトの使用の詳細については、ABBYY FineReader Serverでのスクリプト使用方法を参照してください。

サンプル

以下に提供されているサンプルスクリプトは JScript で書かれており、認識されたテキストに基づいたドキュメントのインデックス作成を目的としています。ドキュメントタイプとして、プログラムは、ドキュメント分割スクリプトを実行するときにドキュメントに割り当てられたカスタムテキスト(DocumentToIndexオブジェクトのCustomTextプロパティ)を使用します。プログラムは、ドキュメントのタイプに応じて、最初のページの認識されたテキスト内でキーワードを検索します。キーワードが見つかると、プログラムはドキュメント属性の値を設定し、手動でのインデックス作成(SkipManualIndexingプロパティ)をスキップします。

注:このスクリプトは Scripting Demo シナリオの処理のデモで使用され、その設定は次のフォルダの ScriptingDemoWorkflow.xml にあります:サンプル (スタート > プログラム > ABBYY FineReader Server 14 > 例)。

if( CustomText == "" ) {
return;
}
DocumentType = CustomText;
if( DocumentType == "Brochure" ) {
var firstPageText = Pages.Item( 0 ).Text;
if( firstPageText.search( "FineReader Server" ) != -1 ) {
 setAttribute( "ABBYY FineReader Server" );
 SkipManualIndexing = true;
} else if( firstPageText.search( "FlexiCapture" ) != - 1 ) {
 setAttribute( "ABBYY FlexiCapture" );
 SkipManualIndexing = true;
}
}
function setAttribute( newValue )
{
for( i = 0; i < Attributes.Count; i++ ) {
 var attribute = Attributes.Item( i );
 if( attribute.Name == "Product Name" ) {
  attribute.Value = newValue;
  break;
 }
}
}

イベントハンドラー

イベントハンドラーは各ドキュメントのタイプに対して設定することができます。 イベントハンドラーを作成、有効にするには、ドキュメントのタイプ ダイアログボックスでスクリプト...ボタンをクリックし、イベントを選択し、 スクリプトを編集... ボタンをクリックします。 以下のイベントが利用できます。

    • ドキュメントタイプに変更があった時

ドキュメントのタイプが変更された場合、このイベントに対するハンドラーが実行されます。 デフォルトのドキュメントタイプがワークフローの設定で指定された場合、他のスクリプトでドキュメントのタイプを変更している場合、ドキュメントのタイプが索引作成ステーションで変更された場合にこれが発生します。 ドキュメントタイプに変更があった時のイベントに対するイベントハンドラーは、IDocumentAttributes オブジェクトを使用して、予め定められた値をドキュメントフィールドに割り当てるために使用できます。

注:ドキュメントタイプに変更があった時のイベントに対するイベントハンドラーは、ドキュメントのタイプが変更されたステーションで実行されています。

予め定められた値をシングルライン 属性に割り当るイベントハンドラーは、以下の例のようになります。

for( i = 0; i < Attributes.Count; i++ ) {
   var attribute = Attributes.Item(i);;
   if( attribute.Type == 2 ) {
       attribute.Value = attribute.Name + " " + WorkflowName + " DocType1 value";
   }
}

  • ドキュメントの属性の値に変更があった時

オペレータがフィールドの値を変更し、カーソルを移動することにより変更を確定させる時に、このイベントに対するハンドラーは索引作成ステーションで実行されます。 IDocumentAttributesChanged オブジェクトを使用することで、他のフィールドの値に基づいてフィールドの値を変更できます。 ドキュメントの属性の値に変更があった時」のイベントに対するイベントハンドラーは、Attribute オブジェクトのPossibleValuesプロパティを使用してAttribute フィールドを変更するためにも利用できます。 このプロパティは、編集可能な文字列セットで構成されます。

他の属性の値に基づいて値をリストの属性に追加するスクリプトの例は、以下のようになります。

  if( ChangedAttributeName == "First name" || ChangedAttributeName == "Last name" ) {
   LogMessage( "Field changed " + ChangedAttributeName  );
   var firstNameValue = "";
   var lastNameValue = "";
   for( i = 0; i < Attributes.Count; i++ ) {
       var attribute = Attributes.Item(i);
       if( attribute.Name == "First name" && attribute.IsDefined ) {
           firstNameValue = attribute.Value;
       } else if( attribute.Name == "Last name" && attribute.IsDefined ) {
           lastNameValue = attribute.Value;
       }
   }
   if( firstNameValue != "" && lastNameValue != "" ) {
       var fullNameValue = firstNameValue + " " + lastNameValue;
       for( i = 0; i < Attributes.Count; i++ ) {
           var attribute = Attributes.Item(i);
           if( attribute.Name == "Full name" ) {
               attribute.Value = fullNameValue;
           } else if( attribute.Name == "List" && attribute.Type == 1 ) {
               LogMessage( "Add to list " + fullNameValue  );
               attribute.PossibleValues.DeleteAll();
               attribute.PossibleValues.Insert( 0, fullNameValue );
           }
       }
   }
}

  • ドキュメントのインデックス作成が終了した場合

ドキュメントの索引作成が以下のいずれかの理由で停止した場合、このイベントのタイプに対するハンドラーは索引作成ステーションで実行されます:

    • オペレータがドキュメントを承認した
    • オペレータはドキュメントまたはジョブを拒否した
    • オペレータは、別のドキュメントを選択することで、ドキュメントの索引を拒否しました
    • このドキュメントはステーションのタイムアウト期間の有効期限が切れた後サーバーに返されました

ドキュメントのインデックス作成が終了した場合のイベントに対するハンドラーは、IDocumentAttributesIndexingFinished オブジェクトを利用します。 ドキュメントを拒否したオペレータの名前を返すスクリプトの例は、以下のようになります:

if (IndexingResult == 1){
 LogMessage("Document Rejected by "+IndexingUserName);;
}

こちらも参照してください:

ABBYY FineReader Server でのスクリプトの使用

26.03.2024 13:49:51

Please leave your feedback about this article

Usage of Cookies. In order to optimize the website functionality and improve your online experience ABBYY uses cookies. You agree to the usage of cookies when you continue using this site. Further details can be found in our Privacy Notice.