Snabbstart: Identifiera digitala pennanteckningar med REST API för handskriftsigenkänning och C #
Anteckning
API:et för handskriftsigenkänning har avslutat förhandsversionen den 26 augusti 2020. Om du har befintliga resurser för handskriftsigenkänning kan du fortsätta att använda dem tills tjänsten har dragits tillbaka helt den 31 januari 2021.
Använd den här snabbstarten för att börja skicka digitala pennstreck till API:et för handskriftsigenkänning. Det här C#-programmet skickar en API-begäran som innehåller JSON-formaterade pennstrecksdata och hämtar svaret.
Även om det här programmet är skrivet i C#, är API:et en RESTful-webbtjänst som är kompatibel med de flesta programmeringsspråk.
Vanligtvis anropar du API:et från en digital pennanteckningsapp. Den här snabbstarten skickar pennstrecksdata för följande handskrivna exempel från en JSON-fil.
Källkoden för den här snabbstarten finns på GitHub.
Förutsättningar
Valfri version av Visual Studio 2017.
-
- Så här installerar du Newtonsoft.Json som ett NuGet-paket i Visual Studio:
- Högerklicka på Solution Manager
- Klicka på Hantera NuGet-paket...
- Sök
Newtonsoft.Json
efter och installera paketet
- Så här installerar du Newtonsoft.Json som ett NuGet-paket i Visual Studio:
Om du använder Linux/MacOS kan det här programmet köras med Mono.
Exempeldata för pennstreck för den här snabbstarten finns på GitHub.
Skapa en resurs för handskriftsigenkänning
Anteckning
Slutpunkter för resurser som skapats efter den 1 juli 2019 använder det anpassade underdomänformatet som visas nedan. Mer information och en fullständig lista över regionala slutpunkter finns i Anpassade underdomännamn för Cognitive Services.
Azure Cognitive Services representeras av Azure-resurser som du prenumererar på. Skapa en resurs för handskriftsigenkänning med hjälp av Azure Portal.
När du har skapat en resurs hämtar du slutpunkten och nyckeln genom att öppna resursen på Azure Portal och klicka på Snabbstart.
Skapa två miljövariabler:
INK_RECOGNITION_SUBSCRIPTION_KEY
– Prenumerationsnyckeln för att autentisera dina begäranden.INK_RECOGNITION_ENDPOINT
– Slutpunkten för resursen. Resultatet ser ut så här:
https://<your-custom-subdomain>.api.cognitive.microsoft.com
Skapa ett nytt program
Skapa en ny konsollösning i Visual Studio och lägg till följande paket.
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;
Skapa variabler för din prenumerationsnyckel och slutpunkt och JSON-exempelfilen. Slutpunkten kombineras senare med
inkRecognitionUrl
för att få åtkomst till API:et.// 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";
Skapa en funktion för att skicka begäranden
Skapa en ny asynkron funktion med namnet
Request
som tar variablerna som skapades ovan.Ange klientens säkerhetsprotokoll och rubrikinformation med hjälp av ett
HttpClient
-objekt. Se till att lägga till din prenumerationsnyckel iOcp-Apim-Subscription-Key
rubriken. Skapa sedan ettStringContent
-objekt för begäran.Skicka begäran med
PutAsync()
. Om begäran lyckas returnerar du svaret.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}"; } } }
Skicka en begäran om pennanteckningsigenkänning
Skapa en ny funktion med namnet
recognizeInk()
. Skapa begäran och skicka denRequest()
genom att anropa funktionen med din slutpunkt, prenumerationsnyckel, URL:en för API:et och data för digitala pennstreck.Deserialisera JSON-objektet och skriv det till konsolen.
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); }
Läs in dina digitala pennanteckningar
Skapa en funktion med namnet LoadJson()
för att läsa in ink-data-JSON-filen. Använd och StreamReader
JsonTextReader
för att skapa en JObject
och returnera den.
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;
}
Skicka API-begäran
I huvudmetoden för ditt program läser du in dina JSON-data med funktionen som skapades ovan.
Anropa funktionen som
recognizeInk()
skapades ovan. AnvändSystem.Console.ReadKey()
för att hålla konsolfönstret öppet när du har kört programmet.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(); }
Kör programmet och visa svaret
Kör appen. Ett lyckat svar returneras i JSON-format. Du kan också hitta JSON-svaret på GitHub.
Nästa steg
Om du vill se hur API:et för pennanteckning fungerar i en digital pennanteckningsapp kan du ta en titt på följande exempelprogram på GitHub: