التشغيل السريع: التعرف على الحبر الرقمي باستخدام واجهة برمجة تطبيقات REST ل Ink Recognizer وJava

ملاحظة

انتهت معاينة واجهة برمجة تطبيقات Ink Recognizer في 26 أغسطس 2020. إذا كان لديك موارد Ink Recognizer موجودة، يمكنك الاستمرار في استخدامها حتى يتم إيقاف الخدمة بالكامل في 31 يناير 2021.

استخدم هذا التشغيل السريع لبدء استخدام واجهة برمجة تطبيقات Ink Recognizer على ضغطات الحبر الرقمي. يرسل تطبيق Java هذا طلب API يحتوي على بيانات ضغطة الحبر بتنسيق JSON، ويحصل على الاستجابة.

في حين أن هذا التطبيق مكتوب بلغة Java، فإن واجهة برمجة التطبيقات هي خدمة ويب RESTful متوافقة مع معظم لغات البرمجة.

عادة ما تقوم باستدعاء واجهة برمجة التطبيقات من تطبيق الكتابة بالحبر الرقمي. يرسل هذا التشغيل السريع بيانات ضغطة الحبر للعينة المكتوبة بخط اليد التالية من ملف JSON.

صورة لنص مكتوب بخط اليد

يمكن إيجاد التعليمة البرمجية المصدر لهذه البداية السريعة على GitHub.

المتطلبات الأساسية

إنشاء مورد Ink Recognizer

ملاحظة

تستخدم نقاط النهاية للموارد التي تم إنشاؤها بعد 1 يوليو 2019 تنسيق المجال الفرعي المخصص الموضح أدناه. لمزيد من المعلومات وقائمة كاملة بنقاط الانتهاء الإقليمية، راجع أسماء النطاقات الفرعية المخصصة للخدمات المعرفية.

يتم تمثيل خدمات Azure المعرفية بواسطة موارد Azure التي تشترك فيها. إنشاء مورد ل Ink Recognizer باستخدام مدخل Microsoft Azure.

بعد إنشاء مورد، احصل على نقطة النهاية والمفتاح عن طريق فتح المورد الخاص بك على مدخل Microsoft Azure، والنقر فوق البدء السريع.

إنشاء متغيرين للبيئة:

  • INK_RECOGNITION_SUBSCRIPTION_KEY - مفتاح الاشتراك لمصادقة طلباتك.

  • INK_RECOGNITION_ENDPOINT - نقطة النهاية لموردك. سيبدو هكذا:
    https://<your-custom-subdomain>.api.cognitive.microsoft.com

إنشاء تطبيق جديد

  1. أنشئ مشروع Java جديداً في بيئة التطوير المتكاملة أو المحرر المفضل لك واستورد المكتبات التالية.

    import org.apache.http.HttpEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpPut;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    import com.fasterxml.jackson.core.JsonParseException;
    import com.fasterxml.jackson.databind.JsonMappingException;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.util.HashMap;
    import java.util.Map;
    
  2. إنشاء متغيرات لمفتاح الاشتراك ونقطة النهاية وملف JSON. سيتم إلحاق نقطة النهاية لاحقا ب Ink recognizer URI.

    // Add your Azure Ink Recognition subscription key to your environment variables.
    private static final String subscriptionKey = System.getenv("INK_RECOGNITION_SUBSCRIPTION_KEY");
    
    // Add your Azure Ink Recognition endpoint to your environment variables.
    public static final String rootUrl = System.getenv("INK_RECOGNITION_ENDPOINT");
    public static final String inkRecognitionUrl = "/inkrecognizer/v1.0-preview/recognize";
    // Replace the dataPath string with a path to the JSON formatted ink stroke data file.
    private static final String dataPath = "PATH_TO_INK_STROKE_DATA";
    

إنشاء دالة لإرسال الطلبات

  1. إنشاء دالة جديدة تسمى sendRequest() تأخذ المتغيرات التي تم إنشاؤها أعلاه. ثم قم بتنفيذ الخطوات التالية.

  2. إنشاء كائن CloseableHttpClient يمكنه إرسال طلبات إلى واجهة برمجة التطبيقات. أرسل الطلب إلى كائن HttpPut طلب عن طريق دمج نقطة النهاية الخاصة بك، وعنوان URL Ink Recognizer.

  3. استخدم دالة الطلب setHeader() لتعيين العنوان إلى application/json، وأضف مفتاح الاشتراك إلى Ocp-Apim-Subscription-KeyContent-Type العنوان.

  4. استخدم دالة الطلب setEntity() إلى البيانات التي سيتم إرسالها.

  5. استخدم دالة العميل execute() لإرسال الطلب وحفظه إلى كائن CloseableHttpResponse .

  6. إنشاء كائن HttpEntity لتخزين محتوى الاستجابة. احصل على المحتوى باستخدام getEntity(). إذا لم تكن الاستجابة فارغة، فسترجعها.

    static String sendRequest(String endpoint, String apiAddress, String subscriptionKey, String requestData) {
        try (CloseableHttpClient client = HttpClients.createDefault()) {
            HttpPut request = new HttpPut(endpoint + apiAddress);
            // Request headers.
            request.setHeader("Content-Type", "application/json");
            request.setHeader("Ocp-Apim-Subscription-Key", subscriptionKey);
            request.setEntity(new StringEntity(requestData));
            try (CloseableHttpResponse response = client.execute(request)) {
                HttpEntity respEntity = response.getEntity();
                if (respEntity != null) {
                    return EntityUtils.toString(respEntity, "utf-8");
                }
            } catch (Exception respEx) {
                respEx.printStackTrace();
            }
        } catch (IOException ex) {
            System.err.println("Exception on Anomaly Detector: " + ex.getMessage());
            ex.printStackTrace();
        }
        return null;
    }
    

إرسال طلب التعرف على الحبر

إنشاء أسلوب يسمى recognizeInk() للتعرف على بيانات ضغطة الحبر. استدعاء الأسلوب الذي sendRequest() تم إنشاؤه أعلاه باستخدام نقطة النهاية وعنوان url ومفتاح الاشتراك وبيانات json. احصل على النتيجة، واطبعها إلى وحدة التحكم.

static void recognizeInk(String requestData) {
    System.out.println("Sending an Ink recognition request.");

    String result = sendRequest(rootUrl, inkRecognitionUrl, subscriptionKey, requestData);
    
    // Pretty-print the JSON result
    try {
        ObjectMapper objectMapper = new ObjectMapper();
        Map<String, Object> response = objectMapper.readValue(result, HashMap.class);
        System.out.println(objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(response));
    } catch (JsonParseException e) {
        e.printStackTrace();
    } catch (JsonMappingException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }  
}

تحميل بيانات الحبر الرقمي وإرسال الطلب

  1. في الأسلوب الرئيسي للتطبيق الخاص بك، اقرأ في ملف JSON الذي يحتوي على البيانات التي ستتم إضافتها إلى الطلبات.

  2. استدعاء دالة التعرف على الحبر التي تم إنشاؤها أعلاه.

    public static void main(String[] args) throws Exception {
    
        String requestData = new String(Files.readAllBytes(Paths.get(dataPath)), "utf-8");
        recognizeInk(requestData);
    }
    

تشغيل التطبيق وعرض الاستجابة

شغّل التطبيق. يتم إرجاع استجابة ناجحة بتنسيق JSON. يمكنك أيضا العثور على استجابة JSON على GitHub.

الخطوات التالية

لمعرفة كيفية عمل واجهة برمجة تطبيقات التعرف على الحبر في تطبيق الكتابة بالحبر الرقمي، ألق نظرة على نماذج التطبيقات التالية على GitHub: