Présence de texte et reconnaissance optique des caractères
Lorsqu’une image est fournie, le service de reconnaissance de caractères optique/présence de texte peut indiquer si du texte est présent dans l’image. Si du texte est présent, la reconnaissance optique des caractères peut renvoyer le texte.
L’image suivante a été utilisée dans l’exemple de requête illustré dans ce document :
Format d’API
POST /services/v2/predict
Requête
La requête suivante vérifie si du texte est présent en fonction de l’image d’entrée fournie dans le payload. Pour plus d’informations sur les paramètres d’entrée affichés, reportez-vous au tableau ci-dessous de l’exemple de payload.
Exécution avec image intégrée :
curl -w'\n' -i -X POST https://sensei.adobe.io/services/v2/predict \
-H 'Prefer: respond-async, wait=59' \
-H "x-api-key: $API_KEY" \
-H "content-type: multipart/form-data" \
-H "authorization: Bearer $API_TOKEN" \
-F file=@sample_image.png \
-F 'contentAnalyzerRequests={
"sensei:name": "Feature:cintel-object-detection:Service-b9ace8b348b6433e9e7d82371aa16690",
"sensei:invocation_mode": "asynchronous",
"sensei:invocation_batch": false,
"sensei:engines": [
{
"sensei:execution_info": {
"sensei:engine": "Feature:cintel-object-detection:Service-b9ace8b348b6433e9e7d82371aa16690"
},
"sensei:inputs": {
"documents": [
{
"sensei:multipart_field_name": "file",
"dc:format": "image/jpg"
}
]
},
"sensei:params": {
"correct_with_dictionary": true,
"min_probability": 0.2,
"min_relevance": 0.01,
"filter_with_dictionary": true
},
"sensei:outputs":{
"result" : {
"sensei:multipart_field_name" : "result",
"dc:format": "application/json"
}
}
}
]
}'
Réponse
Une réponse réussie renvoie le texte qui a été détecté dans la variable tags
liste pour chaque image transmise dans la requête. Si aucune image ne contient de texte, is_text_present
est 0 et tags
est une liste vide.
[result0, result1, …]: liste des réponses pour chaque document d’entrée. Chaque résultat est un dict avec des clés :
- request_element_id: index correspondant au fichier d’entrée pour cette réponse, 0 pour la première image de la liste de documents de la requête, 1 pour la suivante, etc.
- balises : liste des dictionnaires, chaque dictionnaire comporte deux clés : texte, qui est un mot reconnu de l’image, et sa pertinence, qui est calculé comme la fraction de la zone du cadre de sélection du texte extrait par rapport à l’image complète. 0,01 correspond à un texte occupant au moins 1 % de l’image.
- is_text_present : 0 ou 1 selon si du texte est présent dans l’image. Si la valeur des balises est 0, la liste est vide.
{
"contentAnalyzerResponse": {
"statuses": [
{
"sensei:engine": "Feature:cintel-object-detection:Service-b9ace8b348b6433e9e7d82371aa16690",
"invocations": [
{
"sensei:outputs": {
"result": {
"sensei:multipart_field_name": "result",
"dc:format": "application/json"
}
},
"message": null,
"status": "200"
}
]
}
],
"request_id": "dttklFR7DPtMtEmjlRSx5BYP5WGg3tTx"
},
"result": [
{
"is_text_present": 1,
"tags": [
{
"text": "yosemite",
"relevance": 0.06
}
],
"request_element_id": 0
}
]
}
Requête
La requête suivante vérifie si du texte est présent en fonction de l’image d’entrée fournie dans le payload. Pour plus d’informations sur les paramètres d’entrée affichés, reportez-vous au tableau ci-dessous de l’exemple de payload.
Exécution avec URL :
curl -w'\n' -i -X POST https://sensei.adobe.io/services/v2/predict \
-H 'Prefer: respond-async, wait=59' \
-H "x-api-key: $API_KEY" \
-H "content-type: multipart/form-data" \
-H "authorization: Bearer $API_TOKEN" \
-F 'contentAnalyzerRequests={
"sensei:name": "Feature:cintel-object-detection:Service-b9ace8b348b6433e9e7d82371aa16690",
"sensei:invocation_mode": "asynchronous",
"sensei:invocation_batch": false,
"sensei:engines": [
{
"sensei:execution_info": {
"sensei:engine": "Feature:cintel-object-detection:Service-b9ace8b348b6433e9e7d82371aa16690"
},
"sensei:inputs": {
"documents": [
{
"repo:path": <IMG_URL_PATH>,
"sensei:repoType": "HTTP",
"dc:format": "image/jpg"
}
]
},
"sensei:params": {
"correct_with_dictionary": true
},
"sensei:outputs":{
"result" : {
"sensei:multipart_field_name" : "result",
"dc:format": "application/json"
}
}
}
]
}'
{
"contentAnalyzerResponse": {
"statuses": [
{
"sensei:engine": "Feature:cintel-object-detection:Service-b9ace8b348b6433e9e7d82371aa16690",
"invocations": [
{
"sensei:outputs": {
"result": {
"sensei:multipart_field_name": "result",
"dc:format": "application/json"
}
},
"message": null,
"status": "200"
}
]
}
],
"request_id": "ZbdhcK0JqS4Wg1wGdlEHGR3JOm530YNn"
},
"result": [
{
"is_text_present": 0,
"tags": [],
"request_element_id": 0
}
]
}
documents
sensei:multipart_field_name
repo:path
sensei:repoType
dc:format
correct_with_dictionary
filter_with_dictionary
min_probability
min_relevance
repo:path
sensei:repoType
sensei:multipart_field_name
dc:format
"image/jpeg",
"image/png",
"image/tiff"