Quickstart: Reconhecer tinta digital com a API e C do Reconhecimento de Tinta REST #
Nota
A API do Reconhecimento de Tinta terminou a sua pré-estreia no dia 26 de agosto de 2020. Se tiver os recursos existentes do Ink Recogniser, pode continuar a usá-los até que o serviço seja totalmente reformado a 31 de janeiro de 2021.
Use este quickstart para começar a enviar traços de tinta digital para a API do Reconhecimento de Tinta. Esta aplicação C# envia um pedido de API contendo dados de traçado de tinta com formato JSON, e obtém a resposta.
Enquanto esta aplicação está escrita em C#, a API é um serviço web RESTful compatível com a maioria das linguagens de programação.
Normalmente, você chamaria a API de uma aplicação digital de tinta. Este quickstart envia dados de traçado de tinta para a seguinte amostra manuscrita a partir de um ficheiro JSON.
O código-fonte para este arranque rápido pode ser encontrado no GitHub.
Pré-requisitos
Qualquer edição do Visual Studio 2017.
-
- Para instalar Newtonsoft.Json como um pacote NuGet em estúdio visual:
- Clique no gestor de solução
- Clique em Gerir Pacotes NuGet...
- Procurar
Newtonsoft.Json
e instalar o pacote
- Para instalar Newtonsoft.Json como um pacote NuGet em estúdio visual:
Se estiver a utilizar o Linux/MacOS, esta aplicação pode ser executada utilizando o Mono.
Os dados de traçado de tinta de exemplo para este arranque rápido podem ser encontrados no GitHub.
Criar um recurso de Reconhecimento de Tinta
Nota
Os pontos finais para recursos criados após 1 de julho de 2019 utilizam o formato de subdomínio personalizado apresentado abaixo. Para mais informações e uma lista completa de pontos finais regionais, consulte os nomes de subdomínio personalizados para Serviços Cognitivos.
Os Serviços Cognitivos Azure são representados por recursos Azure que subscreve. Crie um recurso para o Reconhecimento de Tinta utilizando o portal do Azure.
Depois de criar um recurso, obtenha o seu ponto final e a chave abrindo o seu recurso no portal do Azure e clicando em início rápido.
Criar duas variáveis ambientais:
INK_RECOGNITION_SUBSCRIPTION_KEY
- A chave de subscrição para autenticar os seus pedidos.INK_RECOGNITION_ENDPOINT
- O ponto final do seu recurso. Terá o seguinte aspeto:
https://<your-custom-subdomain>.api.cognitive.microsoft.com
Criar uma nova aplicação
No Visual Studio, crie uma nova solução de consola e adicione os seguintes pacotes.
using System; using System.IO; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; using Newtonsoft.Json.Linq;
Crie variáveis para a sua chave de subscrição e ponto final, e o ficheiro JSON exemplo. O ponto final será posteriormente combinado com
inkRecognitionUrl
o acesso à API.// Add your Ink Recognizer subscription key to your environment variables. static readonly string subscriptionKey = Environment.GetEnvironmentVariable("INK_RECOGNIZER_SUBSCRIPTION_KEY"); // Add your Ink Recognizer endpoint to your environment variables. // For example: <your-custom-subdomain>.cognitiveservices.azure.com static readonly string endpoint = Environment.GetEnvironmentVariable("INK_RECOGNIZER_ENDPOINT"); static readonly string inkRecognitionUrl = "/inkrecognizer/v1.0-preview/recognize"; // Replace the dataPath string with a path to the JSON formatted ink stroke data. // Optionally, use the example-ink-strokes.json file of this sample. Add to your bin\Debug\netcoreapp3.0 project folder. static readonly string dataPath = @"PATH_TO_INK_STROKE_DATA";
Criar uma função para enviar pedidos
Crie uma nova função async chamada
Request
que leva as variáveis criadas acima.Desajei o protocolo de segurança do cliente e informações de cabeçalho usando um
HttpClient
objeto. Certifique-se de adicionar a chave de subscrição aoOcp-Apim-Subscription-Key
cabeçalho. Em seguida, criar umStringContent
objeto para o pedido.Envie o pedido com
PutAsync()
. Se o pedido for bem sucedido, devolva a resposta.static async Task<string> Request(string apiAddress, string endpoint, string subscriptionKey, string requestData) { using (HttpClient client = new HttpClient { BaseAddress = new Uri(apiAddress) }) { System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey); var content = new StringContent(requestData, Encoding.UTF8, "application/json"); var res = await client.PutAsync(endpoint, content); if (res.IsSuccessStatusCode) { return await res.Content.ReadAsStringAsync(); } else { return $"ErrorCode: {res.StatusCode}"; } } }
Enviar um pedido de reconhecimento de tinta
Criar uma nova função chamada
recognizeInk()
. Construa o pedido e envie-o chamando a função com oRequest()
seu ponto final, chave de subscrição, o URL para a API e os dados digitais do traçado de tinta.Deserialize o objeto JSON e escreva-o para a consola.
static void recognizeInk(string requestData) { //construct the request var result = Request( endpoint, inkRecognitionUrl, subscriptionKey, requestData).Result; dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(result); System.Console.WriteLine(jsonObj); }
Carregue os seus dados de tinta digital
Crie uma função chamada LoadJson()
para carregar o ficheiro JSON de dados de tinta. Use um StreamReader
e JsonTextReader
para criar um JObject
e devolvê-lo.
public static JObject LoadJson(string fileLocation)
{
var jsonObj = new JObject();
using (StreamReader file = File.OpenText(fileLocation))
using (JsonTextReader reader = new JsonTextReader(file))
{
jsonObj = (JObject)JToken.ReadFrom(reader);
}
return jsonObj;
}
Envie o pedido da API
No método principal da sua aplicação, carregue os seus dados JSON com a função acima criada.
Ligue para a
recognizeInk()
função criada acima. UtilizeSystem.Console.ReadKey()
para manter a janela da consola aberta depois de executar a aplicação.static void Main(string[] args) { var requestData = LoadJson(dataPath); string requestString = requestData.ToString(Newtonsoft.Json.Formatting.None); recognizeInk(requestString); System.Console.WriteLine("\nPress any key to exit "); System.Console.ReadKey(); }
Executar a aplicação e ver a resposta
Execute a aplicação. Uma resposta bem sucedida é devolvida no formato JSON. Também pode encontrar a resposta JSON no GitHub.
Passos seguintes
Para ver como funciona a API de Reconhecimento de Tinta numa aplicação digital de tinta, veja as seguintes aplicações de amostra no GitHub: