Share via


Rövid útmutató: Digitális festék felismerése az Ink Recognizer REST API és a C használatával #

Megjegyzés

Az Ink Recognizer API előzetes verziója 2020. augusztus 26-án véget ért. Ha rendelkezik meglévő Ink Recognizer-erőforrásokkal, továbbra is használhatja őket, amíg a szolgáltatás 2021. január 31-én teljesen ki nem áll.

Ezzel a rövid útmutatóval megkezdheti a digitális tollvonások küldését az Ink Recognizer API-nak. Ez a C#-alkalmazás egy JSON-formátumú tollvonás-adatokat tartalmazó API-kérést küld, és megkapja a választ.

Bár ez az alkalmazás C# nyelven van megírva, az API egy RESTful-webszolgáltatás, amely kompatibilis a legtöbb programozási nyelvvel.

Általában egy digitális tintaalkalmazásból hívná meg az API-t. Ez a rövid útmutató kézírásos tollvonás-adatokat küld a következő kézzel írt mintához egy JSON-fájlból.

kézzel írt szöveg képe

A rövid útmutató forráskódja a GitHubon található.

Előfeltételek

  • A Visual Studio 2017 bármely kiadása.

  • Newtonsoft.Json

    • A Newtonsoft.Json nuGet-csomagként való telepítése a Visual Studióban:
      1. Kattintson a jobb gombbal a Megoldáskezelőre
      2. Kattintson a NuGet-csomagok kezelése...
      3. A csomag megkeresése Newtonsoft.Json és telepítése
  • Linux/MacOS használata esetén ez az alkalmazás a Mono használatával futtatható.

  • A rövid útmutatóhoz tartozó példa szabadkézi vonások adatai a GitHubon találhatók.

Ink Recognizer-erőforrás létrehozása

Megjegyzés

A 2019. július 1. után létrehozott erőforrások végpontjai az alább látható egyéni altartomány-formátumot használják. További információkért és a regionális végpontok teljes listájáért tekintse meg a Cognitive Services egyéni altartományneveit.

Az Azure Cognitive Servicest az Ön által előfizetett Azure-erőforrások képviselik. Hozzon létre egy erőforrást az Ink Recognizerhez a Azure Portal használatával.

Miután létrehozott egy erőforrást, szerezze be a végpontot és a kulcsot úgy, hogy megnyitja az erőforrást a Azure Portal, majd a Gyors üzembe helyezés gombra kattint.

Hozzon létre két környezeti változót:

  • INK_RECOGNITION_SUBSCRIPTION_KEY – A kérések hitelesítéséhez szükséges előfizetői azonosító.

  • INK_RECOGNITION_ENDPOINT – Az erőforrás végpontja. Ez így fog kinézni:
    https://<your-custom-subdomain>.api.cognitive.microsoft.com

Új alkalmazás létrehozása

  1. A Visual Studióban hozzon létre egy új konzolmegoldást, és adja hozzá a következő csomagokat.

    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. Hozzon létre változókat az előfizetői azonosítóhoz és a végponthoz, valamint a példa JSON-fájlt. A végpontot később kombináljuk inkRecognitionUrl az API eléréséhez.

    // 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";
    

Függvény létrehozása kérések küldéséhez

  1. Hozzon létre egy új aszinkron függvényt Request , amely a fent létrehozott változókat használja.

  2. Állítsa be az ügyfél biztonsági protokollját és fejlécadatait egy HttpClient objektum használatával. Mindenképpen adja hozzá az előfizetői azonosítót a Ocp-Apim-Subscription-Key fejléchez. Ezután hozzon létre egy StringContent objektumot a kéréshez.

  3. Küldje el a kérést a következővel PutAsync(): . Ha a kérés sikeres, adja vissza a választ.

    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}";
            }
        }
    }
    

Tintafelismerési kérés küldése

  1. Hozzon létre egy új függvényt .recognizeInk() Hozza létre a kérést, és küldje el a függvény meghívásával a Request() végponttal, az előfizetői azonosítóval, az API URL-címével és a digitális tollvonás-adatokkal.

  2. Deszerializálja a JSON-objektumot, és írja a konzolra.

    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);
    }
    

A digitális tintaadatok betöltése

Hozzon létre egy függvényt LoadJson() a tintaadatok JSON-fájljának betöltéséhez. Az "a" és JsonTextReader az "aStreamReader" használatával hozzon létre és JObject adja vissza.

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;
}

Az API-kérelem elküldése

  1. Az alkalmazás fő metódusában töltse be a JSON-adatokat a fent létrehozott függvénnyel.

  2. Hívja meg a recognizeInk() fent létrehozott függvényt. Az alkalmazás futtatása után a konzolablak nyitva tartására használható System.Console.ReadKey() .

    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();
    }
    

Futtassa az alkalmazást, és tekintse meg a választ

Futtassa az alkalmazást. A rendszer JSON formátumban ad vissza egy sikeres választ. A JSON-választ a GitHubon is megtalálhatja.

Következő lépések

Ha szeretné megtekinteni, hogyan működik az Ink Recognition API egy digitális tintaalkalmazásban, tekintse meg a következő mintaalkalmazásokat a GitHubon: