我们无法在验证阶段旋转的图像上执行橡皮筋。 有没有什么办法可以在旋转图像之前保存OCR索引字段的数据,然后手动旋转图像。 旋转图像后,所有索引字段都将变为无效,用户也无法在同一图像上执行橡皮筋。 旋转图像后,我们将同一批次移动到KTM服务器并返回KTM验证仍然无法使用橡皮筋
答案 0 :(得分:0)
对此没有明确的答案,但我可以建议一些选择。前几个澄清。即使你已经知道这些,这将有助于这个问题对其他人更有意义:
在轮播期间保留字段结果
我相信如果你从字段中删除单词对象,那么它就不会在旋转时清除它。您可能还需要取消设置页面索引,以便它不会连接到正在旋转的页面。
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仅在返回到原始方向时才有用。