文書から情報を自動的に削除および置換するスクリプトを作成する方法

スクリプトを使って、認識したテキストの情報を再編集することができます。

1. 文書内の情報を置き換える。
これには、インデックススクリプトでIDocumentToIndexPage::ReplaceTextOnPage( what, with, ignoreCase )メソッドを呼び出します。
たとえば、大文字小文字に関係なく、文書全体でテキスト "SampleText" を "ChangedText" に置き換える場合は、次のスクリプトを追加します。

 //JScript
 for( var p = 0, pc = this.Pages.Count; p < pc; p++){
     var page = this.Pages.Item(p);
         page.ReplaceTextOnPage( 'SampleText', 'ChangedText', true);
 }
 this.SkipManualIndexing = true;

重要事項!行の区切り(\n)とタブ(\t)は、"SampleText"と"ChangedText"の引数として使用できません。

2. 検出されたブロックでこの情報を隠します。
これを行うには、インデックス 作成スクリプトで選択ブロックのRedactRegion メソッドを呼び出します。
注:この方法はバーコードブロックには適していません。
文書内で検出された全てのテキストブロックを編集するには、次のサンプルコードをスクリプトに追加します。

 //JScript
 for( var p = 0, pc = this.Pages.Count; p < pc; p++){
   var page = this.Pages.Item(p);
   for(var tb = 0, tbc = page.TextBlocks.Count; tb < tbc; tb++){
       var textBlock = page.TextBlocks.Item(tb);
       page.RedactRegion(textBlock.Region);
   }
 }
 this.SkipManualIndexing = true;

3. インデックスフィールドを編集します。
そのためには、IndexingFinishedスクリプトの中で、選択インデックスフィールドのRedactRegionメソッドを呼び出します。
選択した文書タイプの全てのインデックスフィールドを編集するには、次のサンプルコードをスクリプトに追加します。

 //JScript
 var pagesCount = this.DocumentPages.Count;
 for( var a = 0, ac = this.Attributes.Count; a < ac; a++) {
    var attribute = this.Attributes.Item(a);
    var pageIndex = attribute.PageIndex;
    if( pageIndex >= 0 && pageIndex < pagesCount ){
        this.DocumentPages.Item(pageIndex).RedactAttribute(attribute);
    }
 }

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.