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.
A rövid útmutató forráskódja a GitHubon található.
Előfeltételek
A Java™ fejlesztői készlet (JDK) 7-s vagy újabb verziója.
A kódtárak importálása a Maven-adattárból
A rövid útmutatóhoz tartozó példa szabadkézi vonások adatai a GitHubon találhatók.
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
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;
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
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.Hozzon létre egy
CloseableHttpClient
objektumot, amely képes kéréseket küldeni az API-nak. Küldje el a kérést egyHttpPut
kérelemobjektumnak a végpont és az Ink Recognizer URL-cím kombinálásával.A kérés függvényével
setHeader()
állítsa a fejlécet aContent-Type
fejlécreapplication/json
, és adja hozzá az előfizetői azonosítót aOcp-Apim-Subscription-Key
fejléchez.Használja a kérés függvényét
setEntity()
az elküldendő adatokhoz.Az ügyfél függvényével
execute()
küldje el a kérést, és mentse egyCloseableHttpResponse
objektumba.Hozzon létre egy
HttpEntity
objektumot a választartalom tárolásához. A tartalom lekérése a következővelgetEntity()
: . 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
Az alkalmazás fő metódusában olvassa be a kérésekhez hozzáadandó adatokat tartalmazó JSON-fájlt.
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: