Rychlý start: Rozpoznávání digitálního rukopisu pomocí rozhraní REST API služby Rozpoznávání rukopisu a jazyka C #
Poznámka
Rozhraní API rozpoznávání rukopisu ukončilo svou verzi Preview 26. srpna 2020. Pokud máte existující prostředky Rozpoznávání rukopisu, můžete je dál používat, dokud služba nebude plně vyřazena 31. ledna 2021.
Pomocí tohoto rychlého startu začněte odesílat digitální tahy rukopisu do rozhraní API rozpoznávání rukopisu. Tato aplikace jazyka C# odešle požadavek rozhraní API obsahující data tahů rukopisem formátovaným formátem JSON a získá odpověď.
I když je tato aplikace napsaná v jazyce C#, rozhraní API je webová služba RESTful kompatibilní s většinou programovacích jazyků.
Obvykle byste volali rozhraní API z aplikace pro digitální rukopis. Tento rychlý start odešle data tahů rukopisu pro následující rukou psanou ukázku ze souboru JSON.
Zdrojový kód pro tento rychlý start najdete na GitHubu.
Požadavky
Libovolná edice sady Visual Studio 2017
-
- Instalace souboru Newtonsoft.Json jako balíčku NuGet v sadě Visual Studio:
- Klikněte pravým tlačítkem na Správce řešení.
- Klikněte na Spravovat balíčky NuGet...
- Vyhledání
Newtonsoft.Json
a instalace balíčku
- Instalace souboru Newtonsoft.Json jako balíčku NuGet v sadě Visual Studio:
Pokud používáte Linux nebo MacOS, můžete tuto aplikaci spustit pomocí Mono.
Ukázková data tahů inkoustem pro účely tohoto rychlého startu najdete na GitHubu.
Vytvoření prostředku Rozpoznávání rukopisu
Poznámka
Koncové body pro prostředky vytvořené po 1. červenci 2019 používají vlastní poddoménový formát zobrazený níže. Další informace a úplný seznam regionálních koncových bodů najdete v tématu Názvy vlastních subdomén služeb Cognitive Services.
Azure Cognitive Services jsou reprezentované prostředky Azure, které si předplatíte. Vytvořte prostředek pro rozpoznávání rukopisu pomocí Azure Portal.
Po vytvoření prostředku získejte koncový bod a klíč tak, že prostředek otevřete na Azure Portal a kliknete na Rychlý start.
Vytvořte dvě proměnné prostředí:
INK_RECOGNITION_SUBSCRIPTION_KEY
– Klíč předplatného pro ověřování vašich požadavků.INK_RECOGNITION_ENDPOINT
– Koncový bod vašeho prostředku. Bude vypadat takto:
https://<your-custom-subdomain>.api.cognitive.microsoft.com
Vytvoření nové aplikace
V sadě Visual Studio vytvořte nové řešení konzoly a přidejte následující balíčky.
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;
Vytvořte proměnné pro klíč předplatného a koncový bod a ukázkový soubor JSON. Koncový bod se později zkombinuje s
inkRecognitionUrl
přístupem k rozhraní 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";
Vytvoření funkce pro odesílání požadavků
Vytvořte novou asynchronní funkci s názvem
Request
, která přebírá proměnné vytvořené výše.Nastavte protokol zabezpečení klienta a informace hlavičky pomocí objektu
HttpClient
. Nezapomeňte do hlavičky přidat klíč předplatnéhoOcp-Apim-Subscription-Key
. Pak vytvořteStringContent
objekt pro požadavek.Odešlete žádost s .
PutAsync()
Pokud je požadavek úspěšný, vraťte odpověď.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}"; } } }
Odeslání žádosti o rozpoznávání rukopisu
Vytvořte novou funkci s názvem
recognizeInk()
. Vytvořte požadavek a odešlete ji volánímRequest()
funkce s vaším koncovým bodem, klíčem předplatného, adresou URL pro rozhraní API a daty digitálních tahů rukopisu.Deserializovat objekt JSON a zapsat ho do konzoly.
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); }
Načtení digitálních rukopisných dat
Vytvořte funkci volanou LoadJson()
pro načtení souboru JSON s daty rukopisu.
StreamReader
Použijte a vytvořte a JsonTextReader
vraťte hoJObject
.
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;
}
Odeslání požadavku rozhraní API
V hlavní metodě aplikace načtěte data JSON pomocí funkce vytvořené výše.
Zavolejte funkci vytvořenou
recognizeInk()
výše. SloužíSystem.Console.ReadKey()
k zachování otevřeného okna konzoly po spuštění aplikace.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(); }
Spuštění aplikace a zobrazení odpovědi
Spusťte aplikaci. Úspěšná odpověď se vrátí ve formátu JSON. Odpověď JSON najdete také na GitHubu.
Další kroky
Pokud chcete zjistit, jak funguje rozhraní API pro rozpoznávání rukopisu v digitální aplikaci rukopisu, podívejte se na následující ukázkové aplikace na GitHubu: