SYSTEM, METHOD AND COMPUTER PROGRAM PRODUCT FOR EFFECTIVE DOCUMENT CAPTURE E.G. DURING ONBOARDING
20230208833 · 2023-06-29
Assignee
Inventors
- Jakob AVITAN (Moshav Tkuma, IL)
- Gabriel KOZAKOV (Kfar Saba, IL)
- Elyakim Yehuda DRORI (Shilo, IL)
- Doron ODED (Tzur Yizhak, IL)
Cpc classification
H04L63/0861
ELECTRICITY
G06F21/32
PHYSICS
H04L63/0853
ELECTRICITY
G06F21/34
PHYSICS
International classification
Abstract
A system supporting identity verification for an end-user, the system including a hardware processor configured for sending a link, which directs an end-user to a software functionality, such as but not limited to a web application, native app/native sdk, web app desktop, web sdk, which is operative for end-user identity verification, to an end-user's mobile phone, thereby to open an identity verification session when the end-user clicks on the link; and wherein data is elicited from the end-user via the software functionality activated by the end-user's clicking on the link. Typically the software functionality processes at least one image captured by at least one end-user's cellphone during the session or in real time or near real time, and for at least one image so captured, detects, and communicates to the end-user that the image is of unsatisfactory quality.
Claims
1.-18. (canceled)
19. A method supporting identity verification for an end-user, the method comprising: sending a link, which directs an end-user to a software functionality (such as but not limited to a web application, native app/native sdk, web app desktop, web sdk) which is operative for end-user identity verification, to an end-user's mobile phone, thereby to open an identity verification session when the end-user clicks on the link; and via the software functionality activated by the end-user's clicking on the link, eliciting data from the end-user, wherein the software functionality processes at least one image captured by at least one end-user's cellphone during the session or in real time or near real time, and for at least one image so captured, detects, and communicates to the end-user that the image is of unsatisfactory quality.
20. The method according to claim 19 wherein said data comprises a selfie, imaged by the end-user's mobile phone's camera, of the end-user's face.
21. The method according to claim 19 wherein said data comprises an image of at least a portion of an ID document borne by the end-user.
22. The method according to claim 21 wherein said at least portion of the ID document includes the front and back sides of the ID document.
23. The method according to claim 19 wherein the software functionality processes at least one image captured by at least one end-user's cellphone during the session e.g. in real time or near real time, and for at least one image so captured, detects that the image is of unsatisfactory quality and, responsively, sends to the user's cellphone, via said software functionality, within the session, a suggestion how to remedy the unsatisfactory quality of the image.
24. The method according to claim 19 wherein the software functionality processes at least one image captured by at least one end-user's cellphone during the session e.g. in real time or near real time, and for at least one image so captured, detects that the image is of unsatisfactory quality and, responsively, provides a binary indicator whose “unsatisfactory” value indicates to the end-user that the image is of unsatisfactory quality.
25. The method according to claim 19 wherein the software functionality processes at least one image captured by at least one end-user's cellphone during the session e.g. in real time or near real time, and for at least one image so captured, detects that the image is of satisfactory quality and, responsively, provides a binary indicator whose “satisfactory” value indicates to the end-user that the image is of satisfactory quality, thereby to encourage the end-user to confirm or upload the image to the software functionality.
26. The method according to claim 19 wherein the software functionality sends to the end-user's mobile phone an image of a rectangular outline, during the session, within which an image of the end-user's face is to be positioned.
27. The method according to claim 26 wherein the software functionality captures an image uploaded by the user, determines, for at least one image so captured, whether a face is presented in the image, and if so, sends a warning to the end-user's mobile phone, during the session, if the end-user's face is not positioned within the rectangular outline.
28. The method according to claim 19 wherein the link is sent to the end-user's mobile phone via SMS.
29. The method according to claim 19 wherein the software functionality comprises an application.
30. The method according to claim 19 wherein the software functionality comprises an SDK.
31. The method according to claim 19 wherein the software functionality comprises Web Desktop software.
32. The method according to claim 19 wherein the software functionality comprises Web Mobile software.
33. The method according to claim 19 wherein the software functionality comprises Native mobile Ios.
34. The method according to claim 19 wherein the software functionality comprises Android software.
35. A computer program product, comprising a non-transitory tangible computer readable medium having computer readable program code embodied therein, said computer readable program code adapted to be executed to implement the method of claim 19.
36. A system comprising at least one hardware processor configured to carry out the operations of the method of claim 19.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0059] Example embodiments are illustrated in the various drawings. Specifically:
[0060]
[0061]
[0062] Certain embodiments of the present invention are illustrated in the following drawings; in the block diagrams, arrows between modules may be implemented as APIs and any suitable technology may be used for interconnecting functional components or modules illustrated herein in a suitable sequence or order e.g. via a suitable API/Interface. For example, state of the art tools may be employed, such as but not limited to Apache Thrift and Avro which provide remote call support. Or, a standard communication protocol may be employed, such as but not limited to HTTP or MQTT, and may be combined with a standard data format, such as but not limited to JSON or XML.
[0063] Methods and systems included in the scope of the present invention may include any subset or all of the functional blocks shown in the specifically illustrated implementations by way of example, in any suitable order e.g. as shown. Flows may include all or any subset of the illustrated operations, suitably ordered e.g. as shown. tables herein may include all or any subset of the fields and/or records and/or cells and/or rows and/or columns described.
[0064] Any order of operations illustrated may be employed rather than the order shown.
[0065] Each method described typically comprises all or any subset of the described or illustrated operations:
[0066] Computational, functional or logical components described and illustrated herein can be implemented in various forms, for example, as hardware circuits such as but not limited to custom VLSI circuits or gate arrays or programmable hardware devices such as but not limited to FPGAs, or as software program code stored on at least one tangible or intangible computer readable medium and executable by at least one processor, or any suitable combination thereof. A specific functional component may be formed by one particular sequence of software code, or by a plurality of such, which collectively act or behave or act as described herein with reference to the functional component in question. For example, the component may be distributed over several code sequences such as but not limited to objects, procedures, functions, routines and programs and may originate from several computer files which typically operate synergistically.
[0067] Each functionality or method herein may be implemented in software (E.g. for execution on suitable processing hardware such as a microprocessor or digital signal processor), firmware, hardware (using any conventional hardware technology such as Integrated Circuit technology) or any combination thereof.
[0068] Functionality or operations stipulated as being software-implemented may alternatively be wholly or fully implemented by an equivalent hardware or firmware module and vice-versa. Firmware implementing functionality described herein, if provided, may be held in any suitable memory device and a suitable processing unit (aka processor) may be configured for executing firmware code. Alternatively, certain embodiments described herein may be implemented partly or exclusively in hardware in which case all or any subset of the variables, parameters, and computations described herein may be in hardware.
[0069] Any module or functionality described herein may comprise a suitably configured hardware component or circuitry. Alternatively or in addition, modules or functionality described herein may be performed by a general purpose computer or more generally by a suitable microprocessor, configured in accordance with: methods shown and described herein, or any suitable subset, in any suitable order, of the operations included in such methods, or in accordance with methods known in the art.
[0070] Any logical functionality described herein may be implemented as a real time application if and as appropriate and which may employ any suitable architectural option such as but not limited to FPGA, ASIC or DSP or any suitable combination thereof.
[0071] Any hardware component mentioned herein may in fact include either one or more hardware devices e.g. chips, which may be co-located or remote from one another.
[0072] Any method described herein is intended to include within the scope of the embodiments of the present invention also any software or computer program performing all or any subset of the method's operations, including a mobile application, platform or operating system e.g. as stored in a medium, as well as combining the computer program with a hardware device to perform all or any subset of the operations of the method.
[0073] Data can be stored on one or more tangible or intangible computer readable media stored at one or more different locations, different network nodes or different storage devices at a single node or location.
[0074] It is appreciated that any computer data storage technology, including any type of storage or memory and any type of computer components and recording media that retain digital data used for computing for an interval of time, and any type of information retention technology, may be used to store the various data provided and employed herein. Suitable computer data storage or information retention apparatus may include apparatus which is primary, secondary, tertiary or off-line; which is of any type or level or amount or category of volatility, differentiation, mutability, accessibility, addressability, capacity, performance and energy use; and which is based on any suitable technologies such as semiconductor, magnetic, optical, paper and others.
DETAILED DESCRIPTION OF CERTAIN EMBODIMENTS
[0075] A system and method are provided which support identity verification for an end-user. The method comprises sending a link directing an end-user to a web application operative for end-user identity verification, to an end-user's mobile phone, thereby to open an identity verification session when the end-user clicks on the link; and via the web application, activated by the end-user's clicking on the link, eliciting data from the end-user. The web application processes at least one image captured by at least one end-user's cellphone during the session or in real time or near real time, and for at least one image so captured, detects, and communicates to the end-user that the image is of unsatisfactory quality.
[0076] For example, frames may be processed in less than 100 or less than 200 or less than 300 or less than 400 or less than 500 milliseconds (including communication to the front-end SDK) to give the end user a near real time experience.
[0077] Any criterion for quality may be used, or several such criteria e.g. all or any subset of: whether an object of the expected type (e.g. face, ID document, form, certain type of ID document) is present at all, whether the object is fully within the field of view, blurriness, darkness, presence of reflection, and so forth.
[0078] Any suitable technology may be used to process (typically in real time or near real time) captured images, e.g. a live video stream, and to identify quality therein. For example a neural network or classifier may be trained to identify quality. The training set/s may include all or any combination of the following subsets of images, suitably labelled e.g. by human taggers, or automatically:
[0079] 1. a subset of good images which typically include a bounding box of the id location and size. Typically good images have all of the following characteristics: an object of the expected type (e.g. face, ID document, form, certain type of ID document) is present, the object is fully within the field of view, no blurriness or reflection or glare present, no darkness or over-illumination.
[0080] 2. a subset of images that are blurry but, typically, have a clear ID inside with a bounding box location and size
[0081] 3. a subset of images that are too dark but, typically, have a clear id with a bounding box
[0082] 4. a subset of images with reflections that, typically, prevent us from reading the text. typically, have a clear id image and bounding box around it.
[0083] 5 a subset of non ids-images without any id inside, and/or images with cut or cropped id's inside, utility bills/business cards/other documents or objects that are not the expected type of object (say id/dl/pas sports/visa cards).
[0084] Alternatively or in addition, analytic methods of quantifying quality may be employed.
[0085] Methods for quantifying reflection are described e.g. in co-owned Publication U.S. Pat. No. 10,255,495, the disclosure of which is hereby incorporated by reference. Shininess may be detected in an image document e.g. as described in co-owned published pct patent application WO2016005968A3, entitled “System and method for quantifying reflection e.g. when analyzing laminated documents”, the disclosure of which is incorporated herein by reference as are all other publications mentioned herein.
[0086] Any suitable face detection or recognition technology may be used. Face detection may be performed using object-class detection technology, where the task is to find locations and/or sizes of objects in an image that belong to the class of frontal human faces. Conventional technologies for this task may employ the genetic algorithm and/or eigen-face technique.
[0087] ID document recognition or form recognition may for example be as per co-owned patent application WO 2016/139653, the disclosure of which is hereby incorporated by reference. Also, machine learning, deep learning, neural networks etc. may be employed to determine whether images are or are not of unsatisfactory quality e.g. by training a classifier on examples of images which, in the past, were successfully or unsuccessfully, respectively, used to verify an end users' identity.
[0088] Typically, the user starts a session, which typically includes live video, to capture their ID. During the session, frames captured from the live video are sent to a backend service that processes each captured frame, e.g. using a Neural Network aka NN. The NN engine typically determines, and indicates to the user (typically in less than one second per frame) whether an ID was or was not identified in the image, and/or whether the ID, if any, has quality issues such as all or any subset of: blurriness, reflection or darkness. These indications are presented e.g. displayed to user, typically in real-time.
[0089] This method advantageously elicits, from an end-user having a mobile phone with a high quality camera, images via which verification of the end-user's identity may be accomplished, including using the end-user's mobile phone's high quality camera to capture the images, without requiring the end-user to download a cell app.
[0090] An end-user may be prompted to choose an ID type (e.g. driving license, passport, etc.) and a country which issued the ID (e.g. France, Egypt etc.), from respective menus.
[0091] The end-user may be prompted to choose an upload method (either continue to desktop, or redirect to mobile).
[0092] In a capture-by mobile stage, the end-user is typically prompted to open her mobile camera, and scan a QR code presented on the screen. The QR code may be sensed by the phone using its camera and may, according to certain embodiments, provide a link to related digital content, typically a URL.
[0093] The end-user may be prompted to enter her or his mobile number, and responsively, receives by SMS (e.g.) a link to a mobile authentication flow.
[0094] The mobile authentication flow typically provides suitable prompts, and feedback, to the end-user.
[0095] The end-user is typically prompted to place the front side of his ID within a displayed rectangular outline, and click.
[0096] The end user typically is given the option to select cropping, uploading the file or recapturing. The end user may be given an option to “Drop photo file here to upload”.
[0097] If the system does not detect an ID, the end-user is typically urged to make sure the ID document is readable, and within the displayed rectangular outline.
[0098] The end-user is then typically prompted to effect a “selfie capture” e.g. by ensuring her or his face fills the rectangular outline, and then clicking. The end user typically is given the option to select cropping, uploading the file, or recapturing.
[0099] The end-user may be given an option of either cropping, or clicking ok.
[0100] Typically, the end-user is prompted, when capturing a selfie and/or a document image, to avoid reflections.
[0101] The end-user may be prompted to change her or his distance from the camera, if the selfie is unsatisfactory. The end-user may be given indicators, such as a green/red indicator (which may be arranged around the displayed rectangular outline), if her/his face does/does not fill the displayed rectangular outline and/or if no face is detected at all (which may occur e.g. if the camera is positioned to image the room rather than the user's face). More generally, the green indicator typically indicates that the image is satisfactory, whereas the red indicator indicates a deficient image e.g. any of the above deficiencies (which are also stipulated in a natural language legend such as “your face is blurry—try to improve lighting”, “only one face, not several people's faces” if plural faces are detected, and so forth.
[0102] If image quality is unsatisfactory e.g. blurry, the end-user is typically prompted to adjust the illumination in her or his environment.
[0103] The end-user is typically thanked for submitting a request for identity verification, if the session is successful in capturing the end-users selfie and ID document (typically from both front and back sides), and is otherwise typically informed that the session was unsuccessful.
[0104] It is appreciated that the above types of images of unsatisfactory quality e.g. plural faces rather than one, presence of reflection, face too far from camera, face not positioned within the rectangular outline, no face detected and so forth, are merely examples of types of images of unsatisfactory quality; other examples are possible, and alternatively or in addition, any subset of the types described above, rather than all types described above, may be detected.
[0105] Any suitable image processing may be used to detect the above types of images of unsatisfactory quality. For example, to detect blurriness, a Fast Fourier Transform may be computed to determine which frequencies are present in the image. A below-threshold amount of high frequencies indicates a blurry image. Also, if an image is converted into HSV format, the V value is indicative of brightness and over/under threshold V values are thus indicative of an image which is too bright or not bright enough.
[0106] Any suitable online warning to the end-user may be provided e.g. to the end-user's mobile phone e.g. via a web application entered by the end-user, e.g. during a session established thereby, e.g. responsive to a link sent to the user as described herein.
[0107] It is appreciated that the red/green indicator described above, is but one example of possible binary indicators having respective “unsatisfactory” and “satisfactory” values.
[0108] It is appreciated that provision of a Quick Response (QR) code which is then captured by the end-user's mobile phone's camera as described above, is but one alternative embodiment. Alternatively, any other technology may be used for directing end-users to, or launching, a web application configured to have all or any subset of the functionalities described above. For example, alternatively or in addition, Near Field Communication (NFC) may be used to transmit data between an NFC tag which may use embedded chips, and an NFC-enabled device e.g. smartphone/cellphone or tablet. In this embodiment, the NFC tag may get a “tap” from the NFC-enabled smartphone.
[0109] According to certain embodiments, during the session, a human operator views at least one image sent or uploaded by at least one end-user, during the session, and the human operator communicates with the at least one end-user, during the session e.g. in order to provide technical support.
[0110] According to certain embodiments, plural web applications configured as above, e.g. a community of web applications, receive image processing services from a single server.
[0111] A particular advantage of certain embodiments is that feedback regarding image quality may be provided to an end-user seeking to verify her identity, online or while an identity verification session is ongoing or within just a few seconds e.g. 10 seconds or less.
[0112] Another particular advantage of certain embodiments is that capabilities herein are obtainable without installations and/or or with minimum size sdk e.g. a few dozen KB instead of over one MB. It is appreciated that whereas NN sizes may be hundreds of MB, the neural networks are deployed on the cloud rather than on the front end, according to certain embodiments herein.
[0113] A smart document capturing system, e.g. for web/mobile SDK, according to an example embodiment, is now described in detail. Any aspect of or teaching regarding this system may be combined with any aspect of or teaching regarding any embodiment elsewhere shown and described herein. Smart SDK document capturing functionality is typically provided, to improve conversion rates and/or reduce frustration, thus enhancing the user experience. The SDK may allow the users to manually capture images, allowing the user to perform or interact with all or any subset of the following: [0114] Select image file from library/camera/file system [0115] Open a camera session (web mobile or desktop) [0116] Capture an image (for document capturing or a selfie) [0117] Cropping functionality [0118] Make use of JSONGenerator [0119] Make use of formDataGenerator
[0120] Smart document capturing typically performs all or any subset of the following, e.g. by image processing: [0121] Identify ID objects and lock on them (e.g., typically, to prevent acceptance of general rectangles or business cards) [0122] quality checks such as but not limited to all or any subset of: Blur detection, Dark environment detection and Reflection detection.
[0123]
[0124] The SDK may be operative to provide all or any subset of the following functionalities: [0125] Auto image capturing—after e.g. triggered by detection and quality assurance, for the frame representing the end-user's ID document [0126] Uploading image files e.g. from file dialog box [0127] Cropping images [0128] Taking pictures of documents or selfies [0129] Generating JSON or FormData objects for at least one (relevant) images
[0130] The system may comprise a hybrid, server-side/front end solution. To achieve maximum accuracy, the SDK may use one or more Neural Networks (NN) on the server side. Images from the front end may be sent in real time, typically one after the other, to the server for evaluation. Once the neural network/s accept/s the frame, the user is, typically, notified that the image is being captured and the front-end SDK, typically subsequently, typically automatically triggered, captures the image.
[0131] All or any subset of the following advantages may be achieved: [0132] Light front end—No smart module needs be downloaded to the front end, thereby to achieve slimness from the end-user's perspective. [0133] High accuracy—By using heavy Neural Networks with strong servers [0134] Auto updates—Updates and improvements need not be applied on the front-end App [0135] Multi-platform—API to the servers can be built from web or native apps.
[0136] Any functionality described herein may be provided as an SDK for webservice providers whose onboarding functionality requires capturing ID documents of their end users. The architecture may include both front-end SDK and back-end SDK. The front end typically sends frames for evaluation to the backend. The back end detects, e.g. via neuro networks, presence of IDs and checks whether quality of the ID image is sufficient. If so, the image may be sent directly to further processing by a document verification system, e.g. AU10TIX's BOS (Back Office Service) or any other typically online system for ID document image authentication. Alternatively, the image may be sent to the front-end SDK.
[0137] It is appreciated that the architecture allows plural webservice providers to onboard their respective end-users and to all use a single online ID document authentication service. Thresholds, timeouts, retries and any other desired parameter may be configured differently, for/by different webservice providers.
[0138] Features may include all or any subset of the following:
[0139] 1. Detect ID vs Non-ID rectangles: Onboarding is improved by a detector that allows end user requests for ID verification to be removed even before sending them to further processing at (say) BOS if the requests are irrelevant, since the image sent in is not an ID or is not a face, or is of insufficient quality. This detector may for example use Deep Learning to detect IDs. If the ID is cut off (e.g. if the end-user failed to position the entire ID within her or his camera's field of view), for example, it is desirable not to capture the image and not to send such an image for further document verification processing. Instead, the user can be prompted to position her or his ID fully inside the frame. After basic detection indicating whether the desired object (e.g. a given ID document or form, or a face) is present (and fully present), an image quality test may begin. The detector may also supply bounding box coordinates for auto cropping the image.
[0140] 2. Face detection: If onboarding includes sending in a selfie, the SDK may detect faces to ensure end-users are not sending non-relevant images for selfie verification. If no face is detected, the SDK may, for example, show a notification to prevent the user from sending this image. The hosting app may, for example, decide whether to allow sending an image without a face to the document verification system or not.
[0141] 3. Quality Checks: Quality detectors filter out requests (e.g. images) that are not good enough before sending to (say) BOS, which is cost effective, since every processing request in (say) BOS has a cost. Quality checks may include all or any subset of the following:
[0142] a. If there are a reflection on the card or the ID as imaged, the detector will not allow the image to be sent e.g. will not allow the SDK to capture the image
[0143] b. If lighting conditions are not good enough such that the image is blurry or grainy, the detector will not allow the SDK to capture an image.
[0144] c. If the image is not in full focus e.g. document text is unreadable, the detector will not allow the SDK to capture the image.
[0145] 4. Auto Capture: typically, If the ID detector has detected an ID in a frame, and all the quality detectors approve that frame, the auto capture may choose this frame which may then be selected by the front-end SDK or transferred to (say) BOS.
[0146] 5. Manual cropping: alternatively, or in addition to SDK auto capturing capabilities, manual capturing by end user may be supported, in which case a frame (e.g. from live video during a session) may be sent to analysis at the back-end SDK and may return with suitable notifications (re document present yes/no, quality sufficient yes/no) and cropping coordinates.
[0147] 6. Cropping: typically, the back-end SDK supplies coordinates for cropping functionality. The front-end SDK may show a bounding box for auto cropping. According to certain embodiments, the end user can then choose to change the corners of the bounding box manually to improve the cropped result.
[0148] 7. Configurations to the back-end allows functionality to change, e.g. to be configured differently for each of various web services all using the system herein, thereby to improve user experience and/or behavior of the SDK. For example, each detector's threshold may be adjustable. This may be the case for all or any subset of the following detectors: ID detector, Reflections detector, Dark detector, Blurriness detector, Face detector, form detector.
[0149] b. Timeouts—To start the scan there may be a timeframe, to prevent sending frames in vain. To end the session there may be a time frame that can be adjusted.
[0150] c. Retries—each user may be entitled to send session requests up to N times, where N may be adjustable per web service using the system herein.
[0151] 8. Performance: The SDK typically supports 3G/4G/5G networks.
[0152] 9. API and JSON response may be responsible for communication between front and back-end SDKs. Each frame sent to the back-end may return a response with all of any subset of the following JSON values:
[0153] For Document capture: [0154] ID status—GOOD/BAD/NO ID [0155] ID coordinates—(x1, y1, x2, y2) [0156] Blur status—GOOD/BLUR [0157] Blur score: XX [0158] Reflection status—GOOD/REFLECT [0159] Reflection score: XX [0160] Dark status—GOOD/DARK [0161] Dark score: XX
[0162] For Face detection: [0163] Face status—DETECTED/NOT DETECTED [0164] BBOX—(x1, y1, x2, y2)
[0165] 10. UI: The UI may show an avatar bounding box e.g. rectangle e.g. on the screen display of the end-user's mobile phone, so the user may place his ID within the box or rectangle. The call to action to place the ID in the box or rectangle may be shown to the end-user, until the SDK has detected an ID (say).
[0166] If the ID is detected and all quality checks are good, the image may be auto captured, and a bounding box may appear to show the end user the frame that was taken and cropped. The user is typically able to manually change the cropping of the image. The hosting app may send this image and send for processing. Or, the SDK may send the image directly for processing in BOS. The choice between these options may be made by the web service doing the onboarding.
[0167] If no ID was detected until time out, a message may be shown e.g. “too dark” or “No ID was detected” and/or “please make sure you have enough light in the room” and/or “Would you like to try again?”
[0168] After n e.g. 3 times (typically n can be configured), a suitable message may be shown e.g. “No ID was detected. Please contact support to continue”.
[0169] If quality checks are not good, a suitable notification may appear e.g. “avoid reflections”, “Blurred Image”, or “Too Dark”. If the user does not fix the quality until timeout, the session may end.
[0170] A manual button may be available to the user, via which the end-user may force the app to take the image. In that case the image is typically processed, and responsively, a notification will be shown to the end user. The end user can, according to some embodiments, force the app to send his image for processing.
[0171]
[0172] The server may expose main component/s such as document capture and/or face detection. The server side may expose two entry points, one for each capability. The server and SDK may communicate via REST API. The communication protocol may be based on HTTPS requests.
[0173] The SDK may open a camera session (e.g. with end user's cellphone camera in video mode) and start sending frames. Each frame may be transferred separately and may wait for a response. Server runtimes may be determined by process and communication times.
[0174] OS-level virtualization may be used to deliver software to implement functionalities herein (e.g. API algorithmic capabilities for document capture and/or face detection), in packages e.g. Docker containers, which may be: isolated from one another; may bundle their own software, libraries and configuration files; may communicate with one other via defined channels; may be run by a single operating system kernel. An SDK may expose document capture and/or face detection capabilities e.g. by sending single frames and returning analytics to the SDK client.
[0175] The SDK may for example be JavaScript based. The SDK may expose all or any subset of the following capabilities: [0176] Document capture: [0177] Open camera session [0178] Single frame capturing [0179] Send a single frame to the server and receive document location and analytics [0180] Face detection: [0181] Open camera session [0182] Single frame capturing [0183] Send a single frame to the server and receive face detection and location [0184] Auxiliary function to create instance that fits the API.
[0185] The final product may comprise webpacked python code which may be wrapped in an image docker.
[0186] It is appreciated that terminology such as “mandatory”, “required”, “need” and “must” refer to implementation choices made within the context of a particular implementation or application described herewithin for clarity and are not intended to be limiting since in an alternative implantation, the same elements might be defined as not mandatory and not required or might even be eliminated altogether.
[0187] Components described herein as software may, alternatively, be implemented wholly or partly in hardware and/or firmware, if desired, using conventional techniques, and vice-versa. Each module or component or processor may be centralized in a single physical location or physical device or distributed over several physical locations or physical devices.
[0188] Included in the scope of the present disclosure, inter alia, are electromagnetic signals in accordance with the description herein. These may carry computer-readable instructions for performing any or all of the operations of any of the methods shown and described herein, in any suitable order including simultaneous performance of suitable groups of operations as appropriate. Included in the scope of the present disclosure, inter alia, are machine-readable instructions for performing any or all of the operations of any of the methods shown and described herein, in any suitable order; program storage devices readable by machine, tangibly embodying a program of instructions executable by the machine to perform any or all of the operations of any of the methods shown and described herein, in any suitable order i.e. not necessarily as shown, including performing various operations in parallel or concurrently rather than sequentially as shown; a computer program product comprising a computer useable medium having computer readable program code, such as executable code, having embodied therein, and/or including computer readable program code for performing, any or all of the operations of any of the methods shown and described herein, in any suitable order; any technical effects brought about by any or all of the operations of any of the methods shown and described herein, when performed in any suitable order; any suitable apparatus or device or combination of such, programmed to perform, alone or in combination, any or all of the operations of any of the methods shown and described herein, in any suitable order; electronic devices each including at least one processor and/or cooperating input device and/or output device and operative to perform e.g. in software any operations shown and described herein; information storage devices or physical records, such as disks or hard drives, causing at least one computer or other device to be configured so as to carry out any or all of the operations of any of the methods shown and described herein, in any suitable order; at least one program pre-stored e.g. in memory or on an information network such as the Internet, before or after being downloaded, which embodies any or all of the operations of any of the methods shown and described herein, in any suitable order, and the method of uploading or downloading such, and a system including server/s and/or client/s for using such; at least one processor configured to perform any combination of the described operations or to execute any combination of the described modules; and hardware which performs any or all of the operations of any of the methods shown and described herein, in any suitable order, either alone or in conjunction with software. Any computer-readable or machine-readable media described herein is intended to include non-transitory computer- or machine-readable media.
[0189] Any computations or other forms of analysis described herein may be performed by a suitable computerized method. Any operation or functionality described herein may be wholly or partially computer-implemented e.g. by one or more processors. The invention shown and described herein may include (a) using a computerized method to identify a solution to any of the problems or for any of the objectives described herein, the solution optionally include at least one of a decision, an action, a product, a service or any other information described herein that impacts, in a positive manner, a problem or objectives described herein; and (b) outputting the solution.
[0190] The system may if desired be implemented as a web-based system employing software, computers, routers and telecommunications equipment as appropriate.
[0191] Any suitable deployment may be employed to provide functionalities e.g. software functionalities shown and described herein. For example, a server may store certain applications, for download to clients, which are executed at the client side, the server side serving only as a storehouse. Any or all functionalities e.g. software functionalities shown and described herein may be deployed in a cloud environment. Clients e.g. mobile communication devices such as smartphones may be operatively associated with but external to the cloud.
[0192] The scope of the present invention is not limited to structures and functions specifically described herein and is also intended to include devices which have the capacity to yield a structure, or perform a function, described herein, such that even though users of the device may not use the capacity, they are if they so desire able to modify the device to obtain the structure or function.
[0193] Any “if-then” logic described herein is intended to include embodiments in which a processor is programmed to repeatedly determine whether condition x, which is sometimes true and sometimes false, is currently true or false and to perform y each time x is determined to be true, thereby to yield a processor which performs y at least once, typically on an “if and only if” basis e.g. triggered only by determinations that x is true and never by determinations that x is false.
[0194] Any determination of a state or condition described herein, and/or other data generated herein, may be harnessed for any suitable technical effect. For example, the determination may be transmitted or fed to any suitable hardware, firmware or software module, which is known or which is described herein to have capabilities to perform a technical operation responsive to the state or condition. The technical operation may for example comprise changing the state or condition or may more generally cause any outcome which is technically advantageous given the state or condition or data, and/or may prevent at least one outcome which is disadvantageous given the state or condition or data. Alternatively or in addition, an alert may be provided to an appropriate human operator or to an appropriate external system.
[0195] Features of the present invention, including operations, which are described in the context of separate embodiments may also be provided in combination in a single embodiment. For example, a system embodiment is intended to include a corresponding process embodiment and vice versa. Also, each system embodiment is intended to include a server-centered “view” or client centered “view”, or “view” from any other node of the system, of the entire functionality of the system, computer-readable medium, apparatus, including only those functionalities performed at that server or client or node. Features may also be combined with features known in the art and particularly although not limited to those described in the Background section or in publications mentioned therein.
[0196] Conversely, features of the invention, including operations, which are described for brevity in the context of a single embodiment or in a certain order may be provided separately or in any suitable subcombination, including with features known in the art (particularly although not limited to those described in the Background section or in publications mentioned therein) or in a different order. “e.g.” is used herein in the sense of a specific example which is not intended to be limiting. Each method may comprise all or any subset of the operations illustrated or described, suitably ordered e.g. as illustrated or described herein.
[0197] Devices, apparatus or systems shown coupled in any of the drawings may in fact be integrated into a single platform in certain embodiments or may be coupled via any appropriate wired or wireless coupling such as but not limited to optical fiber, Ethernet, Wireless LAN, HomePNA, power line communication, cell phone, Smart Phone (e.g. iPhone), Tablet, Laptop, PDA, Blackberry GPRS, Satellite including GPS, or other mobile delivery. It is appreciated that in the description and drawings shown and described herein, functionalities described or illustrated as systems and sub-units thereof can also be provided as methods and operations therewithin, and functionalities described or illustrated as methods and operations therewithin can also be provided as systems and sub-units thereof. The scale used to illustrate various elements in the drawings is merely exemplary and/or appropriate for clarity of presentation and is not intended to be limiting.
[0198] Any suitable communication may be employed between separate units herein e.g. wired data communication and/or in short-range radio communication with sensors such as cameras e.g. via WiFi, Bluetooth or Zigbee.
[0199] It is appreciated that implementation via a cellular app as described herein is but an example and instead, embodiments of the present invention may be implemented, say, as a smartphone SDK; as a hardware component; as an STK application, or as suitable combinations of any of the above.
[0200] Any processing functionality illustrated (or described herein) may be executed by any device having a processor, such as but not limited to a mobile telephone, set-top-box, TV, remote desktop computer, game console, tablet, mobile e.g. Laptop or other computer terminal, embedded remote unit, which may either be networked itself (may itself be a node in a conventional communication network e.g.) or may be conventionally tethered to a networked device (to a device which is a node in a conventional communication network or is tethered directly or indirectly/ultimately to such a node).