This page shows you how to instantiate the iink runtime and configure it to fit your needs.
The iink SDK runtime is represented by an Engine
object.
This object will let you create other key objects, configure the recognition and fine-tune the SDK behavior.
It is instantiated via the Create()
static method of the Engine
class:
Engine engine = Engine.Create(MyScript.Certificate.MyCertificate.Bytes);
A new engine must be configured to let iink SDK know which kind of content is to be recognized.
Being a flexible toolkit, iink SDK also comes with many configuration parameters. While the default values make sense in most cases, it may sometimes be required to configure them to suit your needs.
The configuration can be obtained via the Configuration
property of the Engine
object.
It is possible to attach a listener implementing the IConfigurationListener
interface to a given configuration object to get notified when configuration
changes are made.
To recognize math, diagrams or text in any language, the engine needs to be created and pointed to the required assets.
Assets packages consist in a set of configuration files (*.conf
) that specify required recognition parameters combined to binary files called resources files (*.res
).
The resources files host everything that the engine requires for the recognition.
MyScript iink SDK default configurations should be suitable for most needs. So in most cases, you don’t have to care for them. If you need to go further, you can learn how to modify or write your own configuration files (advanced).
Default language for text recognition is en_US english. So one of the first recognition tuning you might want to do is modifying the language.
MyScript delivers some ready to use language packs so that updating language is an easy task that you can perform in a few steps:
Step 1 Download the corresponding language pack, so in our example, select the italian language: Packs for additional languages or content types are available on MyScript Developer Portal.
Step 2 Install the pack in your application project:
The language pack consists in a *.zip
archive containing a configuration file (*.conf
), and associated resources files (*.res
) to be extracted in your project path.
Step 3 Modifiy the engine configuration language in you application code:
configuration-manager.search-path
key to the folder(s) containing your language configuration file(s) (*.conf).lang
key to match your languageFor instance, set it_IT
for the Italian language, as corresponding resources are described in it_IT.conf
:
// Get the configuration
var configuration = engine.Configuration;
// Set the recognition resources path
string[] folders = new string[2];
folders[0] = "/path/to/configuration/files";
folders[1] = "/path/to/more/configuration/files";
configuration.SetStringArray("configuration-manager.search-path", folders);
// Set the language
configuration.SetString("lang", "it_IT");
MyScript iink SDK comes with many configuration options. Some are general, like the ability to choose the location of the temporary folder to store work data on the file system, and some depend on the type of content you manipulate. For instance, it is possible to activate or deactivate the solver for math equations.
The full list of supported configuration options can be found in the dedicated section.
Engine-level configuration corresponds to the default, global configuration. It is possible to override configuration values at editor-level, which is useful if you manage several parts with different configurations.
MyScript iink SDK configuration is a ParameterSet
object.
It can be seen as a set of key/value pairs, where values themselves can be other ParameterSet
objects.
You can read the value attached to an existing key, add new (key, value) pairs or remove existing ones.
Supported value types are strings, numbers, booleans, arrays of strings, as well as other ParameterSet
objects.
Here is a representation of such a structure:
{
"name": "iink SDK",
"interactive": true,
"version":
{
"major": 1,
"minor": 0
},
"parts": [ "Text", "Math", "Diagram", "Drawing", "Raw Content", "Text Document"]
}
The code below shows how to manipulate this structure when stored in a parameters
variable:
// Access a section content
var version = parameters.GetSection("version");
// Read a value for a key using the section object
var major = version.GetNumber("major"); // -> 1
// Set a value for a key using the dot syntax
parameters.SetNumber("version.major", major + 1); // -> 2
To be able to recognize math, the engine of the example calculator needs to be created and pointed to the required assets.
The easy way is to rely on the default configuration for math: You just need to set the right configuration option to the folder where the math.conf
file
provided with iink SDK is located.
In addition, it is recommended to provide a valid content-package.temp-folder
configuration, which is further explained in the next step.
The solver component of the math back-end needs to be enabled, so that it can handle the computations when doing the conversion.
The value of math.solver.enable
is true
by default, so there is nothing to do here.
Finally, for the sake of the example, you can change the floating point precision of the answer to 2 digits (it is 3 by default).
The code to create and configure the engine will thus be:
class Calculator
{
private Engine engine;
public Calculator()
{
// Create the engine
engine = Engine.Create(MyScript.Certificate.MyCertificate.Bytes);
// Get the configuration object
var configuration = engine.Configuration;
// Set the recognition resources path
string[] folders = new string[1];
folders[0] = "../../../recognition-assets/conf";
configuration.SetStringArray("configuration-manager.search-path", folders);
// Set the temporary directory
var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder.Path;
var tempFolder = System.IO.Path.Combine(localFolder.ToString(), "tmp");
configuration.SetString("content-package.temp-folder", tempFolder);
// Set the math fractional part precision
configuration.SetNumber("math.solver.fractional-part-digits", 2);
}
}
At this point, the engine is theoretically able to recognize math. The next step of this guide will show how to load and save content.