Sdílet prostřednictvím


Rychlý start: Rozpoznávání digitálního rukopisu pomocí rozhraní REST API služby Rozpoznávání rukopisu a Javy

Poznámka

Rozhraní API rozpoznávání rukopisu ukončilo svou verzi Preview 26. srpna 2020. Pokud máte existující prostředky Rozpoznávání rukopisu, můžete je dál používat, dokud služba nebude plně vyřazena 31. ledna 2021.

V tomto rychlém startu můžete začít používat rozhraní API rozpoznávání rukopisu na digitálních tahech rukopisu. Tato aplikace v Javě odešle požadavek rozhraní API obsahující data tahů rukopisem ve formátu JSON a získá odpověď.

I když je tato aplikace napsaná v Javě, rozhraní API je webová služba RESTful kompatibilní s většinou programovacích jazyků.

Obvykle byste volali rozhraní API z aplikace pro digitální rukopis. Tento rychlý start odešle data tahů rukopisu pro následující rukou psanou ukázku ze souboru JSON.

obrázek rukou psaného textu

Zdrojový kód pro tento rychlý start najdete na GitHubu.

Požadavky

Vytvoření prostředku Rozpoznávání rukopisu

Poznámka

Koncové body pro prostředky vytvořené po 1. červenci 2019 používají vlastní poddoménový formát zobrazený níže. Další informace a úplný seznam regionálních koncových bodů najdete v tématu Názvy vlastních subdomén služeb Cognitive Services.

Azure Cognitive Services jsou reprezentované prostředky Azure, které si předplatíte. Vytvořte prostředek pro rozpoznávání rukopisu pomocí Azure Portal.

Po vytvoření prostředku získejte koncový bod a klíč tak, že prostředek otevřete na Azure Portal a kliknete na Rychlý start.

Vytvořte dvě proměnné prostředí:

  • INK_RECOGNITION_SUBSCRIPTION_KEY – Klíč předplatného pro ověřování vašich požadavků.

  • INK_RECOGNITION_ENDPOINT – Koncový bod vašeho prostředku. Bude vypadat takto:
    https://<your-custom-subdomain>.api.cognitive.microsoft.com

Vytvoření nové aplikace

  1. V oblíbeném integrovaném vývojovém prostředí nebo editoru vytvořte nový projekt Java a naimportujte následující knihovny.

    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. Vytvořte proměnné pro klíč předplatného, koncový bod a soubor JSON. Koncový bod se později připojí k identifikátoru URI rozpoznávání rukopisu.

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

Vytvoření funkce pro odesílání požadavků

  1. Vytvořte novou funkci s názvem sendRequest() , která přebírá proměnné vytvořené výše. Pak proveďte následující kroky.

  2. Vytvořte CloseableHttpClient objekt, který může odesílat požadavky do rozhraní API. Odešlete požadavek na HttpPut objekt požadavku tím, že zkombinujete koncový bod a adresu URL rozpoznávání rukopisu.

  3. Pomocí funkce požadavku setHeader() nastavte hlavičku Content-Type na application/jsona přidejte klíč předplatného do hlavičky Ocp-Apim-Subscription-Key .

  4. Použijte funkci požadavku setEntity() na data, která se mají odeslat.

  5. Pomocí funkce klienta execute() odešlete požadavek a uložte ji do objektu CloseableHttpResponse .

  6. Vytvořte HttpEntity objekt pro uložení obsahu odpovědi. Získejte obsah pomocí getEntity(). Pokud odpověď není prázdná, vraťte ji.

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

Odeslání žádosti o rozpoznávání rukopisu

Vytvořte metodu volanou recognizeInk() k rozpoznávání dat tahů rukopisem. Volejte metodu vytvořenou výše pomocí vašeho koncového sendRequest() bodu, adresy URL, klíče předplatného a dat JSON. Získejte výsledek a vytiskněte ho do konzoly.

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

Načtení digitálních dat rukopisu a odeslání žádosti

  1. V hlavní metodě aplikace si přečtěte v souboru JSON obsahujícím data, která se přidají do požadavků.

  2. Zavolejte funkci rozpoznávání rukopisu vytvořenou výše.

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

Spuštění aplikace a zobrazení odpovědi

Spusťte aplikaci. Úspěšná odpověď se vrátí ve formátu JSON. Odpověď JSON najdete také na GitHubu.

Další kroky

Pokud chcete zjistit, jak funguje rozhraní API pro rozpoznávání rukopisu v digitální aplikaci rukopisu, podívejte se na následující ukázkové aplikace na GitHubu: