back  Back to APIs

Signature Detection

{{el |capitalize:true}}

{{username ? 'subscribe' : 'start free trial'}}

Remaining API Counts:

{{(token.limit-token.counter) || '0' }}
Remaining API Count : {{(token.limit-token.counter) || '0' }}

API Overview

All financial institutions obtain specimen signatures from various forms or documents in order to use them for signature verification at a later stage. Arya’s signature detection module works extensively on analysing any given image to localise and extract snippets of signature present at any location. Our module has the capability to detect multiple snippets in a single document and also returns a confidence score associated with each detected signature.

try it out

( Click on the image to enlarge )

More than just the API

Explore the top features of Signature Detection

Localise and extract snippets of signatures present at any location

Generalised across multiple documents

Detects multiple snippets in a single document

Confidence score associated with each detected signature

How it works?

Need to know if the document has been signed or if a signature specimen from your customer form is required? You can do it all with a single API.

Transforming operations and customer experiences

Documents containing signatures can vary in size, format, alignment and location of signatures. They can also be masked behind text or might not be visible clearly because of noise. The signature detection module works extensively on analysing any given image to localize and extract snippets of signature present at any location.

Read More

Try the API

Please drag and drop files or click to browse.

Drag and Drop

or Click to browse files

Please wait...

Samples to try

Check out the API results using samples provided below.

Image Courtesy : Google

Your document is processed successfully.

{{k}}

Confidence score : {{v.confidence | number : 2}} %


Documentation

POST

{{url}}/api/{{api_version}}/signature-detection

API Token

  Regenerate

{{tokenDisplay}}  

Usage and Code Samples

curl --location --request POST '{{url}}/api/{{api_version}}/signature-detection' \
--header 'token: < your private token >' \
--header 'content-type: application/json' \
--data-raw '{
	"output_format":'snippets',
	"doc_base64": '< base64 string of document >',
	"req_id": '< req id string >'
}'
																						
OkHttpClient client = new OkHttpClient().newBuilder().build();
  MediaType mediaType = MediaType.parse("application/javascript");
  RequestBody body = RequestBody.create(mediaType, "{ "output_format":'snippets', "doc_base64": '< base64 string of document >',"req_id": '< req id string >'  }");
  Request request = new Request.Builder()
	.url("{{url}}/api/{{api_version}}/signature-detection")
	.method("POST", body)
	.addHeader("token", "< your private token >")
	.addHeader("content-type", "application/json")
	.build();
  Response response = client.newCall(request).execute();
require "uri"
require "net/http"
url = URI("{{url}}/api/{{api_version}}/signature-detection")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["token"] = "< your private token >"
request["content-type"] = "application/json"
request.body = "{"output_format":'snippets', "doc_base64": '< base64 string of document >',"req_id": < req id string >  }"
response = https.request(request)
puts response.read_body
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
  curl_easy_setopt(curl, CURLOPT_URL, "{{url}}/api/{{api_version}}/signature-detection");
  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
  curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
  struct curl_slist *headers = NULL;
  headers = curl_slist_append(headers, "token: < your private token >");
  headers = curl_slist_append(headers, "content-type: application/json");
  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
  const char *data = "{"output_format":'snippets', "doc_base64": '< base64 string of document >',"req_id": < req id string >  }";
  curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
  res = curl_easy_perform(curl);
}
curl_easy_cleanup(curl);
																					
var request = require('request');
var options = {
  'method': 'POST',
  'url': '{{url}}/api/{{api_version}}/signature-detection',
  'headers': {
	'token': '< your private token >',
	'content-type':'application/json'
  },
  body: '{"output_format":"snippets", "doc_base64": "< base64 string of document >","req_id": < req id string >  }'
	};
	request(options, function (error, response) {
	if (error) throw new Error(error);
console.log(response.body);
});
var client = new RestClient("{{url}}/api/{{api_version}}/signature-detection");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("token", "< your private token >");
request.AddHeader("content-type", "application/json");
var body = @"{" + "" +
@"    "output_format": 'snippets'," + "" +
@"    "doc_base64": '< base64 string of document >'," + "" +
@"    "req_id": < req id string >" + "" +
@"  }";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{url}}/api/{{api_version}}/signature-detection');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
  'token' => '< your private token >',
  'content-type' => 'application/json'
));
$request->setBody('{"output_format":"snippets", "doc_base64": "< base64 string of document >","req_id": < req id string >  }');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
	echo $response->getBody();
  }
  else {
	echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
	$response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
?>
use Data::Dumper;
use WWW::SwaggerClient::Configuration;
use WWW::SwaggerClient::DefaultApi;
my $api_instance = WWW::SwaggerClient::DefaultApi->new();
my $body = WWW::SwaggerClient::Object::V1_lengthofstayprediction_body->new(); # V1_lengthofstayprediction_body | 
my $token = token_example; # String | 
eval { 
	my $result = $api_instance->apiV1LengthOfStayPredictionPost(body => $body, token => $token, content-type=>'application/json');
	print Dumper($result);
};
if ($@) {
	warn "Exception when calling DefaultApi->apiV1LengthOfStayPredictionPost: $@";
}
																				
import requests
url = "{{url}}/api/{{api_version}}/signature-detection"
payload = {"output_format":"snippets", "doc_base64": "< base64 string of document >", "req_id": < req id string >  }
headers = {
  'token': '< your private token >',
  'content-type':'application/json'
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
	

Request Parameters

Header parameters

Name Description
token
String

Body parameters

Name Description
body {
  "output_format" : < string >,
  "req_id" : < string >,
  "doc_base64": < base64 encoded string >
}

Response Parameters

Status: 200 - API Request Successful

Body parameters

Name Description
body {
  "req_id" : < string >,
  "success" : < boolean >,
  "error_message" : < string >,
  "signs" : < dict >
}

Field Details

Request Field Details

Fields Values/Description
req_id Unique request ID used for processing requests
output_format 'coordinates' or 'snippets' for required output format. (Default value is 'snippets')
doc_base64 Base64 encoded string of the document

Response Field Details

Fields Values/Description
req_id Corresponding request id
success Flag if the request is processed successfully
error_message If success is False then: Error message
signs
  • Dictionary with number of keys equal to number of signatures detected. For example, signs dictionary can have keys such as “Sign_1”, “Sign_2”, “Sign_3”, and so on
  • signs[“Sign_1”] is a dictionary with keys as bounding box coordinates and confidence scores:
    1. “left”
    2. “top”
    3. “height”
    4. “width”
    5. “confidence”