Sdílet prostřednictvím


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.

obrázek rukou psaného textu

Zdrojový kód pro tento rychlý start najdete na GitHubu.

Požadavky

  • Libovolná edice sady Visual Studio 2017

  • Newtonsoft.Json

    • Instalace souboru Newtonsoft.Json jako balíčku NuGet v sadě Visual Studio:
      1. Klikněte pravým tlačítkem na Správce řešení.
      2. Klikněte na Spravovat balíčky NuGet...
      3. Vyhledání Newtonsoft.Json a instalace balíčku
  • 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

  1. 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;
    
  2. 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ů

  1. Vytvořte novou asynchronní funkci s názvem Request , která přebírá proměnné vytvořené výše.

  2. Nastavte protokol zabezpečení klienta a informace hlavičky pomocí objektu HttpClient . Nezapomeňte do hlavičky přidat klíč předplatného Ocp-Apim-Subscription-Key . Pak vytvořte StringContent objekt pro požadavek.

  3. 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

  1. Vytvořte novou funkci s názvem recognizeInk(). Vytvořte požadavek a odešlete ji voláním Request() funkce s vaším koncovým bodem, klíčem předplatného, adresou URL pro rozhraní API a daty digitálních tahů rukopisu.

  2. 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

  1. V hlavní metodě aplikace načtěte data JSON pomocí funkce vytvořené výše.

  2. 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: