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.
Kod źródłowy tego przewodnika Szybki start można znaleźć w witrynie GitHub.
Wymagania wstępne
Zestaw Java™ Development Kit (JDK) 7 lub nowszy.
Importowanie tych bibliotek z repozytorium Maven
- Kod JSON w pakiecie Java
- Pakiet Apache HttpClient
Przykładowe dane pociągnięcia pisma odkowego dla tego przewodnika Szybki start można znaleźć w witrynie GitHub.
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
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;
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ń
Utwórz nową funkcję o nazwie
sendRequest()
, która pobiera zmienne utworzone powyżej. Następnie wykonaj poniższe czynności.CloseableHttpClient
Utwórz obiekt, który może wysyłać żądania do interfejsu API. Wyślij żądanie doHttpPut
obiektu żądania, łącząc punkt końcowy i adres URL rozpoznawania pisma odręcznego.Użyj funkcji żądania
setHeader()
, aby ustawićContent-Type
nagłówek naapplication/json
, a następnie dodać klucz subskrypcji do nagłówkaOcp-Apim-Subscription-Key
.Użyj funkcji żądania
setEntity()
do wysłania danych.Użyj funkcji klienta
execute()
, aby wysłać żądanie i zapisać je wCloseableHttpResponse
obiekcie.HttpEntity
Utwórz obiekt do przechowywania zawartości odpowiedzi. Pobierz zawartość za pomocą poleceniagetEntity()
. 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
W głównej metodzie aplikacji odczyt w pliku JSON zawierającym dane, które zostaną dodane do żądań.
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: