iink SDK on Device

When is recognition done or complete?

Hello,


We have an iOS app that connects to an impression board via Bluetooth. The user writes something on the impression board, MyScript native IInk (v2.1.1) does the text recognition while the user continues writing, and we display the recognition. With each stroke (or more) from the impression board, we pass that to IInk (using editor.pointerDown, editor.pointerMove, and editor.pointerUp). IInk processes them asynchronously and concurrently. The app will continue to receive updates typically in SmartGuideViewController via IINKEditorDelegate, sometimes with changes or no changes from the previous occurrence. If changes were detected in the recognized text, the app continues to update the display by overwriting the previous value on which we continue updating the display. This process of continued updating while the user is writing is very useful in providing seamless top-class UX.


We did experience not so good recognition if we send strokes as they become available (from the received Bluetooth board). The best seems to send them at the end when the strokes of the completed impression are at the end.


The above does not work well if there is a requirement to send the recognized text to a printer - we need to make sure that all strokes are done being processed and the last text is the last and final recognition. My question is: How do we know that there are no outstanding strokes and all are accounted for with the last provided recognition?


According to https://developer.myscript.com/docs/interactive-ink/2.1/ios/fundamentals/editing/#guides, I should use waitForIdle() to ensure that the recognition is complete, but I am not wrong this is only applicable for batch processing. Our app also has the ability too function while the app is running in the background and want to avoid to avoid spikes in Processing time, or at least spread the load out where possible.

1 Comment

Hello,

First of all, I'm quite suprise when you say

"We did experience not so good recognition if we send strokes as they become available (from the received Bluetooth board). The best seems to send them at the end when the strokes of the completed impression are at the end." ; I'm interested in knowing more, since we didn't experiment the same on our tests.


For the waitForIdle, this is the good path to go. It's applicate for batch processing and for incremental processing aswell. The waitForIdle call blocks until the whole recognition is done.

I hope this answer your questions,

Best regards,

Etienne

Login or Signup to post a comment