1

我们无法在验证阶段旋转的图像上执行橡皮筋。有什么方法可以在旋转图像之前保存 OCR 索引字段的数据,然后手动旋转图像。图像旋转后,所有索引字段都将变为无效,用户也无法在同一图像上执行橡皮筋。旋转图像后,我们将同一批次移至 KTM 服务器并返回 KTM 验证,仍然无法使用橡皮筋

4

1 回答 1

0

对此没有明确的简单答案,但我可以提出一些选择。前几个澄清。即使你已经知道这些,它也会帮助这个问题对其他人更有意义:

  • 尽管 Kofax Capture 实际上会在您套索图像的一部分时按需读取区域 OCR,但 Kofax 转换模块实际上只是返回在 KTM 服务器期间已经执行的 OCR 坐标内的单词。
  • 开箱即用,KTM 验证只能进行“永久”旋转,因为它不仅仅是旋转您目前看到的内容,而是在磁盘上的图像或元数据中保持旋转(取决于关于项目设置)。
  • 旋转的含义是存储的 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(套索词)

没有明确简单的方法可以做到这一点。我考虑过建议在旋转后从脚本调用 OCR,但除了是否支持相关对象的灰色区域之外,尝试表明 OCR 组件甚至没有被加载到验证中。

不同的方向:仅旋转显示图像

我之前提到过,开箱即用的 KTM 验证不能只是进行临时轮换,但是,如果您不需要保持轮换,您可以在脚本中完成此操作。使用这个功能:

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 回答