Hızlı Başlangıç: Mürekkep Tanıma REST API ve Java ile dijital mürekkep tanıma

Not

Mürekkep Tanıma API'si önizlemesini 26 Ağustos 2020'de sona erdirdi. Mevcut Mürekkep Tanıma kaynaklarınız varsa, hizmet 31 Ocak 2021'de tamamen kullanımdan kaldırana kadar bunları kullanmaya devam edebilirsiniz.

Dijital mürekkep vuruşlarında Mürekkep Tanıma API'sini kullanmaya başlamak için bu hızlı başlangıcı kullanın. Bu Java uygulaması JSON biçimli mürekkep vuruşu verilerini içeren bir API isteği gönderir ve yanıtı alır.

Bu uygulama Java dilinde yazılmış olsa da, API çoğu programlama diliyle uyumlu bir RESTful web hizmetidir.

Normalde API'yi dijital mürekkep oluşturma uygulamasından çağırırsınız. Bu hızlı başlangıç, bir JSON dosyasından aşağıdaki el yazısı örneği için mürekkep vuruşu verileri gönderir.

el yazısı metnin resmi

Bu hızlı başlangıcın kaynak kodu GitHub'da bulunabilir.

Önkoşullar

Mürekkep Tanıma kaynağı oluşturma

Not

1 Temmuz 2019'da oluşturulan kaynakların uç noktaları aşağıda gösterilen özel alt etki alanı biçimini kullanır. Daha fazla bilgi ve bölgesel uç noktaların tam listesi için bkz. Bilişsel Hizmetler için özel alt etki alanı adları.

Azure Bilişsel Hizmetler, abone olduğunuz Azure kaynaklarıyla temsil edilir. Azure portal kullanarak Mürekkep Tanıma için bir kaynak oluşturun.

Kaynak oluşturduktan sonra, Azure portal kaynağınızı açıp Hızlı başlangıç'a tıklayarak uç noktanızı ve anahtarınızı alın.

İki ortam değişkeni oluşturun:

  • INK_RECOGNITION_SUBSCRIPTION_KEY - İsteklerinizin kimliğini doğrulamak için abonelik anahtarı.

  • INK_RECOGNITION_ENDPOINT - Kaynağınızın uç noktası. Şu şekilde görünür:
    https://<your-custom-subdomain>.api.cognitive.microsoft.com

Yeni uygulama oluşturma

  1. Sık kullandığınız IDE ortamında veya düzenleyicide yeni bir Java projesi oluşturun ve aşağıdaki kitaplıkları içeri aktarın.

    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. Abonelik anahtarınız, uç noktanız ve JSON dosyanız için değişkenler oluşturun. Uç nokta daha sonra Mürekkep tanıma URI'sine eklenir.

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

İstek göndermek için işlev oluşturma

  1. Yukarıda oluşturulan değişkenleri alan adlı sendRequest() yeni bir işlev oluşturun. Ardından aşağıdaki adımları gerçekleştirin.

  2. API'ye istek gönderebilen bir CloseableHttpClient nesne oluşturun. Uç noktanızı ve Mürekkep Tanıma URL'sini birleştirerek isteği bir HttpPut istek nesnesine gönderin.

  3. üst bilgisini olarak ayarlamak Content-Type ve abonelik anahtarınızı üst bilgisine application/jsoneklemek için isteğin setHeader()Ocp-Apim-Subscription-Key işlevini kullanın.

  4. Gönderilecek veriler için isteğin setEntity() işlevini kullanın.

  5. İsteği göndermek ve bir CloseableHttpResponse nesneye kaydetmek için istemcinin execute() işlevini kullanın.

  6. Yanıt içeriğini depolamak için bir HttpEntity nesne oluşturun. ile getEntity()içeriği alın. Yanıt boş değilse döndür.

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

Mürekkep tanıma isteği gönderme

Mürekkep vuruşu verilerinizi tanımak için adlı recognizeInk() bir yöntem oluşturun. sendRequest() Uç nokta, url, abonelik anahtarı ve json verilerinizle yukarıda oluşturulan yöntemini çağırın. Sonucu alın ve konsola yazdırın.

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

Dijital mürekkep verilerinizi yükleme ve isteği gönderme

  1. Uygulamanızın ana yönteminde, isteklere eklenecek verileri içeren JSON dosyasında okuyun.

  2. Yukarıda oluşturulan mürekkep tanıma işlevini çağırın.

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

Uygulamayı çalıştırma ve yanıtı görüntüleme

Uygulamayı çalıştırın. Başarılı bir yanıt JSON biçiminde döndürülür. JSON yanıtını GitHub'da da bulabilirsiniz.

Sonraki adımlar

Mürekkep Tanıma API'sinin dijital mürekkep oluşturma uygulamasında nasıl çalıştığını görmek için GitHub'da aşağıdaki örnek uygulamalara göz atın: