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.
A rövid útmutató forráskódja a GitHubon található.
Előfeltételek
A Visual Studio 2017 bármely kiadása.
-
- A Newtonsoft.Json nuGet-csomagként való telepítése a Visual Studióban:
- Kattintson a jobb gombbal a Megoldáskezelőre
- Kattintson a NuGet-csomagok kezelése...
- A csomag megkeresése
Newtonsoft.Json
és telepítése
- A Newtonsoft.Json nuGet-csomagként való telepítése a Visual Studióban:
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
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;
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
Hozzon létre egy új aszinkron függvényt
Request
, amely a fent létrehozott változókat használja.Á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 aOcp-Apim-Subscription-Key
fejléchez. Ezután hozzon létre egyStringContent
objektumot a kéréshez.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
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 aRequest()
végponttal, az előfizetői azonosítóval, az API URL-címével és a digitális tollvonás-adatokkal.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
Az alkalmazás fő metódusában töltse be a JSON-adatokat a fent létrehozott függvénnyel.
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: