US20100027896A1 - Automated application interaction using a virtual operator - Google Patents
Automated application interaction using a virtual operator Download PDFInfo
- Publication number
- US20100027896A1 US20100027896A1 US12/555,821 US55582109A US2010027896A1 US 20100027896 A1 US20100027896 A1 US 20100027896A1 US 55582109 A US55582109 A US 55582109A US 2010027896 A1 US2010027896 A1 US 2010027896A1
- Authority
- US
- United States
- Prior art keywords
- image
- computer system
- virtual operator
- client computer
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3414—Workload generation, e.g. scripts, playback
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/36—User authentication by graphic or iconic representation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/40—Document-oriented image-based pattern recognition
Definitions
- the present invention relates generally to software solutions and specifically to providing automatic interaction among business software applications using a virtual operator.
- Modern organizations typically employ interactive business software solutions, including multiple operative products that may support diverse business units.
- Such products typically include software applications to provide support for business requirements, e.g., financial operations, customer relationship management, human resources, professional services, purchasing, and distribution.
- the software applications may run on computerized systems, which can include legacy as well as modern systems. Often, at least a portion of the software and hardware of the computerized systems are tailored to support customized customer-specific functionality. Customizations may be applied at the time a new application is obtained, or as business needs change. Techniques utilized to enable a given system to be customized range from source code customization by professional services experts to interactive tool based approaches that allow end customers to make some changes themselves. At the end of the day, regardless of whether the software applications are “out-of-the-box”, customized, legacy or modern, they all need to be interactive to allow the data in each system to be accessible, shareable, and consistent.
- An embodiment of the present invention provides a computer-implemented method for automating interaction with a computer system, which is carried out by linking a control computer system to an input interface of a client computer system and to an output interface of the client computer system, which is operative for producing user interface images on a display device.
- Distinct software modules are executed with the control computer system, including a virtual operator for simulating actions of a human operator. Execution of the software modules causes the control computer system to capture an image from the output interface and to recognize information in the image. In response to the information, the virtual operator controls an input device to automatically execute predetermined operations on the client computer system via the input interface.
- inventions of the invention provide computer software product and apparatus for carrying out the above-described method. Still other embodiments of the invention provide techniques for configuring a computer software product for carrying out the above-described method cooperatively with computer apparatus.
- FIG. 1 is a block diagram of a system for automating interaction with a computer system, in accordance with a disclosed embodiment of the invention
- FIG. 2 shows a user interface screen, which displays a user interface image, in accordance with a disclosed embodiment of the invention
- FIG. 3 is a flow chart of a method for automating interaction with a computer system, in accordance with a disclosed embodiment of the invention
- FIG. 4 is a block diagram of a system for automating interaction with a computer system, in accordance with alternate embodiments of the invention.
- FIG. 5 illustrates scanned and reference images produced by the embodiment of FIG. 4 .
- Embodiments of the present invention that are described hereinbelow provide improved methods, products and systems for automating interaction with a computer system.
- it is a primary goal to maximize the efficiency of the integration by minimizing the effort necessary for data to flow among the systems.
- Embodiments of the present invention provide a virtual operator that emulates actions performed by a human operator using legacy software.
- the virtual operator interacts with the legacy software via an automated software system interfacing between modern and legacy software systems, or simply among any number of non-integrated software systems.
- the term “virtual operator” refers to any software application or process that is capable of automatically performing actions on computer systems by interaction with a user interface, thus simulating identical actions performed by a human operator.
- the term “legacy software system” refers to any software application that executes on a computer system and that continues to be used in spite of available newer technology, typically since the software application still meets the requirements of at least some of the users of the software application.
- a control computer system is linked to input and output interfaces of a client computer system that executes legacy computer software.
- the client computer system produces user interface images on a display device, typically in response to data entered via the input interface, e.g., using a keyboard or mouse.
- a virtual operator running on the control computer system simulates actions of a human operator, as described hereinbelow.
- the virtual operator captures one of the images from the output interface, and recognizes information in the image.
- the virtual operator uses an image analyzer to compare the image with a collection of image templates.
- the image analyzer uses optical character recognition (OCR) to analyze the image.
- OCR optical character recognition
- complex processes such as creating hierarchical relationships among areas of the screen may be used in order to apply disambiguation via semantic entity identification.
- the virtual operator verifies that the recognized information matches a known pattern.
- An image verifier is typically used to corroborate the match by extracting some type of marker from the image, such as text indicative of a screen function.
- an image template may be used to make comparisons using the screen title text to identify the image.
- the image verifier may confirm that the currently displayed image on the display device of the client computer system is an address change screen.
- the virtual operator controls the input device, automatically executing predetermined operations on the client computer system.
- the input device is typically used to input entry data comprising simulated keystrokes, mouse clicks, and other operator actions according to an input script, as described hereinbelow.
- entry data is input to the input interface of the client computer system via the input device to change a customer address.
- predetermined operations may be executed to simulate other human operator actions, to query legacy software systems, or to insert and update data, as required.
- Embodiments of the present invention provide a single reliable, high-speed interface among multiple software systems, such as between a modern software system and a legacy software system.
- FIG. 1 is a block diagram that schematically illustrates a system 10 for automating interaction with a computer system, in accordance with a disclosed embodiment of the invention.
- System 10 typically comprises a control computer system 12 and at least one client computer system 14 .
- Control computer system 12 may interface with multiple client computer systems, which are not shown for the sake of simplicity.
- FIG. 1 and other drawing figures herein are shown as comprising a number of separate functional blocks, these blocks are not necessarily separate physical entities, but rather may represent, for example, different computing tasks or data objects stored in a memory that is accessible to a processor of control computer system 12 .
- Control computer system 12 to automatically interact with the multiple client computer systems irrespective of their hardware and software configurations, as described hereinbelow.
- Control computer system 12 typically comprises a general-purpose control computer 16 , which is programmed in software to carry out the functions that are described herein.
- Control computer system 12 also comprises an input device 18 and a storage unit 20 , as described hereinbelow.
- Control computer 16 comprises a processor 22 , a capture interface 24 , and a memory 26 .
- Capture interface 24 may comprise a Bluetooth® adapter, an Infrared Data Association (IrDA) device, a cable connection, or any communication interface for capturing image data that allows control computer 16 to receive output from a screen, e.g., in the form of an image bitmap.
- IrDA Infrared Data Association
- a virtual operator 28 , an image analyzer module 30 , and an image verifier module 32 are held in memory 26 .
- Virtual operator 28 , image analyzer module 30 , and image verifier module 32 may be downloaded to control computer 16 in electronic form, over a network, for example, or they may alternatively be provided on tangible media, such as optical, magnetic or electronic memory media.
- control computer 16 may be carried out by dedicated electronic logic circuits.
- the embodiment relates to one particular system for automating interaction with a computer system, the principles of automated interaction that are implemented in system 10 may similarly be applied, mutatis mutandis, in other types of automated computer interaction systems using other techniques for automatically inputting entry data to client computer systems.
- Input device 18 may comprise any suitable device or device simulator that allows control computer 16 to produce a sequence of device signals such as keyboard keystrokes or mouse clicks for input to a communications interface, which is typically connected to another computer system.
- a suitable input simulator is the Microsoft WindowsTM SendInput function for the Windows user interface, available at the Microsoft Developer Network website (msdn.microsoft.com).
- the SendInput function provides a tool to support simulation of keystrokes, mouse motions, and button clicks.
- Storage unit 20 may be any storage device that is capable of storing images captured by capture interface 24 , image templates, and any other data stored for retrieval by virtual operator 28 .
- Client computer system 14 typically comprises a general-purpose client computer 34 , which is programmed in software to carry out the functions that are described herein.
- Client computer system 14 also comprises a screen 36 , as described herein.
- Client computer 34 comprises an input interface 38 , which may comprise any suitable communications interface that receives input signals representative of actions performed using input devices such as keyboards and computer mice.
- Input device 18 may provide simulated input, and as described hereinbelow, software applications may be used to enable remote control of client computer system 14 over a network.
- embodiments of the present invention provide interoperability between client computer system 14 and input device 18 without necessitating any modifications to input interface 38 .
- Screen 36 comprises a display device and an output interface 40 , which may comprise a Bluetooth® adapter, an Infrared Data Association (IrDA) device, a cable connection, or any communication interface for outputting image data that allows client computer 34 to export visual display data, e.g., in the form of a compressed image.
- an output interface 40 may comprise a Bluetooth® adapter, an Infrared Data Association (IrDA) device, a cable connection, or any communication interface for outputting image data that allows client computer 34 to export visual display data, e.g., in the form of a compressed image.
- IrDA Infrared Data Association
- System 10 may include devices 42 for producing a software product on a computer-readable medium, for example a CD or DVD writer.
- Devices employing many other technologies are also suitable for use as devices 42 , for example, writers adapted to tapes, hard disc drives, RAM, ROM, flash memory devices, floppy drives, programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), and magneto-optical discs.
- PROM programmable read-only memory
- EPROM erasable programmable read-only memory
- magneto-optical discs In all of these technologies patterns or transitions in the physical state of the medium are formed therein. These patterns and sequences of transitions encode instructions or data, e.g., binary numbers that are acceptable to the processor.
- the nature of the state transitions varies with the particular medium, and includes changes in magnetic domains in magnetic media, formation of pits or bumps on an optical disk, etc.
- the medium may be transferred to another computing device 44 , which is capable of reading the medium, recognizing the transitions, and decoding them to identify executable instructions or data.
- control computer system 12 and client computer system 14 may run on a single computer system 106 as separate processes. Communication between the systems may comprise events passed between the separate processes via any suitable application programming interface known in the art.
- the present embodiment provides for simplified image capture and input signal generation due to the processes running on single computer system 106 , while eliminating the need to physically link multiple computer systems.
- FIG. 2 is a schematic, pictorial illustration of a user interface screen, which displays user interface images, in accordance with a disclosed embodiment of the invention.
- Client computer 34 FIG. 1
- image 46 is described using an example of an action performed on a software application to determine policy holder data in association with an insurance policy maintained in a legacy software system.
- Image 46 comprises a screen function label 50 , a policy number field 52 , a policy holder name field 54 and data fields 48 .
- Client computer system 14 ( FIG. 1 ) is adapted to execute at least one software application.
- the software application may be responsive to input operations, e.g., by signals sent to input interface 38 , as described in more detail hereinbelow.
- the software application provides storage and maintenance functionality for policy holder data for an insurance firm.
- the software application generates images such as image 46 that are then displayed on screen 36 in response to the actions.
- a logon session can involve performing multiple actions in the predetermined order required to enter login and password information.
- the software application may require additional input operations that cause client computer 34 ( FIG. 1 ) to display a different image on screen 36 .
- Virtual operator 28 typically captures the image from screen 36 or from output interface 40 , using any image capture method known in the art.
- Virtual operator 28 uses image analyzer module 30 to recognize information in the image.
- a pseudocode listing of a sample image analysis that may be used in the context of the present example, whereby the software application is running on a mainframe computer, is presented hereinbelow in Listing 1.
- Function find_nearest in Listing 1 tries to locate each application data field based upon relative coordinates of the data field, for example, policy number field 52 .
- Image verifier module 32 ( FIG. 1 ) is used to confirm that the recognized information matches a pattern that is known to virtual operator 28 , as described hereinabove.
- a pseudocode listing of a sample screen recognition routine that may be used in this context is presented hereinbelow in Listing 2.
- the image contains a marker describing the function of the image, in the text of screen function label 50 .
- a pseudocode listing of a sample screen verification routine that may be used in this context is presented hereinbelow in Listing 3.
- screen function label 50 is verified to match expected screen function label values.
- the software application provides some images that allow information entry, whereas other images are displayed that only allow information to be viewed. Some of the images provided by the software application may indicate to virtual operator 28 ( FIG. 1 ) that information entry has been completed.
- the input operations required for executing actions for each software application are known in advance, in the form of the above-noted input script, which is typically stored in storage unit 20 .
- FIG. 3 is a flow chart that schematically illustrates a method for automating interaction with a computer system, in accordance with a disclosed embodiment of the invention.
- the name of a policy holder at an insurance firm may need to be changed due to an update in the marital status of the policy holder.
- Virtual operation 28 would therefore need to simulate several actions of a human operator in order for to automatically interact with a legacy software application running on client computer system 14 to successfully negotiate the requirement.
- Control computer system 12 ( FIG. 1 ) is linked to client computer system 14 in a computer system linking step 56 .
- input device 18 is linked to input interface 38
- output interface 40 is linked to capture interface 24 .
- Control computer system 12 ( FIG. 1 ) executes virtual operation 28 to simulate actions of a human operator, thus automatically interacting with the software application running on client computer system 14, in a virtual operator executing step 58 .
- Virtual operation 28 ( FIG. 1 ) causes processor 22 to perform the steps listed hereinbelow.
- Capture interface 24 ( FIG. 1 ) captures an image, e.g., image 46 displayed on screen 36 ( FIG. 2 ) in an image capturing step 60 . Additionally or alternatively, image 46 may be captured by capture interface 24 via output interface 40 .
- output interface 40 is a universal serial bus (USB), and image 46 is captured from the software application.
- image analyzer module 30 may be invoked by virtual operation 28 ( FIG. 1 ) to analyze image 46 .
- Image analyzer module 30 recognizes information in image 46 in an information recognition step 62 , as described hereinabove in reference to the pseudocode listing presented in Listing 1.
- a simple text layout is easily recognized by image analyzer module 30 , while comparing image 46 to image templates stored in storage unit 20 .
- the example provided by image 46 ( FIG. 2 ), taken from a sample mainframe computer application, may be analyzed with ease by image analyzer module 30 .
- more complex analyses may be required if geometric primitives, e.g., rectangles or lines, are utilized by the software application running on client computer system 14 , as described hereinabove.
- Virtual operation 28 typically uses image verifier module 32 to verify that the recognized information matches a known pattern in a recognized information pattern matching verification step 64 .
- image verifier module 32 verifies that the marker describing the function of image 46 matches the image template used by image analyzer module 30 in information recognition step 62 .
- Screen function label 50 FIG. 2
- the marker in the present example has the value “INQ100”, and is verified against the image template by image verifier module 32 , thus confirming the identification of image 46 as matching the known pattern of the address change screen of the software application delineated by the image template.
- Virtual operation 28 responds to the pattern verification by image verifier module 32 , by controlling input device 18 to automatically execute predetermined operations on client computer system 14 in a device controlling and operation executing step 66 . These operations may be specified in an input script. A library of such input scripts may be stored in storage unit 20 . A pseudocode listing of routines to generate data input that may be used in this context is presented hereinbelow in Listing 4. Virtual operation 28 causes input device 18 to automatically execute predetermined operations, e.g., inputting entry data to client computer system 14 , thereby simulating actions of the human operator. In an embodiment of the present invention, virtual operation 28 uses RealVNC ⁇ server and client software applications, available from RealVNC Ltd, Betjeman House, 104 Hills Road, Cambridge.
- the RealVNC applications utilize remote framebuffer (also known as Remote Frame Buffer or RFB) functionality, a protocol which provides remote access to graphical user interfaces at the framebuffer level, and is available from the RealVNC web site (realvnc.com).
- RFB Remote Frame Buffer
- the RealVNC applications provide the ability to send the output of input device 18 to input interface 38 and to place device events into the input event queue of the operating system of client computer system 14 .
- the device events are then processed on client computer system 14 as though a physical input device had been used to generate the events.
- Each input script provides entry data for performing actions that have been precisely tailored to execute operations for a specific software application on a particular computer system via input device 18 .
- the entry data comprises keystrokes and mouse clicks input by input device 18 to execute the operations delineated by an input script.
- the input script provides the entry data that is necessary when using the software application running on client computer system 14 in order to automatically select policy holder name field 54 and to automatically revise the policy holder name of the example.
- the method then terminates at a final step 68 .
- FIG. 4 is a block diagram of an alternative system 70 for automating interaction with a computer system, in accordance with alternate embodiments of the invention.
- virtual operation 28 may interface with multiple client computer systems to automatically interact with software applications executing on the multiple client computer systems.
- control computer system 12 utilizes additional software modules, e.g., duplicate virtual operator, image analyzer, and image verifier modules.
- a single instance of each distinct software module is required to interface with the multiple client computer systems and multiple software applications running thereon.
- a client computer system 72 captures images from a scanner 74 linked to a client computer 76 , and the images are typically stored in a database 78 , as described hereinbelow.
- images are provided via any conventional image provider 80 .
- captured images are received via a computer network 82 after having been sent as image data over the computer network from a remote computer system.
- a human operator may be used to verify simulated actions of virtual operation 28 ( FIG. 1 ) prior to the entry data being input automatically to the client computer system. For example, when erroneous actions could have harmful effects, or significant risk is incurred by applying updates to the software system, the human operator may perform a review of the entry data on a control screen 84 and may provide a formal approval, before the entry data is entered to the software application, as described hereinbelow.
- a software application running on client computer system 72 ( FIG. 4 ) is used to manage back-office services for an insurance provider.
- the software application provides services comprising receiving payments from customers, associating the payments with insurance policies having outstanding monetary balances, and selectively applying the payments to the balances.
- FIG. 5 is a schematic, pictorial illustration of scanned and reference images using the embodiment of FIG. 4 .
- client computer 76 ( FIG. 4 ) scans a check received from a client, and captures a check image 86 using scanner 74 , storing check image 86 in database 78 .
- Client computer 76 processes check image 86 and identifies an account number image 88 , a bank account owner signature image 90 , and a payment amount image 92 .
- the software application processes the images, deriving a bank account owner name 94 , (“Jane Doe”), an account number 96, (“1234567890”), and a payment amount 98, (“$122.50”), in the present example.
- the software application searches database 78 ( FIG. 4 ) and locates an insurance policy holder, (“Jane Doe”), that matches bank account owner name 94 , and provides client computer system 72 with an insurance policy holder listing image, which is substantially similar to image 46 ( FIG. 2 ) for display by client computer 76 on screen 36 .
- the policy holder listing image typically displays the insurance policy number, the name of the customer, or insurance policy holder, and any outstanding monetary balance due.
- the software application displays check image 86 and the images identified thereupon, in addition to the processed check data, e.g., bank account owner name 94 , account number 96 , and payment amount 98 .
- virtual operation 28 may capture the insurance policy holder listing image from screen 36 .
- Image analyzer module 30 may be used by virtual operation 28 to recognize check image 86 and the images displayed thereupon, account number image 88 , bank account owner signature image 90 , and payment amount image 92 .
- Virtual operation 28 uses image verifier module 32 to verify that the images match the processed check data, typically stored in database 78 in the present example. Image verifier module 32 matches the images to the processed check data and in response to the matching, virtual operation 28 controls input device 18 to automatically input entry data to client computer system 72 to confirm processing of the check.
- an additional step may be taken for the purpose of safety.
- the software application provides an additional verification image 100 to the human operator on control screen 84 .
- Additional verification image 100 comprises the images derived from check image 86 , the processed check data, an acceptance button icon 102 , and a rejection button icon 104 .
- the human operator can compare bank account owner signature image 90 to bank account owner name 94 , for example, and if satisfied, accept the check for payment of the insurance policy by using acceptance button icon 102 .
- rejection button icon 104 may be used by the human operator to reject the check for payment of the balance.
- the present invention may be embodied as a system, method or computer program product. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, the present invention may take the form of a computer program product embodied in any tangible medium of expression having computer usable program code embodied in the medium.
- the computer-usable or computer-readable medium may be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium.
- the computer-readable medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CDROM), an optical storage device, a transmission media such as those supporting the Internet or an intranet, or a magnetic storage device.
- a computer-usable or computer-readable medium could even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via, for instance, optical scanning of the paper or other medium, then compiled, interpreted, or otherwise processed in a suitable manner, if necessary, and then stored in a computer memory.
- a computer-usable or computer-readable medium may be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
- the computer-usable medium may include a propagated data signal with the computer-usable program code embodied therewith, either in baseband or as part of a carrier wave.
- the computer usable program code may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc.
- Computer program code for carrying out operations of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages.
- the program code may execute entirely on a user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
- the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
- LAN local area network
- WAN wide area network
- Internet Service Provider for example, AT&T, MCI, Sprint, EarthLink, MSN, GTE, etc.
- Embodiments of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- These computer program instructions may also be stored in a computer-readable medium that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instruction means, which implement the function/act specified in the flowchart and/or block diagram block or blocks.
- the computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions, which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Entrepreneurship & Innovation (AREA)
- Strategic Management (AREA)
- Quality & Reliability (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Economics (AREA)
- Operations Research (AREA)
- Marketing (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Multimedia (AREA)
- Artificial Intelligence (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
A computer-implemented method for automating interaction with a computer system includes linking a control computer system to an input interface and to an output interface of a client computer system, which is operative for producing user interface images on a display device. The control computer system executes distinct software modules that include a virtual operator for simulating actions of a human operator. Execution of the software modules causes the control computer system to capture an image from the output interface, and to recognize information in the image. In response to the information, the virtual operator controls an input device to automatically execute predetermined operations on the client computer system via the input interface.
Description
- This application is a continuation-in-part of application Ser. No. 11/426,949, titled “SYSTEM, METHOD AND COMPUTER PROGRAM PRODUCT FOR PERFORMING INFORMATION TRANSFER USING A VIRTUAL OPERATOR,” filed Jun. 28, 2006, which is incorporated herein by reference.
- The present invention relates generally to software solutions and specifically to providing automatic interaction among business software applications using a virtual operator.
- Modern organizations typically employ interactive business software solutions, including multiple operative products that may support diverse business units. Such products typically include software applications to provide support for business requirements, e.g., financial operations, customer relationship management, human resources, professional services, purchasing, and distribution.
- The software applications may run on computerized systems, which can include legacy as well as modern systems. Often, at least a portion of the software and hardware of the computerized systems are tailored to support customized customer-specific functionality. Customizations may be applied at the time a new application is obtained, or as business needs change. Techniques utilized to enable a given system to be customized range from source code customization by professional services experts to interactive tool based approaches that allow end customers to make some changes themselves. At the end of the day, regardless of whether the software applications are “out-of-the-box”, customized, legacy or modern, they all need to be interactive to allow the data in each system to be accessible, shareable, and consistent.
- An embodiment of the present invention provides a computer-implemented method for automating interaction with a computer system, which is carried out by linking a control computer system to an input interface of a client computer system and to an output interface of the client computer system, which is operative for producing user interface images on a display device. Distinct software modules are executed with the control computer system, including a virtual operator for simulating actions of a human operator. Execution of the software modules causes the control computer system to capture an image from the output interface and to recognize information in the image. In response to the information, the virtual operator controls an input device to automatically execute predetermined operations on the client computer system via the input interface.
- Other embodiments of the invention provide computer software product and apparatus for carrying out the above-described method. Still other embodiments of the invention provide techniques for configuring a computer software product for carrying out the above-described method cooperatively with computer apparatus.
- For a better understanding of the present invention, reference is made to the detailed description of the invention, by way of example, which is to be read in conjunction with the following drawings, wherein like elements are given like reference numerals, and wherein:
-
FIG. 1 is a block diagram of a system for automating interaction with a computer system, in accordance with a disclosed embodiment of the invention; -
FIG. 2 shows a user interface screen, which displays a user interface image, in accordance with a disclosed embodiment of the invention; -
FIG. 3 is a flow chart of a method for automating interaction with a computer system, in accordance with a disclosed embodiment of the invention; -
FIG. 4 is a block diagram of a system for automating interaction with a computer system, in accordance with alternate embodiments of the invention; and -
FIG. 5 illustrates scanned and reference images produced by the embodiment ofFIG. 4 . - Embodiments of the present invention that are described hereinbelow provide improved methods, products and systems for automating interaction with a computer system. When integrating multiple modern software systems with legacy software systems, for example, it is a primary goal to maximize the efficiency of the integration by minimizing the effort necessary for data to flow among the systems.
- In the past, approaches to the issue have included manual data updates and queries to the legacy software systems, wherein human operators have prepared data in the required format, and have manually keyed the prepared data into the legacy software systems. This approach has proven to be costly in terms of resources, suffers from poor throughput, and is typically inaccurate. Another historical approach has been to replace the legacy software systems with new computerized systems designed to accurately integrate the data flow while providing the necessary functionality. This approach has proven to be quite expensive, wherein the replacement systems take significant resources to develop, often fail to meet the objectives of the design, and are typically provided later than scheduled.
- Yet another approach from the past has been to develop automated processes to convert data off-line, e.g., the processes are scheduled to operate during non-production hours, changing data in a modern format to a format acceptable to the legacy software systems. One drawback of this historical approach includes a lack of direct connectivity among the modern and legacy software systems. For example, verification that a client address stored in a legacy software system is accurate can take an unacceptably long time. This approach has also proven to be extremely expensive from a strategic point of view, as the conversion processes are typically “hard-wired”, or precisely tailored to match the data structures of the legacy software systems. Constant updates to the conversion processes are required as the modern software systems evolve.
- Embodiments of the present invention provide a virtual operator that emulates actions performed by a human operator using legacy software. The virtual operator interacts with the legacy software via an automated software system interfacing between modern and legacy software systems, or simply among any number of non-integrated software systems. In the context of the present patent application and claims, the term “virtual operator” refers to any software application or process that is capable of automatically performing actions on computer systems by interaction with a user interface, thus simulating identical actions performed by a human operator. In the context of the present patent application and claims, the term “legacy software system” refers to any software application that executes on a computer system and that continues to be used in spite of available newer technology, typically since the software application still meets the requirements of at least some of the users of the software application.
- In embodiments of the invention, a control computer system is linked to input and output interfaces of a client computer system that executes legacy computer software. The client computer system produces user interface images on a display device, typically in response to data entered via the input interface, e.g., using a keyboard or mouse. A virtual operator running on the control computer system simulates actions of a human operator, as described hereinbelow. The virtual operator captures one of the images from the output interface, and recognizes information in the image. Typically, the virtual operator uses an image analyzer to compare the image with a collection of image templates. In one example, the image analyzer uses optical character recognition (OCR) to analyze the image. In another example, complex processes such as creating hierarchical relationships among areas of the screen may be used in order to apply disambiguation via semantic entity identification.
- In some embodiments, the virtual operator verifies that the recognized information matches a known pattern. An image verifier is typically used to corroborate the match by extracting some type of marker from the image, such as text indicative of a screen function. For example, an image template may be used to make comparisons using the screen title text to identify the image. In another example, the image verifier may confirm that the currently displayed image on the display device of the client computer system is an address change screen.
- The virtual operator controls the input device, automatically executing predetermined operations on the client computer system. The input device is typically used to input entry data comprising simulated keystrokes, mouse clicks, and other operator actions according to an input script, as described hereinbelow. In the present example, entry data is input to the input interface of the client computer system via the input device to change a customer address. Alternatively, predetermined operations may be executed to simulate other human operator actions, to query legacy software systems, or to insert and update data, as required. Embodiments of the present invention provide a single reliable, high-speed interface among multiple software systems, such as between a modern software system and a legacy software system.
- Reference is now made to
FIG. 1 , which is a block diagram that schematically illustrates asystem 10 for automating interaction with a computer system, in accordance with a disclosed embodiment of the invention.System 10 typically comprises acontrol computer system 12 and at least oneclient computer system 14.Control computer system 12 may interface with multiple client computer systems, which are not shown for the sake of simplicity. Although portions ofsystem 10 shown inFIG. 1 and other drawing figures herein are shown as comprising a number of separate functional blocks, these blocks are not necessarily separate physical entities, but rather may represent, for example, different computing tasks or data objects stored in a memory that is accessible to a processor ofcontrol computer system 12. Embodiments of the present invention enablecontrol computer system 12 to automatically interact with the multiple client computer systems irrespective of their hardware and software configurations, as described hereinbelow.Control computer system 12 typically comprises a general-purpose control computer 16, which is programmed in software to carry out the functions that are described herein.Control computer system 12 also comprises aninput device 18 and astorage unit 20, as described hereinbelow. -
Control computer 16 comprises aprocessor 22, acapture interface 24, and amemory 26.Capture interface 24 may comprise a Bluetooth® adapter, an Infrared Data Association (IrDA) device, a cable connection, or any communication interface for capturing image data that allowscontrol computer 16 to receive output from a screen, e.g., in the form of an image bitmap. Avirtual operator 28, animage analyzer module 30, and animage verifier module 32 are held inmemory 26.Virtual operator 28,image analyzer module 30, andimage verifier module 32 may be downloaded to controlcomputer 16 in electronic form, over a network, for example, or they may alternatively be provided on tangible media, such as optical, magnetic or electronic memory media. Further alternatively, at least some of the functions ofcontrol computer 16 may be carried out by dedicated electronic logic circuits. Although the embodiment relates to one particular system for automating interaction with a computer system, the principles of automated interaction that are implemented insystem 10 may similarly be applied, mutatis mutandis, in other types of automated computer interaction systems using other techniques for automatically inputting entry data to client computer systems. -
Input device 18 may comprise any suitable device or device simulator that allowscontrol computer 16 to produce a sequence of device signals such as keyboard keystrokes or mouse clicks for input to a communications interface, which is typically connected to another computer system. One example of a suitable input simulator is the Microsoft Windows™ SendInput function for the Windows user interface, available at the Microsoft Developer Network website (msdn.microsoft.com). The SendInput function provides a tool to support simulation of keystrokes, mouse motions, and button clicks.Storage unit 20 may be any storage device that is capable of storing images captured bycapture interface 24, image templates, and any other data stored for retrieval byvirtual operator 28. -
Client computer system 14 typically comprises a general-purpose client computer 34, which is programmed in software to carry out the functions that are described herein.Client computer system 14 also comprises ascreen 36, as described herein.Client computer 34 comprises aninput interface 38, which may comprise any suitable communications interface that receives input signals representative of actions performed using input devices such as keyboards and computer mice.Input device 18 may provide simulated input, and as described hereinbelow, software applications may be used to enable remote control ofclient computer system 14 over a network. Thus embodiments of the present invention provide interoperability betweenclient computer system 14 andinput device 18 without necessitating any modifications to inputinterface 38.Screen 36 comprises a display device and anoutput interface 40, which may comprise a Bluetooth® adapter, an Infrared Data Association (IrDA) device, a cable connection, or any communication interface for outputting image data that allowsclient computer 34 to export visual display data, e.g., in the form of a compressed image. -
System 10 may includedevices 42 for producing a software product on a computer-readable medium, for example a CD or DVD writer. Devices employing many other technologies are also suitable for use asdevices 42, for example, writers adapted to tapes, hard disc drives, RAM, ROM, flash memory devices, floppy drives, programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), and magneto-optical discs. In all of these technologies patterns or transitions in the physical state of the medium are formed therein. These patterns and sequences of transitions encode instructions or data, e.g., binary numbers that are acceptable to the processor. The nature of the state transitions varies with the particular medium, and includes changes in magnetic domains in magnetic media, formation of pits or bumps on an optical disk, etc. Once the transitions are established, the medium may be transferred to anothercomputing device 44, which is capable of reading the medium, recognizing the transitions, and decoding them to identify executable instructions or data. - In an alternative embodiment of the present invention, control
computer system 12 andclient computer system 14 may run on asingle computer system 106 as separate processes. Communication between the systems may comprise events passed between the separate processes via any suitable application programming interface known in the art. The present embodiment provides for simplified image capture and input signal generation due to the processes running onsingle computer system 106, while eliminating the need to physically link multiple computer systems. - Reference is now made to
FIG. 2 , which is a schematic, pictorial illustration of a user interface screen, which displays user interface images, in accordance with a disclosed embodiment of the invention. Client computer 34 (FIG. 1 ) presents auser interface image 46 having application data fields 48 onscreen 36. For the purposes of illustration,image 46 is described using an example of an action performed on a software application to determine policy holder data in association with an insurance policy maintained in a legacy software system.Image 46 comprises ascreen function label 50, apolicy number field 52, a policyholder name field 54 and data fields 48. - Client computer system 14 (
FIG. 1 ) is adapted to execute at least one software application. The software application may be responsive to input operations, e.g., by signals sent to inputinterface 38, as described in more detail hereinbelow. In the present example, the software application provides storage and maintenance functionality for policy holder data for an insurance firm. Typically, the software application generates images such asimage 46 that are then displayed onscreen 36 in response to the actions. For example, a logon session can involve performing multiple actions in the predetermined order required to enter login and password information. - The software application may require additional input operations that cause client computer 34 (
FIG. 1 ) to display a different image onscreen 36.Virtual operator 28 typically captures the image fromscreen 36 or fromoutput interface 40, using any image capture method known in the art.Virtual operator 28 usesimage analyzer module 30 to recognize information in the image. A pseudocode listing of a sample image analysis that may be used in the context of the present example, whereby the software application is running on a mainframe computer, is presented hereinbelow inListing 1. Function find_nearest inListing 1 tries to locate each application data field based upon relative coordinates of the data field, for example,policy number field 52. - Image verifier module 32 (
FIG. 1 ) is used to confirm that the recognized information matches a pattern that is known tovirtual operator 28, as described hereinabove. A pseudocode listing of a sample screen recognition routine that may be used in this context is presented hereinbelow inListing 2. In the present example, the image contains a marker describing the function of the image, in the text ofscreen function label 50. A pseudocode listing of a sample screen verification routine that may be used in this context is presented hereinbelow in Listing 3. In the present example,screen function label 50 is verified to match expected screen function label values. - Typically, the software application provides some images that allow information entry, whereas other images are displayed that only allow information to be viewed. Some of the images provided by the software application may indicate to virtual operator 28 (
FIG. 1 ) that information entry has been completed. The input operations required for executing actions for each software application are known in advance, in the form of the above-noted input script, which is typically stored instorage unit 20. - Reference is now made to
FIG. 3 , which is a flow chart that schematically illustrates a method for automating interaction with a computer system, in accordance with a disclosed embodiment of the invention. Shown by way of example, the name of a policy holder at an insurance firm may need to be changed due to an update in the marital status of the policy holder.Virtual operation 28 would therefore need to simulate several actions of a human operator in order for to automatically interact with a legacy software application running onclient computer system 14 to successfully negotiate the requirement. - Control computer system 12 (
FIG. 1 ) is linked toclient computer system 14 in a computersystem linking step 56. Typically,input device 18 is linked to inputinterface 38, andoutput interface 40 is linked to captureinterface 24. - Control computer system 12 (
FIG. 1 ) executesvirtual operation 28 to simulate actions of a human operator, thus automatically interacting with the software application running onclient computer system 14, in a virtualoperator executing step 58. Virtual operation 28 (FIG. 1 ) causesprocessor 22 to perform the steps listed hereinbelow. - Capture interface 24 (
FIG. 1 ) captures an image, e.g.,image 46 displayed on screen 36 (FIG. 2 ) in animage capturing step 60. Additionally or alternatively,image 46 may be captured bycapture interface 24 viaoutput interface 40. In the current example,output interface 40 is a universal serial bus (USB), andimage 46 is captured from the software application. - As described hereinabove,
image analyzer module 30 may be invoked by virtual operation 28 (FIG. 1 ) to analyzeimage 46.Image analyzer module 30 recognizes information inimage 46 in aninformation recognition step 62, as described hereinabove in reference to the pseudocode listing presented inListing 1. A simple text layout is easily recognized byimage analyzer module 30, while comparingimage 46 to image templates stored instorage unit 20. The example provided by image 46 (FIG. 2 ), taken from a sample mainframe computer application, may be analyzed with ease byimage analyzer module 30. However, more complex analyses may be required if geometric primitives, e.g., rectangles or lines, are utilized by the software application running onclient computer system 14, as described hereinabove. - Virtual operation 28 (
FIG. 1 ) typically usesimage verifier module 32 to verify that the recognized information matches a known pattern in a recognized information patternmatching verification step 64. In the current example,image verifier module 32 verifies that the marker describing the function ofimage 46 matches the image template used byimage analyzer module 30 ininformation recognition step 62. Screen function label 50 (FIG. 2 ), the marker in the present example, has the value “INQ100”, and is verified against the image template byimage verifier module 32, thus confirming the identification ofimage 46 as matching the known pattern of the address change screen of the software application delineated by the image template. -
Virtual operation 28 responds to the pattern verification byimage verifier module 32, by controllinginput device 18 to automatically execute predetermined operations onclient computer system 14 in a device controlling andoperation executing step 66. These operations may be specified in an input script. A library of such input scripts may be stored instorage unit 20. A pseudocode listing of routines to generate data input that may be used in this context is presented hereinbelow in Listing 4.Virtual operation 28 causesinput device 18 to automatically execute predetermined operations, e.g., inputting entry data toclient computer system 14, thereby simulating actions of the human operator. In an embodiment of the present invention,virtual operation 28 uses RealVNC© server and client software applications, available from RealVNC Ltd, Betjeman House, 104 Hills Road, Cambridge. Cambridgeshire, CB2 1LQ. UK, to controlclient computer system 14 over a network. The RealVNC applications utilize remote framebuffer (also known as Remote Frame Buffer or RFB) functionality, a protocol which provides remote access to graphical user interfaces at the framebuffer level, and is available from the RealVNC web site (realvnc.com). Thus, the RealVNC applications provide the ability to send the output ofinput device 18 to inputinterface 38 and to place device events into the input event queue of the operating system ofclient computer system 14. The device events are then processed onclient computer system 14 as though a physical input device had been used to generate the events. - Each input script provides entry data for performing actions that have been precisely tailored to execute operations for a specific software application on a particular computer system via
input device 18. In the present example, the entry data comprises keystrokes and mouse clicks input byinput device 18 to execute the operations delineated by an input script. The input script provides the entry data that is necessary when using the software application running onclient computer system 14 in order to automatically select policyholder name field 54 and to automatically revise the policy holder name of the example. - The method then terminates at a
final step 68. - In tests performed utilizing an embodiment of
FIG. 1 of the above-described automated method, improved results were typically observed. The tests were performed using a single general-purpose computer running the Microsoft Windows operating system, wherein both controlcomputer system 12 andclient computer system 14 were implemented as processes running on the computer. In an exemplary test, a human operator interacted with multiple screens provided by a software application used for performance of a beneficiary change process in an insurance policy management system. Some application screens needed to be reviewed to verify information visually, and other application screens were used to apply changes utilizing the verified information. The human operator typically required approximately two minutes to complete a specific delineated set of actions. Application of the automated method resulted in identical results in an average of ten seconds, for a typical improvement in efficiency of approximately an order of magnitude. - Reference is now made to
FIG. 4 , which is a block diagram of analternative system 70 for automating interaction with a computer system, in accordance with alternate embodiments of the invention. Apart from the differences described below, the operation ofalternative system 70 is generally similar to that of system 10 (FIG. 1 ). As mentioned hereinabove,virtual operation 28 may interface with multiple client computer systems to automatically interact with software applications executing on the multiple client computer systems. In some embodiments, controlcomputer system 12 utilizes additional software modules, e.g., duplicate virtual operator, image analyzer, and image verifier modules. In alternate embodiments, a single instance of each distinct software module is required to interface with the multiple client computer systems and multiple software applications running thereon. - In some embodiments, a client computer system 72 (
FIG. 1 ) captures images from ascanner 74 linked to aclient computer 76, and the images are typically stored in adatabase 78, as described hereinbelow. In an alternative embodiment, images are provided via anyconventional image provider 80. In yet another alternative embodiment, captured images are received via acomputer network 82 after having been sent as image data over the computer network from a remote computer system. - In an alternative embodiment, a human operator may be used to verify simulated actions of virtual operation 28 (
FIG. 1 ) prior to the entry data being input automatically to the client computer system. For example, when erroneous actions could have harmful effects, or significant risk is incurred by applying updates to the software system, the human operator may perform a review of the entry data on acontrol screen 84 and may provide a formal approval, before the entry data is entered to the software application, as described hereinbelow. - For purposes of illustration, in an embodiment of the present invention, a software application running on client computer system 72 (
FIG. 4 ) is used to manage back-office services for an insurance provider. The software application provides services comprising receiving payments from customers, associating the payments with insurance policies having outstanding monetary balances, and selectively applying the payments to the balances. - Reference is now made to
FIG. 5 , which is a schematic, pictorial illustration of scanned and reference images using the embodiment ofFIG. 4 . In the present embodiment, client computer 76 (FIG. 4 ) scans a check received from a client, and captures acheck image 86 usingscanner 74, storingcheck image 86 indatabase 78.Client computer 76 processes checkimage 86 and identifies anaccount number image 88, a bank accountowner signature image 90, and a payment amount image 92. The software application processes the images, deriving a bankaccount owner name 94, (“Jane Doe”), anaccount number 96, (“1234567890”), and apayment amount 98, (“$122.50”), in the present example. - The software application searches database 78 (
FIG. 4 ) and locates an insurance policy holder, (“Jane Doe”), that matches bankaccount owner name 94, and providesclient computer system 72 with an insurance policy holder listing image, which is substantially similar to image 46 (FIG. 2 ) for display byclient computer 76 onscreen 36. The policy holder listing image typically displays the insurance policy number, the name of the customer, or insurance policy holder, and any outstanding monetary balance due. The software application displays checkimage 86 and the images identified thereupon, in addition to the processed check data, e.g., bankaccount owner name 94,account number 96, andpayment amount 98. - In the present example, virtual operation 28 (
FIG. 4 ) may capture the insurance policy holder listing image fromscreen 36.Image analyzer module 30 may be used byvirtual operation 28 to recognizecheck image 86 and the images displayed thereupon,account number image 88, bank accountowner signature image 90, and payment amount image 92.Virtual operation 28 usesimage verifier module 32 to verify that the images match the processed check data, typically stored indatabase 78 in the present example.Image verifier module 32 matches the images to the processed check data and in response to the matching,virtual operation 28controls input device 18 to automatically input entry data toclient computer system 72 to confirm processing of the check. - In an alternative embodiment of the present invention, after virtual operation 28 (
FIG. 4 ) has simulated the actions of a human operator by confirming that the check should be applied to the insurance policy holder's balance, an additional step may be taken for the purpose of safety. The software application provides anadditional verification image 100 to the human operator oncontrol screen 84.Additional verification image 100 comprises the images derived fromcheck image 86, the processed check data, anacceptance button icon 102, and arejection button icon 104. The human operator can compare bank accountowner signature image 90 to bankaccount owner name 94, for example, and if satisfied, accept the check for payment of the insurance policy by usingacceptance button icon 102. Alternatively,rejection button icon 104 may be used by the human operator to reject the check for payment of the balance. - In the previous description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent to one skilled in the art, however, that the present invention may be practiced without these specific details. In other instances, well-known circuits, control logic, and the details of computer program instructions for conventional algorithms and processes have not been shown in detail in order not to obscure the present invention unnecessarily.
- As will be appreciated by one skilled in the art, the present invention may be embodied as a system, method or computer program product. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, the present invention may take the form of a computer program product embodied in any tangible medium of expression having computer usable program code embodied in the medium.
- Any combination of one or more computer usable or computer readable medium(s) may be utilized. The computer-usable or computer-readable medium may be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples (a non-exhaustive list) of the computer-readable medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CDROM), an optical storage device, a transmission media such as those supporting the Internet or an intranet, or a magnetic storage device. Note that the computer-usable or computer-readable medium could even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via, for instance, optical scanning of the paper or other medium, then compiled, interpreted, or otherwise processed in a suitable manner, if necessary, and then stored in a computer memory. In the context of this document, a computer-usable or computer-readable medium may be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The computer-usable medium may include a propagated data signal with the computer-usable program code embodied therewith, either in baseband or as part of a carrier wave. The computer usable program code may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc.
- Computer program code for carrying out operations of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on a user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
- Embodiments of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- These computer program instructions may also be stored in a computer-readable medium that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instruction means, which implement the function/act specified in the flowchart and/or block diagram block or blocks.
- The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions, which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- It will be appreciated by persons skilled in the art that the present invention is not limited to what has been particularly shown and described hereinabove. Rather, the scope of the present invention includes both combinations and sub-combinations of the various features described hereinabove, as well as variations and modifications thereof that are not in the prior art, which would occur to persons skilled in the art upon reading the foregoing description.
-
COMPUTER PROGRAM LISTINGS Listing 1 image=acquire_screen OCR.recognize(image) for (text in set of phrases) if (text ends_with ”:”) labels.add(text) else fields.add(text) end for (field in fields) label=find_nearest(labels,field) associate_field(label,field) end Listing 2 Recognize(image) black_white_image=binarize(image) // convert color characters to b&w binary image cclist = find_connected_components(black_white_image) // red marks below for_each component letter=classify(component) insert_to_spatial_structure(letter) end compose_phrases_from_spatial_structure end Listing 3 SetField(field_label,value) label=find_closest_match(field_label) field=retrieve_associated_field(label) coords=extract_field_coordinates(field) mouse_click(coords) generate_keystrokes(value) end Listing 4 mouse_click(coords) input=create MOUSEINPUT structure input.coords=cords SendInput(input) // WIN32 API function end generate_keystrokes(value) for_each character in value generate_keystroke(character) end end generate_keystroke(character) input=create KEYBDINPUT structure input.character=character SendInput(input) // WIN32 API function end
Claims (20)
1. A computer-implemented method for automating interaction with a computer system comprising:
linking a control computer system to an input interface of a client computer system and to an output interface of the client computer system operative for producing user interface images on a display device; and
executing with the control computer system distinct software modules that include a virtual operator for simulating actions of a human operator, wherein execution of the software modules causes the control computer system to perform the steps of:
capturing an image from the output interface;
recognizing information in the image; and
responsively to the information, controlling an input device by the virtual operator to thereby automatically execute predetermined operations on the client computer system via the input interface.
2. The method according to claim 1 , wherein capturing the image from the output interface comprises receiving the image from an image scanner.
3. The method according to claim 1 , wherein recognizing information in the image comprises verifying that the recognized information matches a pattern that is known to the virtual operator.
4. The method according to claim 1 , wherein the predetermined operations comprise entering data.
5. The method according to claim 1 , wherein recognizing information comprises optical character recognition.
6. The method according to claim 1 , wherein the client computer system comprises a plurality of client computers, and the virtual operator comprises a plurality of instances of the virtual operator, the method comprising coordinating the plurality of instances of the virtual operator to concurrently control the plurality of client computers.
7. The method according to claim 1 , wherein recognizing information in the image comprises providing a verification image comprising the recognized information to the human operator.
8. The method according to claim 1 , wherein the predetermined operations comprise executing data input scripts comprising simulated device events.
9. A computer software product for automating interaction with a computer system, comprising a computer storage medium in which computer program instructions are stored, wherein the instructions comprise distinct modules that include a virtual operator for simulating actions of a human operator, which instructions, when executed by a control computer linked to an input interface of a client computer system and to an output interface of the client computer system operative for producing user interface images on a display device, cause the control computer to perform the steps of:
capturing an image from the output interface;
recognizing information in the image; and
responsively to the information, controlling an input device by the virtual operator to thereby automatically execute predetermined operations on the client computer system via the input interface.
10. The computer software product according to claim 9 , wherein capturing the image from the output interface comprises receiving the image from an image scanner.
11. The computer software product according to claim 9 , wherein recognizing information in the image comprises verifying that the recognized information matches a pattern that is known to the virtual operator.
12. The computer software product according to claim 9 , wherein the predetermined operations comprise entering data.
13. The computer software product according to claim 9 , wherein recognizing information comprises optical character recognition.
14. The computer software product according to claim 9 , wherein the client computer system comprises a plurality of client computers, and the virtual operator comprises a plurality of instances of the virtual operator, the method comprising coordinating the plurality of instances of the virtual operator to concurrently control the plurality of client computers.
15. The computer software product according to claim 9 , wherein recognizing information in the image comprises providing a verification image comprising the recognized information to the human operator.
16. The computer software product according to claim 9 , wherein the predetermined operations comprise executing data input scripts comprising simulated device events.
17. A data processing system automating interaction with a computer system, comprising:
a client computer system operative for producing user interface images on a display device;
a control computer system linked to an input interface and to an output interface of the client computer system;
a processor; and
a memory accessible to the processor storing programs and data objects therein, wherein execution of the programs causes the processor to execute with the control computer system distinct software modules that include a virtual operator for simulating actions of a human operator, and to perform the steps of:
capturing an image from the output interface;
recognizing information in the image; and
responsively to the information, controlling an input device by the virtual operator to thereby automatically execute predetermined operations on the client computer system via the input interface.
18. The data processing system according to claim 17 , wherein capturing the image from the output interface comprises receiving the image from an image scanner.
19. The data processing system according to claim 17 , wherein recognizing information in the image comprises verifying that the recognized information matches a pattern that is known to the virtual operator.
20. The data processing system according to claim 17 , wherein the predetermined operations comprise entering data.
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US12/555,821 US20100027896A1 (en) | 2006-06-28 | 2009-09-09 | Automated application interaction using a virtual operator |
| US14/292,947 US9928450B2 (en) | 2006-06-28 | 2014-06-02 | Automated application interaction using a virtual operator |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US11/426,949 US20080001959A1 (en) | 2006-06-28 | 2006-06-28 | System, Method and Computer Program Product for Performing Information Transfer Using a Virtual Operator |
| US12/555,821 US20100027896A1 (en) | 2006-06-28 | 2009-09-09 | Automated application interaction using a virtual operator |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US11/426,949 Continuation-In-Part US20080001959A1 (en) | 2006-06-28 | 2006-06-28 | System, Method and Computer Program Product for Performing Information Transfer Using a Virtual Operator |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US14/292,947 Continuation US9928450B2 (en) | 2006-06-28 | 2014-06-02 | Automated application interaction using a virtual operator |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| US20100027896A1 true US20100027896A1 (en) | 2010-02-04 |
Family
ID=41608433
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US12/555,821 Abandoned US20100027896A1 (en) | 2006-06-28 | 2009-09-09 | Automated application interaction using a virtual operator |
| US14/292,947 Expired - Fee Related US9928450B2 (en) | 2006-06-28 | 2014-06-02 | Automated application interaction using a virtual operator |
Family Applications After (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US14/292,947 Expired - Fee Related US9928450B2 (en) | 2006-06-28 | 2014-06-02 | Automated application interaction using a virtual operator |
Country Status (1)
| Country | Link |
|---|---|
| US (2) | US20100027896A1 (en) |
Cited By (51)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20120030105A1 (en) * | 2010-07-30 | 2012-02-02 | Bank Of America Corporation | Online check register using check imaging |
| US20140206549A1 (en) * | 2009-06-25 | 2014-07-24 | Fred Hutchinson Cancer Research Center | Method of measuring adaptive immunity |
| US20140241609A1 (en) * | 2013-02-27 | 2014-08-28 | Bottomline Technologies (De) Inc. | Mobile check issue capture system and method |
| US20140298449A1 (en) * | 2013-03-26 | 2014-10-02 | International Business Machines Corporation | Ocr-based single sign-on |
| US20140348430A1 (en) * | 2013-05-21 | 2014-11-27 | Kyocera Document Solutions Inc. | Log-Image Extracting Apparatus for High Security |
| US20150012919A1 (en) * | 2013-07-05 | 2015-01-08 | Blue Prism Limited | System for Automating Processes |
| US20150036875A1 (en) * | 2013-07-31 | 2015-02-05 | Nvidia Corporation | Method and system for application execution based on object recognition for mobile devices |
| US9081412B2 (en) | 2010-07-31 | 2015-07-14 | Hewlett-Packard Development Company, L.P. | System and method for using paper as an interface to computer applications |
| US9098217B2 (en) | 2013-03-22 | 2015-08-04 | Hewlett-Packard Development Company, L.P. | Causing an action to occur in response to scanned data |
| US9135512B2 (en) | 2011-04-30 | 2015-09-15 | Hewlett-Packard Development Company, L.P. | Fiducial marks on scanned image of document |
| US9150905B2 (en) | 2012-05-08 | 2015-10-06 | Adaptive Biotechnologies Corporation | Compositions and method for measuring and calibrating amplification bias in multiplexed PCR reactions |
| US9181591B2 (en) | 2011-10-21 | 2015-11-10 | Adaptive Biotechnologies Corporation | Quantification of adaptive immune cell genomes in a complex mixture of cells |
| US9217176B2 (en) | 2008-11-07 | 2015-12-22 | Sequenta, Llc | Methods of monitoring conditions by sequence analysis |
| US9365901B2 (en) | 2008-11-07 | 2016-06-14 | Adaptive Biotechnologies Corp. | Monitoring immunoglobulin heavy chain evolution in B-cell acute lymphoblastic leukemia |
| US9416420B2 (en) | 2008-11-07 | 2016-08-16 | Adaptive Biotechnologies Corp. | Monitoring health and disease status using clonotype profiles |
| US9499865B2 (en) | 2011-12-13 | 2016-11-22 | Adaptive Biotechnologies Corp. | Detection and measurement of tissue-infiltrating lymphocytes |
| US9506119B2 (en) | 2008-11-07 | 2016-11-29 | Adaptive Biotechnologies Corp. | Method of sequence determination using sequence tags |
| US9512487B2 (en) | 2008-11-07 | 2016-12-06 | Adaptive Biotechnologies Corp. | Monitoring health and disease status using clonotype profiles |
| US9528160B2 (en) | 2008-11-07 | 2016-12-27 | Adaptive Biotechnolgies Corp. | Rare clonotypes and uses thereof |
| US9708657B2 (en) | 2013-07-01 | 2017-07-18 | Adaptive Biotechnologies Corp. | Method for generating clonotype profiles using sequence tags |
| US9760966B2 (en) | 2013-01-08 | 2017-09-12 | Nvidia Corporation | Parallel processor with integrated correlation and convolution engine |
| US9824179B2 (en) | 2011-12-09 | 2017-11-21 | Adaptive Biotechnologies Corp. | Diagnosis of lymphoid malignancies and minimal residual disease detection |
| CN108154197A (en) * | 2018-01-22 | 2018-06-12 | 腾讯科技(深圳)有限公司 | Realize the method and device that image labeling is verified in virtual scene |
| US10066265B2 (en) | 2014-04-01 | 2018-09-04 | Adaptive Biotechnologies Corp. | Determining antigen-specific t-cells |
| US10077478B2 (en) | 2012-03-05 | 2018-09-18 | Adaptive Biotechnologies Corp. | Determining paired immune receptor chains from frequency matched subunits |
| US20180351905A1 (en) * | 2015-11-27 | 2018-12-06 | Soosan Int Co., Ltd. | Terminal identification method and apparatus therefor |
| US10150996B2 (en) | 2012-10-19 | 2018-12-11 | Adaptive Biotechnologies Corp. | Quantification of adaptive immune cell genomes in a complex mixture of cells |
| US10210575B1 (en) * | 2015-08-12 | 2019-02-19 | State Farm Mutual Automobile Insurance Company | System and method of using an image object as a visual data container |
| US10221461B2 (en) | 2012-10-01 | 2019-03-05 | Adaptive Biotechnologies Corp. | Immunocompetence assessment by adaptive immune receptor diversity and clonality characterization |
| US10246701B2 (en) | 2014-11-14 | 2019-04-02 | Adaptive Biotechnologies Corp. | Multiplexed digital quantitation of rearranged lymphoid receptors in a complex mixture |
| US10323276B2 (en) | 2009-01-15 | 2019-06-18 | Adaptive Biotechnologies Corporation | Adaptive immunity profiling and methods for generation of monoclonal antibodies |
| US10385475B2 (en) | 2011-09-12 | 2019-08-20 | Adaptive Biotechnologies Corp. | Random array sequencing of low-complexity libraries |
| US10392663B2 (en) | 2014-10-29 | 2019-08-27 | Adaptive Biotechnologies Corp. | Highly-multiplexed simultaneous detection of nucleic acids encoding paired adaptive immune receptor heterodimers from a large number of samples |
| US10428325B1 (en) | 2016-09-21 | 2019-10-01 | Adaptive Biotechnologies Corporation | Identification of antigen-specific B cell receptors |
| US10454993B2 (en) | 2017-10-11 | 2019-10-22 | Bank Of America Corporation | Smart resource instrument authorization |
| US10469572B2 (en) | 2017-02-15 | 2019-11-05 | Blue Prism Limited | System for optimizing distribution of processing an automated process |
| US20200089555A1 (en) * | 2018-09-17 | 2020-03-19 | Servicenow, Inc. | Service portal diagnosis system for providing a visual indication of a diagnosis |
| US10621327B2 (en) | 2017-10-11 | 2020-04-14 | Bank Of America Corporation | Smart resource instruments and devices |
| US11041202B2 (en) | 2015-04-01 | 2021-06-22 | Adaptive Biotechnologies Corporation | Method of identifying human compatible T cell receptors specific for an antigenic target |
| US11047008B2 (en) | 2015-02-24 | 2021-06-29 | Adaptive Biotechnologies Corporation | Methods for diagnosing infectious disease and determining HLA status using immune repertoire sequencing |
| US11066705B2 (en) | 2014-11-25 | 2021-07-20 | Adaptive Biotechnologies Corporation | Characterization of adaptive immune response to vaccination or infection using immune repertoire sequencing |
| US11194596B2 (en) * | 2017-11-30 | 2021-12-07 | Lendingclub Corporation | Simulating human interface interaction resilient to user interface changes |
| US11216354B2 (en) * | 2018-05-28 | 2022-01-04 | Open Invention Network Llc | Depicting outcomes of a decision |
| US11248253B2 (en) | 2014-03-05 | 2022-02-15 | Adaptive Biotechnologies Corporation | Methods using randomer-containing synthetic molecules |
| US11254980B1 (en) | 2017-11-29 | 2022-02-22 | Adaptive Biotechnologies Corporation | Methods of profiling targeted polynucleotides while mitigating sequencing depth requirements |
| US11390921B2 (en) | 2014-04-01 | 2022-07-19 | Adaptive Biotechnologies Corporation | Determining WT-1 specific T cells and WT-1 specific T cell receptors (TCRs) |
| US11983552B2 (en) | 2020-01-10 | 2024-05-14 | Blue Prism Limited | Method of remote access |
| US12291053B2 (en) | 2022-12-30 | 2025-05-06 | Jumio Corporation | Evaluating three-dimensional security features on document images |
| US12344023B2 (en) | 2022-12-30 | 2025-07-01 | Jumio Corporation | Document boundary analysis |
| US12350952B2 (en) | 2022-12-30 | 2025-07-08 | Jumio Corporation | Evaluating perforations on document images |
| US12499703B2 (en) | 2022-12-30 | 2025-12-16 | Jumio Corporation | Generating a document assembly object and derived checks |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10810020B2 (en) * | 2018-10-18 | 2020-10-20 | EMC IP Holding Company LLC | Configuring a device using an automated manual process bridge |
| WO2021186462A1 (en) * | 2020-03-14 | 2021-09-23 | Einnosys Technologies Llp | System and method for factory automation and enhancing machine capabilities |
| US20240346967A1 (en) * | 2023-04-13 | 2024-10-17 | Esper.io, Inc. | Automated Device-Interaction Emulator for Provisioning and Testing |
| US12023529B1 (en) | 2023-05-24 | 2024-07-02 | Ohd, Lllp | Virtual operator for respirator fit testing |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20020041327A1 (en) * | 2000-07-24 | 2002-04-11 | Evan Hildreth | Video-based image control system |
| US20050044450A1 (en) * | 2003-08-20 | 2005-02-24 | Nat. Inst. Of Advanced Industrial Sci. And Tech. | System and method for evaluating usability using virtual user |
| US20050080649A1 (en) * | 2003-10-08 | 2005-04-14 | Alvarez Andres C. | Systems and methods for automating the capture, organization, and transmission of data |
| US20050137910A1 (en) * | 2003-12-19 | 2005-06-23 | Rao R. B. | Systems and methods for automated extraction and processing of billing information in patient records |
| US6913199B2 (en) * | 2002-12-18 | 2005-07-05 | Symbol Technologies, Inc. | System and method for verifying optical character recognition of optical code reads |
| US20070095894A1 (en) * | 2005-11-01 | 2007-05-03 | Kevin Kerridge | Alternative banking system for managing traditional and nontraditional markets |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5576734A (en) * | 1993-10-28 | 1996-11-19 | The Mitre Corporation | Keyboard emulator system |
| US6611252B1 (en) * | 2000-05-17 | 2003-08-26 | Dufaux Douglas P. | Virtual data input device |
| JP2005044241A (en) * | 2003-07-24 | 2005-02-17 | Nec Corp | Pointing device notification system and method |
| US8171406B1 (en) * | 2009-08-19 | 2012-05-01 | Symantec Corporation | Automating user interface navigation |
-
2009
- 2009-09-09 US US12/555,821 patent/US20100027896A1/en not_active Abandoned
-
2014
- 2014-06-02 US US14/292,947 patent/US9928450B2/en not_active Expired - Fee Related
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20020041327A1 (en) * | 2000-07-24 | 2002-04-11 | Evan Hildreth | Video-based image control system |
| US6913199B2 (en) * | 2002-12-18 | 2005-07-05 | Symbol Technologies, Inc. | System and method for verifying optical character recognition of optical code reads |
| US20050044450A1 (en) * | 2003-08-20 | 2005-02-24 | Nat. Inst. Of Advanced Industrial Sci. And Tech. | System and method for evaluating usability using virtual user |
| US20050080649A1 (en) * | 2003-10-08 | 2005-04-14 | Alvarez Andres C. | Systems and methods for automating the capture, organization, and transmission of data |
| US20050137910A1 (en) * | 2003-12-19 | 2005-06-23 | Rao R. B. | Systems and methods for automated extraction and processing of billing information in patient records |
| US20070095894A1 (en) * | 2005-11-01 | 2007-05-03 | Kevin Kerridge | Alternative banking system for managing traditional and nontraditional markets |
Cited By (93)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10519511B2 (en) | 2008-11-07 | 2019-12-31 | Adaptive Biotechnologies Corporation | Monitoring health and disease status using clonotype profiles |
| US10865453B2 (en) | 2008-11-07 | 2020-12-15 | Adaptive Biotechnologies Corporation | Monitoring health and disease status using clonotype profiles |
| US10760133B2 (en) | 2008-11-07 | 2020-09-01 | Adaptive Biotechnologies Corporation | Monitoring health and disease status using clonotype profiles |
| US10246752B2 (en) | 2008-11-07 | 2019-04-02 | Adaptive Biotechnologies Corp. | Methods of monitoring conditions by sequence analysis |
| US10266901B2 (en) | 2008-11-07 | 2019-04-23 | Adaptive Biotechnologies Corp. | Methods of monitoring conditions by sequence analysis |
| US9506119B2 (en) | 2008-11-07 | 2016-11-29 | Adaptive Biotechnologies Corp. | Method of sequence determination using sequence tags |
| US9416420B2 (en) | 2008-11-07 | 2016-08-16 | Adaptive Biotechnologies Corp. | Monitoring health and disease status using clonotype profiles |
| US9228232B2 (en) | 2008-11-07 | 2016-01-05 | Sequenta, LLC. | Methods of monitoring conditions by sequence analysis |
| US9512487B2 (en) | 2008-11-07 | 2016-12-06 | Adaptive Biotechnologies Corp. | Monitoring health and disease status using clonotype profiles |
| US10155992B2 (en) | 2008-11-07 | 2018-12-18 | Adaptive Biotechnologies Corp. | Monitoring health and disease status using clonotype profiles |
| US9347099B2 (en) | 2008-11-07 | 2016-05-24 | Adaptive Biotechnologies Corp. | Single cell analysis by polymerase cycling assembly |
| US9523129B2 (en) | 2008-11-07 | 2016-12-20 | Adaptive Biotechnologies Corp. | Sequence analysis of complex amplicons |
| US9365901B2 (en) | 2008-11-07 | 2016-06-14 | Adaptive Biotechnologies Corp. | Monitoring immunoglobulin heavy chain evolution in B-cell acute lymphoblastic leukemia |
| US9528160B2 (en) | 2008-11-07 | 2016-12-27 | Adaptive Biotechnolgies Corp. | Rare clonotypes and uses thereof |
| US9217176B2 (en) | 2008-11-07 | 2015-12-22 | Sequenta, Llc | Methods of monitoring conditions by sequence analysis |
| US10323276B2 (en) | 2009-01-15 | 2019-06-18 | Adaptive Biotechnologies Corporation | Adaptive immunity profiling and methods for generation of monoclonal antibodies |
| US11214793B2 (en) | 2009-06-25 | 2022-01-04 | Fred Hutchinson Cancer Research Center | Method of measuring adaptive immunity |
| US9809813B2 (en) | 2009-06-25 | 2017-11-07 | Fred Hutchinson Cancer Research Center | Method of measuring adaptive immunity |
| US11905511B2 (en) | 2009-06-25 | 2024-02-20 | Fred Hutchinson Cancer Center | Method of measuring adaptive immunity |
| US20140206549A1 (en) * | 2009-06-25 | 2014-07-24 | Fred Hutchinson Cancer Research Center | Method of measuring adaptive immunity |
| US20120030105A1 (en) * | 2010-07-30 | 2012-02-02 | Bank Of America Corporation | Online check register using check imaging |
| US8676706B2 (en) * | 2010-07-30 | 2014-03-18 | Bank Of America Corporation | Online check register using check imaging |
| US9081412B2 (en) | 2010-07-31 | 2015-07-14 | Hewlett-Packard Development Company, L.P. | System and method for using paper as an interface to computer applications |
| US9135512B2 (en) | 2011-04-30 | 2015-09-15 | Hewlett-Packard Development Company, L.P. | Fiducial marks on scanned image of document |
| US10385475B2 (en) | 2011-09-12 | 2019-08-20 | Adaptive Biotechnologies Corp. | Random array sequencing of low-complexity libraries |
| US9181590B2 (en) | 2011-10-21 | 2015-11-10 | Adaptive Biotechnologies Corporation | Quantification of adaptive immune cell genomes in a complex mixture of cells |
| US9181591B2 (en) | 2011-10-21 | 2015-11-10 | Adaptive Biotechnologies Corporation | Quantification of adaptive immune cell genomes in a complex mixture of cells |
| US9279159B2 (en) | 2011-10-21 | 2016-03-08 | Adaptive Biotechnologies Corporation | Quantification of adaptive immune cell genomes in a complex mixture of cells |
| US9824179B2 (en) | 2011-12-09 | 2017-11-21 | Adaptive Biotechnologies Corp. | Diagnosis of lymphoid malignancies and minimal residual disease detection |
| US9499865B2 (en) | 2011-12-13 | 2016-11-22 | Adaptive Biotechnologies Corp. | Detection and measurement of tissue-infiltrating lymphocytes |
| US10077478B2 (en) | 2012-03-05 | 2018-09-18 | Adaptive Biotechnologies Corp. | Determining paired immune receptor chains from frequency matched subunits |
| US9371558B2 (en) | 2012-05-08 | 2016-06-21 | Adaptive Biotechnologies Corp. | Compositions and method for measuring and calibrating amplification bias in multiplexed PCR reactions |
| US10214770B2 (en) | 2012-05-08 | 2019-02-26 | Adaptive Biotechnologies Corp. | Compositions and method for measuring and calibrating amplification bias in multiplexed PCR reactions |
| US9150905B2 (en) | 2012-05-08 | 2015-10-06 | Adaptive Biotechnologies Corporation | Compositions and method for measuring and calibrating amplification bias in multiplexed PCR reactions |
| US10894977B2 (en) | 2012-05-08 | 2021-01-19 | Adaptive Biotechnologies Corporation | Compositions and methods for measuring and calibrating amplification bias in multiplexed PCR reactions |
| US11180813B2 (en) | 2012-10-01 | 2021-11-23 | Adaptive Biotechnologies Corporation | Immunocompetence assessment by adaptive immune receptor diversity and clonality characterization |
| US12104211B2 (en) | 2012-10-01 | 2024-10-01 | Adaptive Biotechnologies Corporation | Immunocompetence assessment by adaptive immune receptor diversity and clonality characterization |
| US10221461B2 (en) | 2012-10-01 | 2019-03-05 | Adaptive Biotechnologies Corp. | Immunocompetence assessment by adaptive immune receptor diversity and clonality characterization |
| US10150996B2 (en) | 2012-10-19 | 2018-12-11 | Adaptive Biotechnologies Corp. | Quantification of adaptive immune cell genomes in a complex mixture of cells |
| US9760966B2 (en) | 2013-01-08 | 2017-09-12 | Nvidia Corporation | Parallel processor with integrated correlation and convolution engine |
| US9406053B2 (en) * | 2013-02-27 | 2016-08-02 | Bottomline Technologies (De) Inc. | Mobile check issue capture system and method |
| US20140241609A1 (en) * | 2013-02-27 | 2014-08-28 | Bottomline Technologies (De) Inc. | Mobile check issue capture system and method |
| US9098217B2 (en) | 2013-03-22 | 2015-08-04 | Hewlett-Packard Development Company, L.P. | Causing an action to occur in response to scanned data |
| US10242173B2 (en) | 2013-03-26 | 2019-03-26 | International Business Machines Corporation | OCR-based single sign-on |
| US10013549B2 (en) | 2013-03-26 | 2018-07-03 | International Business Machines Corporation | OCR-based single sign-on |
| US20140298449A1 (en) * | 2013-03-26 | 2014-10-02 | International Business Machines Corporation | Ocr-based single sign-on |
| US9495534B2 (en) * | 2013-03-26 | 2016-11-15 | International Business Machines Corporation | OCR-based single sign-on |
| US9286531B2 (en) * | 2013-05-21 | 2016-03-15 | Kyocera Document Solutions Inc. | Log-image extracting apparatus for high security |
| US20140348430A1 (en) * | 2013-05-21 | 2014-11-27 | Kyocera Document Solutions Inc. | Log-Image Extracting Apparatus for High Security |
| US10526650B2 (en) | 2013-07-01 | 2020-01-07 | Adaptive Biotechnologies Corporation | Method for genotyping clonotype profiles using sequence tags |
| US10077473B2 (en) | 2013-07-01 | 2018-09-18 | Adaptive Biotechnologies Corp. | Method for genotyping clonotype profiles using sequence tags |
| US9708657B2 (en) | 2013-07-01 | 2017-07-18 | Adaptive Biotechnologies Corp. | Method for generating clonotype profiles using sequence tags |
| US11586453B2 (en) * | 2013-07-05 | 2023-02-21 | Blue Prism Limited | System for automating processes |
| US20150012919A1 (en) * | 2013-07-05 | 2015-01-08 | Blue Prism Limited | System for Automating Processes |
| CN105474210A (en) * | 2013-07-05 | 2016-04-06 | 蓝色棱镜有限公司 | Systems that run automated processes |
| US20150036875A1 (en) * | 2013-07-31 | 2015-02-05 | Nvidia Corporation | Method and system for application execution based on object recognition for mobile devices |
| US11248253B2 (en) | 2014-03-05 | 2022-02-15 | Adaptive Biotechnologies Corporation | Methods using randomer-containing synthetic molecules |
| US11390921B2 (en) | 2014-04-01 | 2022-07-19 | Adaptive Biotechnologies Corporation | Determining WT-1 specific T cells and WT-1 specific T cell receptors (TCRs) |
| US10435745B2 (en) | 2014-04-01 | 2019-10-08 | Adaptive Biotechnologies Corp. | Determining antigen-specific T-cells |
| US12351872B2 (en) | 2014-04-01 | 2025-07-08 | Adaptive Biotechnologies Corporation | Determining antigen-specific T-cells |
| US10066265B2 (en) | 2014-04-01 | 2018-09-04 | Adaptive Biotechnologies Corp. | Determining antigen-specific t-cells |
| US11261490B2 (en) | 2014-04-01 | 2022-03-01 | Adaptive Biotechnologies Corporation | Determining antigen-specific T-cells |
| US10392663B2 (en) | 2014-10-29 | 2019-08-27 | Adaptive Biotechnologies Corp. | Highly-multiplexed simultaneous detection of nucleic acids encoding paired adaptive immune receptor heterodimers from a large number of samples |
| US10246701B2 (en) | 2014-11-14 | 2019-04-02 | Adaptive Biotechnologies Corp. | Multiplexed digital quantitation of rearranged lymphoid receptors in a complex mixture |
| US11066705B2 (en) | 2014-11-25 | 2021-07-20 | Adaptive Biotechnologies Corporation | Characterization of adaptive immune response to vaccination or infection using immune repertoire sequencing |
| US12428682B2 (en) | 2015-02-24 | 2025-09-30 | Adaptive Biotechnologies Corporation | Methods for diagnosing infectious disease and determining HLA status using immune repertoire sequencing |
| US11047008B2 (en) | 2015-02-24 | 2021-06-29 | Adaptive Biotechnologies Corporation | Methods for diagnosing infectious disease and determining HLA status using immune repertoire sequencing |
| US11041202B2 (en) | 2015-04-01 | 2021-06-22 | Adaptive Biotechnologies Corporation | Method of identifying human compatible T cell receptors specific for an antigenic target |
| US10210575B1 (en) * | 2015-08-12 | 2019-02-19 | State Farm Mutual Automobile Insurance Company | System and method of using an image object as a visual data container |
| US10832344B1 (en) * | 2015-08-12 | 2020-11-10 | State Farm Mutual Automobile Insurance Company | System and method of using an image object as a visual data container |
| US20210056642A1 (en) * | 2015-08-12 | 2021-02-25 | State Farm Mutual Automobile Insurance Company | System and method of using an image object as a visual data container |
| US12271953B2 (en) * | 2015-08-12 | 2025-04-08 | State Farm Mutual Automobile Insurance Company | System and method of using an image object as a visual data container |
| US11935124B2 (en) * | 2015-08-12 | 2024-03-19 | State Farm Mutual Automobile Insurance Company | System and method of using an image object as a visual data container |
| US20180351905A1 (en) * | 2015-11-27 | 2018-12-06 | Soosan Int Co., Ltd. | Terminal identification method and apparatus therefor |
| US10701028B2 (en) * | 2015-11-27 | 2020-06-30 | Soosan Int Co., Ltd. | Terminal identification method and apparatus therefor |
| US10428325B1 (en) | 2016-09-21 | 2019-10-01 | Adaptive Biotechnologies Corporation | Identification of antigen-specific B cell receptors |
| US10469572B2 (en) | 2017-02-15 | 2019-11-05 | Blue Prism Limited | System for optimizing distribution of processing an automated process |
| US11290528B2 (en) | 2017-02-15 | 2022-03-29 | Blue Prism Limited | System for optimizing distribution of processing an automated process |
| US10938893B2 (en) | 2017-02-15 | 2021-03-02 | Blue Prism Limited | System for optimizing distribution of processing an automated process |
| US10621327B2 (en) | 2017-10-11 | 2020-04-14 | Bank Of America Corporation | Smart resource instruments and devices |
| US10454993B2 (en) | 2017-10-11 | 2019-10-22 | Bank Of America Corporation | Smart resource instrument authorization |
| US11254980B1 (en) | 2017-11-29 | 2022-02-22 | Adaptive Biotechnologies Corporation | Methods of profiling targeted polynucleotides while mitigating sequencing depth requirements |
| US11194596B2 (en) * | 2017-11-30 | 2021-12-07 | Lendingclub Corporation | Simulating human interface interaction resilient to user interface changes |
| CN108154197A (en) * | 2018-01-22 | 2018-06-12 | 腾讯科技(深圳)有限公司 | Realize the method and device that image labeling is verified in virtual scene |
| US20220083446A1 (en) * | 2018-05-28 | 2022-03-17 | Open Invention Network Llc | Depicting Outcomes of a Decision |
| US11216354B2 (en) * | 2018-05-28 | 2022-01-04 | Open Invention Network Llc | Depicting outcomes of a decision |
| US10831589B2 (en) * | 2018-09-17 | 2020-11-10 | Servicenow, Inc. | Service portal diagnosis system providing issue resolution steps |
| US20200089555A1 (en) * | 2018-09-17 | 2020-03-19 | Servicenow, Inc. | Service portal diagnosis system for providing a visual indication of a diagnosis |
| US11983552B2 (en) | 2020-01-10 | 2024-05-14 | Blue Prism Limited | Method of remote access |
| US12344023B2 (en) | 2022-12-30 | 2025-07-01 | Jumio Corporation | Document boundary analysis |
| US12350952B2 (en) | 2022-12-30 | 2025-07-08 | Jumio Corporation | Evaluating perforations on document images |
| US12291053B2 (en) | 2022-12-30 | 2025-05-06 | Jumio Corporation | Evaluating three-dimensional security features on document images |
| US12499703B2 (en) | 2022-12-30 | 2025-12-16 | Jumio Corporation | Generating a document assembly object and derived checks |
Also Published As
| Publication number | Publication date |
|---|---|
| US9928450B2 (en) | 2018-03-27 |
| US20140307969A1 (en) | 2014-10-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9928450B2 (en) | Automated application interaction using a virtual operator | |
| CN111652232B (en) | Bill identification method and device, electronic equipment and computer readable storage medium | |
| KR20210100600A (en) | software testing | |
| US11074162B2 (en) | System and a method for automated script generation for application testing | |
| CN104391694B (en) | Intelligent mobile terminal software public service support platform system | |
| US12159203B1 (en) | Creation and execution of portable software for execution on one or more remote computers | |
| Jaganeshwari et al. | An automated testing tool based on graphical user interface with exploratory behavioural analysis | |
| JP2022122740A (en) | Determination device, determination method and determination program | |
| US11593093B2 (en) | System and method using natural language processing to synthesize and build infrastructure platforms | |
| CN120412144B (en) | A cross-platform medical registration interaction method based on AI intelligent agents and multimodal recognition | |
| ARCHANA | Speech emotion recognition | |
| Hu et al. | Appaction: Automatic GUI interaction for mobile apps via holistic widget perception | |
| CN118377470B (en) | RPA login component automatic generation tool | |
| CN116560819B (en) | RPA-based batch automatic operation method, system, equipment and storage medium | |
| CN118505221A (en) | Transfer digest processing method, apparatus, storage medium, and computer program product | |
| Martínez-Rojas et al. | From screenshots to process models: improving activity identification through screen text | |
| Othman et al. | Mysims: A hybrid application of face recognition attendance and tuition management system | |
| CN118151915B (en) | Front-end component development method and system based on visualization technology | |
| CN111931465A (en) | Method and system for automatically generating user manual based on user operation | |
| KR102405092B1 (en) | System and method for providing requirements guide infomations for development of products | |
| CN120509955B (en) | A method and system for processing online banking transactions | |
| CN115687079B (en) | Method and apparatus for generating common code for test scripts | |
| CN119718946A (en) | Interface test method, device, apparatus, medium and program product | |
| US20080001959A1 (en) | System, Method and Computer Program Product for Performing Information Transfer Using a Virtual Operator | |
| Ahiara et al. | Near field communication internet of things (NFC-IoT) based university examination monitoring system |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION,NEW YO Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GEVA, AMIR;WEALACH, EUGENIUSZ;SIGNING DATES FROM 20060626 TO 20060627;REEL/FRAME:023222/0841 |
|
| STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |