Udostępnij za pośrednictwem


Szybki start: rozpoznawanie cyfrowego pisma odręcznego za pomocą interfejsu API REST rozpoznawania pisma odręcznego i języka Java

Uwaga

Interfejs API rozpoznawania pisma odręcznego zakończył swoją wersję zapoznawcza 26 sierpnia 2020 r. Jeśli masz istniejące zasoby rozpoznawania pisma odręcznego, możesz nadal używać ich do momentu, aż usługa zostanie w pełni wycofana 31 stycznia 2021 r.

Użyj tego przewodnika Szybki start, aby rozpocząć korzystanie z interfejsu API rozpoznawania pisma odręcznego na cyfrowych pociągnięciach pisma odręcznego. Ta aplikacja Java wysyła żądanie interfejsu API zawierające dane pociągnięcia pisma odwrotowego w formacie JSON i pobiera odpowiedź.

Chociaż ta aplikacja jest napisana w języku Java, interfejs API jest usługą internetową zgodną z wzorcem REST i większością języków programowania.

Zazwyczaj interfejs API jest wywoływany z cyfrowej aplikacji pisma odręcznego. Ten przewodnik Szybki start wysyła dane pociągnięcia pisma odręcznego dla następującego przykładu odręcznego z pliku JSON.

obraz tekstu odręcznego

Kod źródłowy tego przewodnika Szybki start można znaleźć w witrynie GitHub.

Wymagania wstępne

Tworzenie zasobu rozpoznawania pisma odręcznego

Uwaga

Punkty końcowe dla zasobów utworzonych po 1 lipca 2019 r. używają niestandardowego formatu poddomeny pokazanego poniżej. Aby uzyskać więcej informacji i pełną listę regionalnych punktów końcowych, zobacz Niestandardowe nazwy poddomeny dla usług Cognitive Services.

Usługi Azure Cognitive Services są reprezentowane przez subskrybowane zasoby platformy Azure. Utwórz zasób rozpoznawania pisma odręcznego przy użyciu Azure Portal.

Po utworzeniu zasobu pobierz punkt końcowy i klucz, otwierając zasób na Azure Portal, a następnie klikając pozycję Szybki start.

Utwórz dwie zmienne środowiskowe:

  • INK_RECOGNITION_SUBSCRIPTION_KEY — Klucz subskrypcji do uwierzytelniania żądań.

  • INK_RECOGNITION_ENDPOINT — punkt końcowy zasobu. Będzie to wyglądać następująco:
    https://<your-custom-subdomain>.api.cognitive.microsoft.com

Tworzenie nowej aplikacji

  1. Utwórz nowy projekt w języku Java w ulubionym środowisku IDE lub edytorze i zaimportuj poniższe biblioteki.

    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. Utwórz zmienne dla klucza subskrypcji, punktu końcowego i pliku JSON. Punkt końcowy zostanie później dołączony do identyfikatora URI rozpoznawania pisma odręcznego.

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

Tworzenie funkcji do wysyłania żądań

  1. Utwórz nową funkcję o nazwie sendRequest() , która pobiera zmienne utworzone powyżej. Następnie wykonaj poniższe czynności.

  2. CloseableHttpClient Utwórz obiekt, który może wysyłać żądania do interfejsu API. Wyślij żądanie do HttpPut obiektu żądania, łącząc punkt końcowy i adres URL rozpoznawania pisma odręcznego.

  3. Użyj funkcji żądania setHeader() , aby ustawić Content-Type nagłówek na application/json, a następnie dodać klucz subskrypcji do nagłówka Ocp-Apim-Subscription-Key .

  4. Użyj funkcji żądania setEntity() do wysłania danych.

  5. Użyj funkcji klienta execute() , aby wysłać żądanie i zapisać je w CloseableHttpResponse obiekcie.

  6. HttpEntity Utwórz obiekt do przechowywania zawartości odpowiedzi. Pobierz zawartość za pomocą polecenia getEntity(). Jeśli odpowiedź nie jest pusta, zwróć ją.

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

Wysyłanie żądania rozpoznawania pisma odkowego

Utwórz metodę o nazwie recognizeInk() , aby rozpoznać dane pociągnięcia pisma odręcznego. Wywołaj metodę utworzoną sendRequest() powyżej przy użyciu danych punktu końcowego, adresu URL, klucza subskrypcji i json. Pobierz wynik i wydrukuj go w konsoli.

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

Załaduj dane cyfrowego pisma oddyskuj i wyślij żądanie

  1. W głównej metodzie aplikacji odczyt w pliku JSON zawierającym dane, które zostaną dodane do żądań.

  2. Wywołaj funkcję rozpoznawania pisma odkowego utworzoną powyżej.

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

Uruchamianie aplikacji i wyświetlanie odpowiedzi

Uruchom aplikację. Pomyślna odpowiedź jest zwracana w formacie JSON. Odpowiedź JSON można również znaleźć w witrynie GitHub.

Następne kroki

Aby zobaczyć, jak działa interfejs API rozpoznawania pisma odręcznego w cyfrowej aplikacji pisma odręcznego, zapoznaj się z następującymi przykładowymi aplikacjami w usłudze GitHub: