Megosztás a következőn keresztül:


Rövid útmutató: Digitális festék felismerése az Ink Recognizer REST API és a Java használatával

Megjegyzés

Az Ink Recognizer API előzetes verziója 2020. augusztus 26-án véget ért. Ha rendelkezik meglévő Ink Recognizer-erőforrásokkal, továbbra is használhatja őket, amíg a szolgáltatás 2021. január 31-én teljesen ki nem áll.

Ezzel a rövid útmutatóval megkezdheti az Ink Recognizer API használatát digitális tollvonásokon. Ez a Java-alkalmazás egy JSON-formátumú tollvonás-adatokat tartalmazó API-kérést küld, és megkapja a választ.

Bár ez az alkalmazás Java nyelven van megírva, az API egy RESTful webszolgáltatás, amely kompatibilis a legtöbb programozási nyelvvel.

Általában egy digitális tintaalkalmazásból hívná meg az API-t. Ez a rövid útmutató kézírásos tollvonás-adatokat küld a következő kézzel írt mintához egy JSON-fájlból.

kézzel írt szöveg képe

A rövid útmutató forráskódja a GitHubon található.

Előfeltételek

Ink Recognizer-erőforrás létrehozása

Megjegyzés

A 2019. július 1. után létrehozott erőforrások végpontjai az alább látható egyéni altartomány-formátumot használják. További információkért és a regionális végpontok teljes listájáért tekintse meg a Cognitive Services egyéni altartományneveit.

Az Azure Cognitive Servicest az Ön által előfizetett Azure-erőforrások képviselik. Hozzon létre egy erőforrást az Ink Recognizerhez a Azure Portal használatával.

Miután létrehozott egy erőforrást, szerezze be a végpontot és a kulcsot úgy, hogy megnyitja az erőforrást a Azure Portal, majd a Gyors üzembe helyezés gombra kattint.

Hozzon létre két környezeti változót:

  • INK_RECOGNITION_SUBSCRIPTION_KEY – A kérések hitelesítéséhez szükséges előfizetői azonosító.

  • INK_RECOGNITION_ENDPOINT – Az erőforrás végpontja. Ez így fog kinézni:
    https://<your-custom-subdomain>.api.cognitive.microsoft.com

Új alkalmazás létrehozása

  1. Hozzon létre egy új Java-projektet a kedvenc IDE-környezetében vagy szerkesztőjében, és importálja az alábbi kódtárakat.

    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. Hozzon létre változókat az előfizetői azonosítóhoz, a végponthoz és a JSON-fájlhoz. A végpont később hozzá lesz fűzve az Ink Recognizer URI-hoz.

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

Függvény létrehozása kérések küldéséhez

  1. Hozzon létre egy új függvényt sendRequest() , amely a fent létrehozott változókat használja. Ezután hajtsa végre a következő lépéseket.

  2. Hozzon létre egy CloseableHttpClient objektumot, amely képes kéréseket küldeni az API-nak. Küldje el a kérést egy HttpPut kérelemobjektumnak a végpont és az Ink Recognizer URL-cím kombinálásával.

  3. A kérés függvényével setHeader() állítsa a fejlécet a Content-Type fejlécre application/json, és adja hozzá az előfizetői azonosítót a Ocp-Apim-Subscription-Key fejléchez.

  4. Használja a kérés függvényét setEntity() az elküldendő adatokhoz.

  5. Az ügyfél függvényével execute() küldje el a kérést, és mentse egy CloseableHttpResponse objektumba.

  6. Hozzon létre egy HttpEntity objektumot a választartalom tárolásához. A tartalom lekérése a következővel getEntity(): . Ha a válasz nem üres, adja vissza.

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

Tintafelismerési kérés küldése

Hozzon létre egy metódust recognizeInk() , amely felismeri a tollvonás-adatokat. Hívja meg a sendRequest() fent létrehozott metódust a végponttal, az URL-címmel, az előfizetői azonosítóval és a JSON-adatokkal. Kérje le az eredményt, és nyomtassa ki a konzolra.

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

Töltse be a digitális tintaadatokat, és küldje el a kérést

  1. Az alkalmazás fő metódusában olvassa be a kérésekhez hozzáadandó adatokat tartalmazó JSON-fájlt.

  2. Hívja meg a fent létrehozott tintafelismerési függvényt.

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

Futtassa az alkalmazást, és tekintse meg a választ

Futtassa az alkalmazást. A rendszer JSON formátumban ad vissza egy sikeres választ. A JSON-választ a GitHubon is megtalálhatja.

Következő lépések

Ha szeretné megtekinteni, hogyan működik az Ink Recognition API egy digitális tintaalkalmazásban, tekintse meg a következő mintaalkalmazásokat a GitHubon: