PhotoVerify Web API
Performs a liveness detection on the uploaded samples to verify whether they are recorded from a live person. Then performs a one-to-one comparison with the ID photo submitted in order to verify whether the live images and ID photo belong to the same person.
PhotoVerify is a BWS service, which uses one passport image from an ID document, and compares that to one or two "live" images of a person, to find out whether the persons shown are the same. Periocular biometrics is used as it gives better results than face (and allows for close-view recordings). No classes are created, no templates or patterns are stored. It fulfills all requirements for an anonymous ID proofing service.
To perform a photo verification, three images have to be provided:
- two live recorded images, which are sent to the quality-check where, among other things, the face detection is done. If the images are suitable, a live-detection is executed. Only if live-detection succeeds, the procedure is continued. Requirements: (1) images must be portrait, (2) minimum face size: 240x320, and (3) images must be captured based on BioID Motion Detection.
- a photo, typically a passport image from an ID document. If the photo also contains a face, it is compared to the live images. Requirements: (1) image must be portrait, and (2) minimum face size: 240x320. Note: There is no need to send the whole ID document. To crop the ID photo, one can always make use of the token image returned by our QualityCheck API by calling qualitycheck?full=true.
A decision about the similarity of the photo and the live images is made according to an accuracy level. The higher the accuracy level, the better the faces on the images must match. Higher accuracy levels are recommended, but lower accuracy levels can be used with low quality ID photos (e.g. scanned passport images), where a higher accuracy cannot be reached any more.
Five accuracy settings are defined from 1 to 5 with accuracy lower or equal to 1 being the worst (with a false acceptance rate of about 5%), and greater or equal to 5 being the best (with a false acceptance rate of about 0.05%). The default is 4, with a false acceptance rate of 0.25%.
Liveness detection is now optional
Since BWS version 2.7 the second live image (
liveimage2) is optional. If it is omitted, no liveness detection will be performed! Everything else remains unchanged.
New PhotoVerify2 API
Since BWS version 2.7 a new
PhotoVerify2 API is available, which does not return a single boolean but a result object that also includes the calculated actual level of accuracy!
This API call requires Basic Authentication, i. e. you have to provide an HTTP authorization header using the authorization method Basic and the base64 encoded string
App-ID:App-Secret. To receive the necessary BWS WebAPI access data (
App-Secret) you have to register your application on the BWS Portal first. This requires a valid BWS subscription.
optional integer containing the desired accuracy level:
|optional parameter that is simply passed through to the BWS log and to the returned object.|
or using the application/x-www-form-urlencoded media type:
If all provided images could be processed successfully, this API returns the OK HTTP status code (200) with either a single boolean value in the body content (
PhotoVerify) or a
PhotoVerifyResult object (
The boolean value indicates whether the live image(s) match the ID photo or not with regard to the applied accuracy level.
The result object has the members as follows:
|Boolean flag indicating whether the live image(s) match the ID photo or not with regard to the applied accuracy level.|
|The actual level of accuracy (1 - 5) the specified photo would comply with; 0 if the photo is to be rejected anyway.|
|A unique ID to identify this PhotoVerify job with the BWS log.|
|An optional provided status string that is also added to the BWS log.|
|A list of reported (liveness detection) errors.|
|Array of quality check and liveness detection results for the provided live images.|
|List of problems detected with this live image.|
|Coordinates of the left and right eye centers, if a face was found.|
An example result object might look as follows:
In case something goes wrong, an error HTTP status code is returned together with some additional information if available.
Response HTTP Status Codes
The call returns one of the standard HTTP status codes:
|200 OK||The response body simply says true or false (in case of |
|400 Bad Request||Invalid samples have been uploaded or they could not be processed successfully, e.g. no face found or live detection failed, etc. The response body typically has a |
|401 Unauthorized||Basic Authentication is required.|
|500 Internal Server Error||A server side exception occurred. The content may contain a |