1

検証段階で回転した画像にラバーバンドを実行することはできません。画像を回転する前に OCR インデックス フィールドのデータを保存し、画像を手動で回転する方法はありますか。画像が回転すると、すべてのインデックス フィールドが無効になり、ユーザーは同じ画像に対してラバー バンドを実行できなくなります。画像を回転させた後、同じバッチを KTM サーバーに移動し、KTM 検証に戻りましたが、まだラバー バンドは使用できません。

4

1 に答える 1

0

これに対する明確で簡単な答えはありませんが、いくつかのオプションを提案できます。最初のいくつかの説明。これらをすでに知っている場合でも、質問が他の人にとってより意味のあるものになるのに役立ちます。

  • Kofax Capture は実際にはイメージのセクションをなげなわにするとオンデマンドでゾーン OCR 読み取りを実行しますが、Kofax Transformation Modules は実際には、KTM サーバーで既に実行された OCR の座標内の単語を返すだけです。
  • すぐに使用できる KTM Validation には、現在表示されているものを単純に回転させるのではなく、ディスク上のイメージまたはメタデータ (プロジェクト設定で)。
  • 回転の意味は、保存された OCR が新しい方向に対して有効でなくなるため、削除されることです。単語オブジェクト (OCR に関連付けられている) を含むフィールドはすべて削除され、無効になります。
  • KTM サーバーはすでにバッチを処理済みとしてマークしているため、再試行されません。

ローテーション中にフィールド結果を保持する

フィールドからオブジェクトという単語を削除すると、ローテーションでクリアされないと思います。回転するページに接続されないように、ページ インデックスの設定を解除する必要がある場合もあります。

Dim FieldIndex as Integer
For FieldIndex=0 to pXDoc.Fields.Count-1  
   While pXDoc.Fields.ItemByIndex(FieldIndex).Words.Count>0
      pXDoc.Fields.ItemByIndex(FieldIndex).Words.Remove(0)
   Wend
pXDoc.Fields.ItemByIndex(FieldIndex).PageIndex=-1
Next

これに問題がある場合は、Batch_BeforeRotateImage および Batch_AfterRotateImage イベントで値を保存および復元する他の方法を使用することもできます。

回転後のラバーバンド OCR (Lassoing Words)

これを行うための明確で簡単な方法はありません。ローテーション後にスクリプトから OCR を呼び出すことを提案することを検討しましたが、関連するオブジェクトがサポートされているかどうかの灰色の領域であることは別として、OCR コンポーネントが検証に読み込まれることさえないことを示しています。

別の方向: 表示画像のみを回転させる

既成の KTM Validation は一時的なローテーションを行うことはできませんが、ローテーションを永続化する必要がない場合は、スクリプトでこれを実行できます。この関数を使用します。

Public Sub RotateCurrentValidationImage(pXDoc As CscXDocument, ValForm As CscScriptValidationForm, Optional RotateCounterClockwise As Boolean=False)
   Dim Img As CscImage
   Set Img=pXDoc.CDoc.Pages(ValForm.CurrentPageIndex).GetImage()
   Img.RotateImage(IIf(RotateCounterClockwise,CscImgRotation90Left,CscImgRotation90Right))
   pXDoc.CDoc.Pages(ValForm.CurrentPageIndex).SetImage(Img)

   ValForm.DocViewer.DisplayPage(-1)
   ValForm.DocViewer.DisplayPage(ValForm.CurrentPageIndex)
End Sub

次のようなボタンクリックイベントから:

Private Sub ValidationForm_ButtonClicked(ByVal ButtonName As String, ByVal pXDoc As CASCADELib.CscXDocument)
   Select Case ButtonName
      Case "RotateDisplayImage"
         RotateCurrentValidationImage(pXDoc,ValidationForm)
   End Select
End Sub

これは、メモリ内で現在表示されている画像のみを回転します。既存の OCR には影響しません (まだ存在しますが、イメージの座標に一致するように回転することもできません)、既存のフィールドにも影響しません。また、バッチが閉じられると回転が持続しません。

この状況では、ラバーバンド OCRは技術的には機能しますが、文字と画像が一致しないため、回転中は役に立ちません。これは、何かを手動でキー入力するために回転する必要がある場合に役立ちますが、ラバーバンド OCR は元の向きに戻った場合にのみ役立ちます。

于 2014-09-25T19:38:40.360 に答える