无法在KTM验证时轮换的发票上执行橡皮筋

时间:2014-09-25 10:30:50

标签: image-processing vbscript ocr kofax

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

1 个答案:

答案 0 :(得分:0)

对此没有明确的答案,但我可以建议一些选择。前几个澄清。即使你已经知道这些,这将有助于这个问题对其他人更有意义:

  • 虽然Kofax Capture实际上是在对图像的一部分进行套索时按需进行区域OCR读取,但Kofax Transformation Modules实际上只返回已在KTM服务器中执行的OCR坐标内的单词。
  • 开箱即用,KTM验证只能执行"永久性"旋转,在某种意义上说,它不是简单地旋转您当前看到的内容,而是在磁盘上的图像或元数据中持续旋转(取决于项目设置)。
  • 旋转的含义是存储的OCR不再对新方向有效,因此会被删除。任何具有单词对象(与OCR相关联)的字段都将被删除并失效。
  • KTM Server已将批处理标记为已处理,因此不会再尝试。

在轮播期间保留字段结果

我相信如果你从字段中删除单词对象,那么它就不会在旋转时清除它。您可能还需要取消设置页面索引,以便它不会连接到正在旋转的页面。

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事件中存储和恢复值。

旋转后

Rubberband OCR(Lassoing Words)

没有明确的简单方法可以做到这一点。我考虑过建议在轮换后从脚本调用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仅在返回到原始方向时才有用。