Back to APIs

Signature Detection

{{el |capitalize:true}}

subscribe

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 )

How it works?

Need to know if document is signed or require a signature specimen from your customer form. 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

Demo

Check out the API results using samples provided below.

Image Courtesy : Google


Please wait!
Processing the document...

Please drag and drop files or click to browse.

Drag and Drop

or Click to browse files


Please wait!
Processing the document...

Your document is extracted successfully.

{{k}}

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


Documentation

POST

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

API Token

  Regenerate

{{tokenDisplay}}  

Usage and Code Samples

curl --location --request POST '{{url}}/api/v1/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/v1/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/v1/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/v1/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/v1/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/v1/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/v1/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 ([email protected]) {
	warn "Exception when calling DefaultApi->apiV1LengthOfStayPredictionPost: [email protected]";
}
																				
import requests
url = "{{url}}/api/v1/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 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”