Techniques for generation of synthetic data with simulated handwriting

Various embodiments are generally directed to techniques for generating synthetic data with simulated handwriting, such as for training or evaluating a computer vision process, for instance. Some embodiments are particularly directed to creating simulated handwriting based on input text. For example, attributes of various glyphs included in typefaces stored in a vectorized graphics format may be randomized to produce randomized glyphs. The randomized glyphs may then be used to replace glyphs in an input text to generate simulated handwriting for the input text. In some embodiments, simulated handwriting may be overlaid with a background image to produce a synthetic handwriting image. In some such embodiments, noise may be introduced into the synthetic handwriting image to generate synthetic data comprising the simulated handwriting. In one embodiment, the synthetic data may simulate a handwritten check that is used to train or evaluate an optical character recognition process.

FIELD

The present disclosure relates generally to the field of data simulation. In particular, the present disclosure relates to devices, systems, and methods for synthetic data comprising simulated handwriting.

BACKGROUND

Synthetic data may refer to data applicable to a given situation that are not obtained by direct measurement. Typically, synthetic data is generated to meet specific needs or certain conditions that may not be readily available in real data (e.g., production data). This can be useful when designing computer system because the synthetic data can be used as a simulation or as a theoretical value, situation, etcetera. Thus, synthetic data may be used to train systems to handle a situation prior to occurrence of the situation. For example, synthetic data may be used to evaluate or train computer vision processes when sufficient real data is not available. Oftentimes computer vision processes seek to automate tasks that the human visual system can do. Computer vision processes may include one or more of image processing, image analysis, and machine vision.

BRIEF SUMMARY

This summary is not intended to identify only key or essential features of the described subject matter, nor is it intended to be used in isolation to determine the scope of the described subject matter. The subject matter should be understood by reference to appropriate portions of the entire specification of this patent, any or all drawings, and each claim.

In one embodiment, the present disclosure relates to an apparatus comprising a processor and memory comprising instructions that when executed by the processor cause the processor to perform one or more of: identify a set of typefaces, each typeface in the set of typefaces comprising a collection of glyphs, and each glyph in the collection of glyphs stored in a vector graphics format with a set of vector attributes; identify a set of randomization parameters, the set of randomization parameters comprising a plurality of randomization factors; select a randomized typeface from the set of typefaces based on a first randomization factor of the plurality of randomization factors; identify an input text comprising a first character; determine an exchange glyph, from the collection of glyphs included in the randomized typeface, that corresponds to the first character of the input text; generate a randomized set of vector attribute values for the exchange glyph based on the set of vector attributes corresponding to the exchange glyph and a second randomization factor of the plurality of randomization factors; randomize the exchange glyph with the randomized set of vector attribute values to produce a randomized glyph; generate simulated handwriting comprising the randomized glyph; and utilize the simulated handwriting to train or evaluate a computer vision process.

In various embodiments, the instructions, when executed by the processor, further cause the processor to perform one or more of: overlay the simulated handwriting with a background image to produce a synthetic handwriting image; generate synthetic data based on the synthetic handwriting image; and utilize the synthetic data comprising the simulated handwriting to train or evaluate the computer vision process. In some embodiments, the synthetic data utilizes a raster graphics format. In many embodiments, the instructions, when executed by the processor, further cause the processor to select the background image from a set of background images based on at least one randomization factor of the one or more randomization factors. In several embodiments, the instructions, when executed by the processor, further cause the processor to introduce noise into the synthetic handwriting image to generate the synthetic data. In several such embodiments, the instructions, when executed by the processor, further cause the processor to add one or more of image blur, errata, wrinkles, misalignment, and rotation to the synthetic handwriting image to introduce noise into the synthetic handwriting image to generate the synthetic data. In various embodiments, the randomized set of vector attribute values for the exchange glyph includes values for one or more of a coordinate, a path, a curve, a font size, a weight, an alignment, a color, a consistency, a kerning, a baseline, a leading, a counter, and a Bezier curve. In some embodiments, the instructions, when executed by the processor, further cause the processor to vary a default value for at least one vector attribute of the exchange glyph based on the second randomization factor to generate the randomized set of vector attribute values for the exchange glyph. In many embodiments, the second randomization factor comprises one or more ranges corresponding to values for vector attributes.

In one embodiment, the present disclosure relates to at least one non-transitory computer-readable medium comprising a set of instructions that, in response to being executed by a processor circuit, cause the processor circuit to perform one or more of: identify a set of typefaces, each typeface in the set of typefaces comprising a collection of glyphs, and each glyph in the collection of glyphs stored in a vector graphics format with a set of vector attributes; identify a set of randomization parameters, the set of randomization parameters comprising a plurality of randomization factors; select a randomized typeface from the set of typefaces based on a first randomization factor of the plurality of randomization factors; identify an input text comprising a first character; determine an exchange glyph, from the collection of glyphs included in the randomized typeface, that corresponds to the first character of the input text; generate a randomized set of vector attribute values for the exchange glyph based on the set of vector attributes corresponding to the exchange glyph and a second randomization factor of the plurality of randomization factors; randomize the exchange glyph with the randomized set of vector attribute values to produce a randomized glyph; generate simulated handwriting comprising the randomized glyph; and utilize the simulated handwriting to train or evaluate an optical character recognition (OCR) process.

In various embodiments, the instructions, when executed by the processor, further cause the processor to perform one or more of: overlay the simulated handwriting with a background image to produce a synthetic handwriting image; generate synthetic data based on the synthetic handwriting image; and utilize the synthetic data comprising the simulated handwriting to train or evaluate the OCR process. In various such embodiments, the set of instructions, in response to execution by the processor circuit, further cause the processor circuit to introduce noise into the synthetic handwriting image to generate the synthetic data. In some such embodiments, the set of instructions, in response to execution by the processor circuit, further cause the processor circuit to add one or more of image blur, errata, wrinkles, misalignment, and rotation to the synthetic handwriting image to introduce noise into the synthetic handwriting image to generate the synthetic data. In many embodiments, the randomized set of vector attribute values for the exchange glyph includes values for one or more of a coordinate, a path, a curve, a font size, a weight, an alignment, a color, a consistency, a kerning, a baseline, a leading, a counter, and a Bezier curve. In several embodiments, the set of instructions, in response to execution by the processor circuit, further cause the processor circuit to vary a default value for at least one vector attribute of the exchange glyph based on the second randomization factor to generate the randomized set of vector attribute values for the exchange glyph. In various embodiments, the second randomization factor comprises one or more ranges corresponding to values for vector attributes.

In one embodiment, the present disclosure relates to a computer-implemented method, comprising: identifying a set of typefaces, each typeface in the set of typefaces comprising a collection of glyphs, and each glyph in the collection of glyphs stored in a vector graphics format with a set of vector attributes; identifying a set of randomization parameters, the set of randomization parameters comprising a plurality of randomization factors; selecting a randomized typeface from the set of typefaces based on a first randomization factor of the plurality of randomization factors; identifying an input text comprising a first character; determining an exchange glyph, from the collection of glyphs included in the randomized typeface, that corresponds to the first character of the input text; generating a randomized set of vector attribute values for the exchange glyph based on the set of vector attributes corresponding to the exchange glyph and a second randomization factor of the plurality of randomization factors; randomizing the exchange glyph with the randomized set of vector attribute values to produce a randomized glyph; generating simulated handwriting comprising the randomized glyph; and utilizing the simulated handwriting to train or evaluate an optical character recognition (OCR) process.

In various embodiments, the computer-implemented method includes overlaying the simulated handwriting with a background image to produce a synthetic handwriting image; generating synthetic data based on the synthetic handwriting image; and utilizing the synthetic data comprising the simulated handwriting to train or evaluate the OCR process. In many embodiments, the computer-implemented method includes selecting the background image from a set of background images based on at least one randomization factor of the one or more randomization factors. In some embodiments, the computer-implemented method includes varying a default value for at least one vector attribute of the exchange glyph based on the second randomization factor to generate the randomized set of vector attribute values for the exchange glyph.

DETAILED DESCRIPTION

Various embodiments are generally directed to techniques for generating synthetic data with simulated handwriting, such as for training or evaluating a computer vision process, for instance. Some embodiments are particularly directed to creating simulated handwriting based on input text. For example, attributes of various glyphs included in typefaces stored in a vectorized graphics format may be randomized to produce randomized glyphs. The randomized glyphs may then be used to replace glyphs in an input text to generate simulated handwriting for the input text. In some embodiments, simulated handwriting may be overlaid with a background image to produce a synthetic handwriting image. In some such embodiments, noise may be introduced into the synthetic handwriting image to generate synthetic data comprising the simulated handwriting. In one embodiment, the synthetic data may simulate a handwritten check that is used to train or evaluate an optical character recognition process. These and other embodiments are described and claimed.

Some challenges facing the generation of synthetic data include creating sufficient synthetic data to train robust computer vision processes, such as for check image processing, that can accommodate the wide range of variation in human handwriting and images captured by humans, such as images of the human handwriting. Existing typefaces are too uniform and/or consistent to account for this wide range of variation in human handwriting. Adding further complexity, real data (e.g., production data) comprising sufficient instances of actual handwriting to train a robust computer vision process may not be readily available. Oftentimes the use of actual handwriting examples is restricted due to the confidential nature of the content. For instance, in check image processing handwriting examples may include confidential information such as nonpublic information (NPI) or payment card information (PCI), and therefore cannot be used. These and other factors may result in synthetic data that does not adequately represent actual handwriting or images captured by humans, such as images of handwriting. Such limitations can drastically reduce the usability of the synthetic data, contributing to inaccurate systems and lost opportunities for automation.

Various embodiments described hereby include a synthetic data generator that is able to simulate handwriting and/or images captured by humans in a realistic and usable manner. In some embodiments, the simulated handwriting may be used to train robust computer vision processes, such as OCR processes for check image processing. Oftentimes the computer vision process may utilize a machine learning (ML) algorithm. In many embodiments, vector attributes of glyphs in various typefaces may be randomized and used to replace an input text, such as from a data generation service. In various embodiments, the simulated handwriting may be overlaid with a background image to produce a synthetic handwriting image. In various such embodiments, noise may be introduced into the synthetic handwriting image to produce synthetic data with simulated handwriting in an efficient and realistic manner. Further, the synthetic data generated may accurately represent the variations in human handwriting and/or images captured by humans that corresponds with production data that will be provided as input to a computer vision process. Thus, techniques described hereby may enable the generation of simulated handwriting, synthetic handwriting images, and/or synthetic data that can be used to train a robust computer vision process, such as for automating tasks and reducing the need for manual review.

In these and other ways, components and techniques described hereby may identify methods to increase efficiency, decrease performance costs, decrease computational cost, and/or reduce resource requirements to create synthetic data and/or computer vision processes in an accurate, applicable, and scalable manner, resulting in several technical effects and advantages over conventional computer technology, including increased capabilities and improved adaptability. In various embodiments, one or more of the aspects, techniques, and/or components described hereby may be implemented in a practical application via one or more computing devices, and thereby provide additional and useful functionality to the one or more computing devices, resulting in more capable, better functioning, and improved computing devices. For instance, the practical application may include the generation of synthetic data that accurately represents human handwriting or images captured by a human. In another instance, the practical application may include the generation of a computer vision process that accurately and reliably interprets human handwriting. Further, one or more of the aspects, techniques, and/or components described hereby may be utilized to improve the technical fields of one or more of synthetic data generation, computer vision, image processing, image analysis, machine learning, and/or machine vision.

In several embodiments, components described hereby may provide specific and particular manners of to enable the generation of synthetic data that accurately represents human handwriting and images captured by humans. In several such embodiments, for example, the specific and particular manners include randomizing vector attributes of glyphs included in typefaces to simulate variations in human handwriting or overlaying simulated handwriting onto a background image and introducing noise to simulate images captured by a human. In many embodiments, one or more of the components described hereby may be implemented as a set of rules that improve computer-related technology by allowing a function not previously performable by a computer that enables an improved technological result to be achieved. For example, the function allowed may include one or more of: identifying a set of typefaces, each typeface in the set of typefaces comprising a collection of glyphs, and each glyph in the collection of glyphs stored in a vector graphics format with a set of vector attributes; identifying a set of randomization parameters, the set of randomization parameters comprising a plurality of randomization factors; selecting a randomized typeface from the set of typefaces based on a first randomization factor of the plurality of randomization factors; identifying an input text comprising a first character; determining an exchange glyph, from the collection of glyphs included in the randomized typeface, that corresponds to the first character of the input text; generating a randomized set of vector attribute values for the exchange glyph based on the set of vector attributes corresponding to the exchange glyph and a second randomization factor of the plurality of randomization factors; randomizing the exchange glyph with the randomized set of vector attribute values to produce a randomized glyph; generating simulated handwriting comprising the randomized glyph; utilizing the simulated handwriting to train or evaluate an computer vision process; overlaying the simulated handwriting with a background image to produce a synthetic handwriting image; generating synthetic data based on the synthetic handwriting image; and utilizing the synthetic data comprising the simulated handwriting to train or evaluate the computer vision process.

FIG.1illustrates a synthetic data generator102in conjunction with a computer vision process108according to one or more embodiments disclosed hereby. In various embodiments, the synthetic data generator102may create data including simulated handwriting for training or evaluating the computer vision process108. For example, synthetic data generator102may create a set of simulated bank checks to train or evaluate a computer vision process for mobile check deposit technology. The synthetic data generator102may include a handwriting simulator104and an output controller106. In some embodiments,FIG.1may include one or more components that are the same or similar to one or more other components of the present disclosure. Further, one or more components ofFIG.1, or aspects thereof, may be incorporated into other embodiments of the present disclosure, or excluded from the disclosed embodiments, without departing from the scope of this disclosure. For example, some embodiments may exclude the computer vision process108without departing from the scope of this disclosure. Additionally, one or more components of other embodiments of the present disclosure, or aspects thereof, may be incorporated into one or more components ofFIG.1, without departing from the scope of this disclosure. Embodiments are not limited in this context.

FIG.2illustrates various aspects of a handwriting simulator202and an output controller212of a synthetic data generator according to one or more embodiments disclosed hereby. In various embodiments, the handwriting simulator202may generate simulated handwriting210based on input text208and the output controller212may generate synthetic data218comprising the simulated handwriting210. The handwriting simulator202may include a typeface analyzer204and a typeface manipulator206. The output controller212may include an incorporator214and a manipulator216. In some embodiments,FIG.2may include one or more components that are the same or similar to one or more other components of the present disclosure. For example, handwriting simulator202may be the same or similar to handwriting simulator104and output controller212may be the same or similar to output controller106. Further, one or more components ofFIG.2, or aspects thereof, may be incorporated into other embodiments of the present disclosure, or excluded from the disclosed embodiments, without departing from the scope of this disclosure. For example, output controller212may be excluded from some embodiments without departing from the scope of this disclosure. Additionally, one or more components of other embodiments of the present disclosure, or aspects thereof, may be incorporated into one or more components ofFIG.2, without departing from the scope of this disclosure. For example, computer vision process108may be incorporated into the illustrated embodiment such that synthetic data218is provided as input to the computer vision process108without departing from the scope of this disclosure. Embodiments are not limited in this context.

Generally, the handwriting simulator202may produce simulated handwriting210based on input text208. In various embodiments, the input text208may include synthetic data. However, the input text208may not include simulated handwriting. For example, input text208may include one or more of names, addresses, account numbers, routing numbers, signatures, endorsements, and the like for simulated account holders. Additionally, input text208may include one or more of amounts, dates, recipients, and the like for simulated transactions corresponding to the simulated account holders. Accordingly, the handwriting simulator202may generate simulated handwriting210comprising the names, addresses, and/or account numbers for the simulated account holders and the dates and/or amounts for the simulated transactions.

The output controller212may then combine the simulated handwriting210with one or more other data elements to produce synthetic data218comprising the simulated handwriting210. For instance, the output controller212may overlay one or more of the name, address, account number, routing number, signature, endorsement for a simulated account holder and one or more of the date, amount, and recipient for a simulated transaction onto an image of a check to produce a simulated check to form at least a portion of synthetic data218. In some embodiments, this procedure may be repeated for a set of simulated account holders to produce synthetic data comprising a set of simulated checks. In various embodiments, some of the input text208may be incorporated into the synthetic data218without being converted to simulated handwriting210. For example, account numbers and routing numbers may be overlaid onto an image of a check without being converted to simulated handwriting. Input text208that is not converted to simulated handwriting210may still be changed from a first typeface to a second typeface. In some embodiments, the input text208may be utilized as labels for the resulting simulated handwriting210. Accordingly, when using the simulated handwriting210to train or evaluate a computer vision process, such as one utilizing a ML algorithm, the input text208can be used to evaluate the accuracy of the computer vision process.

FIG.3illustrates an exemplary handwriting simulator process flow300according to one or more embodiments disclosed hereby. As will be described in more detail below, in handwriting simulator process flow300, typeface analyzer304may evaluate a typeface set306to identify a typeface library302. Then, typeface manipulator312may utilize the typeface library302, one or more randomization parameters308, and input text310to generate simulated handwriting332. In some embodiments,FIG.3may include one or more components that are the same or similar to one or more other components of the present disclosure. For example, typeface analyzer304may be the same or similar to typeface analyzer204and typeface manipulator312may be the same or similar to input text208. Further, one or more components ofFIG.3, or aspects thereof, may be incorporated into other embodiments of the present disclosure, or excluded from the disclosed embodiments, without departing from the scope of this disclosure. For example, typeface analyzer304may be excluded from some embodiments without departing from the scope of this disclosure. Additionally, one or more components of other embodiments of the present disclosure, or aspects thereof, may be incorporated into one or more components ofFIG.3, without departing from the scope of this disclosure. Embodiments are not limited in this context.

The typeface library302may include a plurality of typefaces. In various embodiments, the typeface analyzer304may be utilized to identify typefaces in typeface library302that resemble handwriting (e.g., typeface314a, typeface314b). In various embodiments, semblance to handwriting may be determined based on various characteristics of the typefaces, such as slant, curvature, and spacing. For example, typefaces with discrete changes (e.g., 90 degree angles), as opposed to continuous changes (e.g., curves), may not be identified as resembling handwriting. Each typeface in typeface set306may be stored in a vector graphics format. In some embodiments, typeface analyzer304may filter out any typefaces in typeface library302that are not stored in a vector graphics format with a set of vector attributes. In the illustrated embodiment, typeface analyzer304identifies typeface set306including a first typeface314awith glyphs316aand vector attributes318aand a second typeface314bwith glyphs316band vector attributes318bfrom typeface library302. In various embodiments, the vector attributes may include one or more of a coordinate, a path, a curve, a font size, a weight, an alignment, a color, a consistency, a kerning, a baseline, a leading, a counter, and a Bezier curve. In many embodiments, the vector attributes may include default values.

Typeface manipulator312may utilize the typeface set306, one or more randomization parameters308, and input text310to generate simulated handwriting332. For example, typeface manipulator312may select randomized typeface324from typeface set306based on one or more randomization parameters308. In some embodiments, one or more of the randomization parameters308may comprise seeds for random number generators. In various embodiments, one or more of the randomization parameters308may include ranges corresponding to values for vector attributes. In the illustrated embodiment, input text310may include character320aand character320b, however, it will be appreciated that input text310may include any number of characters without departing from the scope of this disclosure. Similarly, randomization parameters308may include any number of randomization factors without departing from the scope of this disclosure.

In various embodiments, typeface manipulator312may replace each character in the input text310with a randomized glyph to generate simulated handwriting. According to at least one embodiment, an exemplary process for replacing character320ain input text310may proceed as follows. However, it will be appreciated that this process may be repeated for each character or each word or each portion of input text (e.g., each account number, each address, each name, etcetera) to produce simulated handwriting. Typeface manipulator312may select typeface314bas randomized typeface324based on randomization factor322a. In some embodiments, the randomized typeface324may be selected based on one or more randomization factors and the character currently being replaced (i.e., character320a). In various embodiments, an exchange glyph326for character320amay be identified based on the glyph in glyphs316athat corresponds to character320a. For example, if character320acomprises an “a” then typeface manipulator312may determine the glyph in glyphs316athat corresponds to an “a” as the exchange glyph326. The typeface manipulator312may then generate randomized vector attribute values328for the exchange glyph326based on one or more of the randomization parameters308(e.g., randomization factor322b). The randomized vector attribute values328may then be applied to exchange glyph326to produce the randomized glyph330. Finally, the randomized glyph330may be used to replace character320ain simulated handwriting332. In various embodiments, simulated handwriting332may comprise randomized glyphs for each character of text utilized in a single document. For example, simulated handwriting332may include a name, amount, date, signature, and endorsement for a simulated check.

FIG.4illustrates an exemplary output controller process flow400according to one or more embodiments disclosed hereby. As will be described in more detail below, in output controller process flow400, incorporator404may utilize simulated handwriting402, one or more randomization parameters412, and image library410to produce synthetic handwriting image418. Then manipulator408may utilize the synthetic handwriting image418and one or more randomization parameters412to generate synthetic data406. In some embodiments,FIG.4may include one or more components that are the same or similar to one or more other components of the present disclosure. For example, incorporator404may be the same or similar to incorporator214and manipulator408may be the same or similar to manipulator216. Further, one or more components ofFIG.4, or aspects thereof, may be incorporated into other embodiments of the present disclosure, or excluded from the disclosed embodiments, without departing from the scope of this disclosure. For example, manipulator408may be excluded from some embodiments without departing from the scope of this disclosure. Additionally, one or more components of other embodiments of the present disclosure, or aspects thereof, may be incorporated into one or more components ofFIG.4, without departing from the scope of this disclosure. Embodiments are not limited in this context.

In the illustrated embodiment, incorporator404may overlay simulated handwriting402with one or more images from image library410produce synthetic handwriting image418. The image library410may include images of various documents and document features upon which handwriting may be applied or found. For example, image library410may include one or more of forms, questionnaires, checks, watermarks, contracts, surveys, and backgrounds. In some embodiments, incorporator404may combine multiple images from image library410to overlay simulated handwriting402onto. For example, an image of an image of a blank check may be combined with an image of a tiger and an image of a watermark to create a check image. Simulated handwriting402may then be overlaid onto the check image to produce synthetic handwriting image418. In many embodiments, incorporator404may identify appropriate sections of the image to add corresponding portions of the simulated handwriting402. For example, a name may be added to the name section of a check image, an amount may be added to the amount section of the check image, and so on. In many embodiments, the images may be selected from the image library410based on one or more of the randomization parameters412, such as randomization factor414.

The manipulator408may then introduce noise into the synthetic handwriting image418to generate synthetic data406. In some embodiments, manipulator408may introduce noise into the synthetic handwriting image418based on one or more of randomization parameters412(e.g., randomization factor416). In various embodiments, manipulator408may add one or more of image blur, errata, wrinkles, misalignment, and rotation to the synthetic handwriting image418to introduce noise into the synthetic handwriting image418to generate the synthetic data406. In some embodiments, the manipulator408may convert the synthetic handwriting image418to a different format to produce synthetic data406. For example, the synthetic handwriting image418may be converted from a vector graphics format (e.g., .svg) to a raster graphics format (e.g., .jpg or .png).

FIG.5Aillustrates one embodiment of a logic flow500a, which may be representative of operations that may be executed in various embodiments in conjunction with techniques disclosed hereby. The logic flow500amay be representative of some or all of the operations that may be executed by one or more components/devices/environments described hereby, such as synthetic data generator102, computer vision process108, handwriting simulator202, typeface analyzer304, and/or typeface manipulator312. The embodiments are not limited in this context.

In the illustrated embodiment, logic flow500amay begin at block502. At block502“identify a set of typefaces, each typeface in the set of typefaces comprising a collection of glyphs, and each glyph in the collection of glyphs stored in a vector graphics format with a set of vector attributes” a set of typefaces comprising a collection of glyphs stored in a vector graphics format with a set of vector attributes may be identified. For example, typeface manipulator312may identify typeface set306comprising typeface314aincluding glyphs316aand vector attributes318aand typeface314bincluding glyphs316band vector attributes318b. In several embodiments, each typeface in the typeface set306may resemble or be associated with handwriting. In many embodiments, typeface analyzer304may generate the typeface set306based on typeface library302.

Continuing to block504“identify a set of randomization parameters, the set of randomization parameters comprising a plurality of randomization factors” a set of randomization parameters including a plurality of randomization factors may be identified. For example, typeface manipulator312may identify randomization parameters308comprising randomization factor322aand randomization factor322b. In some embodiments, randomization parameters308may be received via a user interface or generated based on input received via a user interface.

Proceeding to block506“select a randomized typeface from the set of typefaces based on a first randomization factor of the plurality of randomization factors” a randomized type face may be selected from the set of typefaces based on a first randomization factor. For instance, typeface manipulator312may select typeface314afrom typeface set306as randomized typeface324based on randomization factor322a. At block508“identify an input text comprising a first character” an input text comprising a first character may be identified. For example, typeface manipulator312may identify input text310comprising character320a. In some embodiments, the input text310may be received from or created by a data generation service. For example, the data generation service may provide a name, address, and account number corresponding to a simulated account holder as input text310. In various embodiments, the data generation service may comprise a component of the synthetic data generator102.

At block510“determine an exchange glyph, from the collection of glyphs included in the randomized typeface, that corresponds to the first character of the input text” an exchange glyph that corresponds to the first character of the input text may be determined from the collection of glyphs included in the randomized typeface. For example, if character320acomprises an “a” then typeface manipulator312may determine the glyph in glyphs316athat corresponds to an “a” as the exchange glyph326.

Proceeding to block512“generate a randomized set of vector attribute values for the exchange glyph based on the set of vector attributes corresponding to the exchange glyph and a second randomization factor of the plurality of randomization factors” a randomized set of vector attribute values may be generated for the exchange glyph may be generated based on the set of vector attributes corresponding to the exchange glyph and a second randomization factor. For instance, typeface manipulator312may generate randomized vector attribute values328for exchange glyph326based on the randomization factor322band one or more vector attributes in vector attributes318athat correspond to the exchange glyph326. In various embodiments, the typeface manipulator312may vary a default value for at least one vector attribute of exchange glyph326based on the randomization factor322b, or other randomization parameters, to generate one or more of the randomized vector attribute values328. In some embodiments, the randomization factor322bcomprises one or more ranges corresponding to values for vector attributes. In various embodiments, the randomized vector attribute values328may include values for one or more of a coordinate, a path, a curve, a font size, a weight, an alignment, a color, a consistency, a kerning, a baseline, a leading, a counter, and a Bezier curve.

At block514“randomize the exchange glyph with the randomized set of vector attribute values to produce a randomized glyph” the exchange glyph may be randomized with the randomized vector attribute values to produce the randomized glyph. For example, typeface manipulator312may randomize the exchange glyph326with the randomized vector attribute values328to produce randomized glyph330. Proceeding to block516“generate simulated handwriting comprising the randomized glyph” simulated handwriting comprising the randomized glyph may be generated. For instance, typeface manipulator312may generate simulated handwriting332comprising the randomized glyph330. Continuing to block518“utilize the simulated handwriting to train or evaluate a computer vision process” the simulated handwriting may be utilized to train or evaluate a computer vision process. For example, simulated handwriting332may be utilized to train or evaluate computer vision process108.

FIG.5Billustrates one embodiment of a logic flow500b, which may be representative of operations that may be executed in various embodiments in conjunction with techniques disclosed hereby. The logic flow520(deleted) may be representative of some or all of the operations that may be executed by one or more components/devices/environments described hereby, such as synthetic data generator102, computer vision process108, output controller212, incorporator404, and/or manipulator408. The embodiments are not limited in this context.

In the illustrated embodiment, logic flow500bmay begin at block520. At block520“overlay simulated handwriting with a background image to produce a synthetic handwriting image” simulated handwriting may be overlaid with a background image to produce a synthetic handwriting image. For example, incorporator404may overlay simulated handwriting402with an image from image library410to produce synthetic handwriting image418. In some embodiments, one or more of the randomization parameters412(e.g., randomization factor414) may be utilized to select the image from image library410.

Continuing to block522“introduce noise into the synthetic handwriting image to generate synthetic data” noise may be introduced into the synthetic handwriting image to generate synthetic data. For example, manipulator408may introduce noise into the synthetic handwriting image418to generate synthetic data406. In some embodiments, manipulator408may introduce noise into the synthetic handwriting image418based on one or more of randomization parameters412(e.g., randomization factor416). In various embodiments, manipulator408may add one or more of image blur, errata, wrinkles, misalignment, and rotation to the synthetic handwriting image418to introduce noise into the synthetic handwriting image418to generate the synthetic data406. Continuing to block524“utilize the synthetic data comprising the simulated handwriting to train or evaluate a computer vision process” the synthetic data comprising the simulated handwriting may be utilized to train or evaluate a computer vision process. For example, synthetic data406comprising simulated handwriting402may be utilized to train or evaluate computer vision process108.

FIG.6illustrates an embodiment of a system600that may be suitable for implementing various embodiments described hereby. System600is a computing system with multiple processor cores such as a distributed computing system, supercomputer, high-performance computing system, computing cluster, mainframe computer, mini-computer, client-server system, personal computer (PC), workstation, server, portable computer, laptop computer, tablet computer, handheld device such as a personal digital assistant (PDA), or other device for processing, displaying, or transmitting information. Similar embodiments may comprise, e.g., entertainment devices such as a portable music player or a portable video player, a smart phone or other cellular phone, a telephone, a digital video camera, a digital still camera, an external storage device, or the like. Further embodiments implement larger scale server configurations. In other embodiments, the system600may have a single processor with one core or more than one processor. Note that the term “processor” refers to a processor with a single core or a processor package with multiple processor cores. In at least one embodiment, the computing system600, or one or more components thereof, is representative of one or more components described hereby, such as a user interface for interacting with, configuring, or implementing synthetic data generator102, such as by providing one or more randomization parameters or input text. More generally, the computing system600is configured to implement all logic, systems, logic flows, methods, apparatuses, and functionality described hereby with reference toFIGS.1-7. The embodiments are not limited in this context.

As shown in this figure, system600comprises a motherboard or system-on-chip (SoC)602for mounting platform components. Motherboard or system-on-chip (SoC)602is a point-to-point (P2P) interconnect platform that includes a first processor604and a second processor606coupled via a point-to-point interconnect670such as an Ultra Path Interconnect (UPI). In other embodiments, the system600may be of another bus architecture, such as a multi-drop bus. Furthermore, each of processor604and processor606may be processor packages with multiple processor cores including core(s)608and core(s)610, respectively. While the system600is an example of a two-socket (2S) platform, other embodiments may include more than two sockets or one socket. For example, some embodiments may include a four-socket (4S) platform or an eight-socket (8S) platform. Each socket is a mount for a processor and may have a socket identifier. Note that the term platform refers to the motherboard with certain components mounted such as the processor604and chipset632. Some platforms may include additional components and some platforms may only include sockets to mount the processors and/or the chipset. Furthermore, some platforms may not have sockets (e.g. SoC, or the like).

The processor604and processor606can be any of various commercially available processors, including without limitation an Intel® processors; AMD® processors; ARM® processors; IBM® processors; and similar processors. Dual microprocessors, multi-core processors, and other multi-processor architectures may also be employed as the processor604and/or processor606. Additionally, the processor604need not be identical to processor606.

Processor604includes an integrated memory controller (IMC)620and point-to-point (P2P) interface624and P2P interface628. Similarly, the processor606includes an IMC622as well as P2P interface626and P2P interface630. IMC620and IMC622couple the processors processor604and processor606, respectively, to respective memories (e.g., memory616and memory618). Memory616and memory618may be portions of the main memory (e.g., a dynamic random-access memory (DRAM)) for the platform such as double data rate type 3 (DDR3) or type 4 (DDR4) synchronous DRAM (SDRAM). In the present embodiment, the memories memory616and memory618locally attach to the respective processors (i.e., processor604and processor606). In other embodiments, the main memory may couple with the processors via a bus and shared memory hub.

System600includes chipset632coupled to processor604and processor606. Furthermore, chipset632can be coupled to storage device650, for example, via an interface (I/F)638. The I/F638may be, for example, a Peripheral Component Interconnect-enhanced (PCI-e). Storage device650can store instructions executable by circuitry of system600(e.g., processor604, processor606, GPU648, ML accelerator654, vision processing unit656, or the like). For example, storage device650can store instructions for handwriting simulator104and/or output controller106.

The chipset632may comprise a controller hub such as a platform controller hub (PCH). The chipset632may include a system clock to perform clocking functions and include interfaces for an I/O bus such as a universal serial bus (USB), peripheral component interconnects (PCIs), serial peripheral interconnects (SPIs), integrated interconnects (I2 Cs), and the like, to facilitate connection of peripheral devices on the platform. In other embodiments, the chipset632may comprise more than one controller hub such as a chipset with a memory controller hub, a graphics controller hub, and an input/output (I/O) controller hub.

In the depicted example, chipset632couples with a trusted platform module (TPM)644and UEFI, BIOS, FLASH circuitry646via I/F642. The TPM644is a dedicated microcontroller designed to secure hardware by integrating cryptographic keys into devices. The UEFI, BIOS, FLASH circuitry646may provide pre-boot code.

Furthermore, chipset632includes the I/F638to couple chipset632with a high-performance graphics engine, such as, graphics processing circuitry or a graphics processing unit (GPU)648. In other embodiments, the system600may include a flexible display interface (FDI) (not shown) between the processor604and/or the processor606and the chipset632. The FDI interconnects a graphics processor core in one or more of processor604and/or processor606with the chipset632.

Additionally, ML accelerator654and/or vision processing unit656can be coupled to chipset632via I/F638. ML accelerator654can be circuitry arranged to execute ML related operations (e.g., training, inference, etc.) for ML models. Likewise, vision processing unit656can be circuitry arranged to execute vision processing specific or related operations. In particular, ML accelerator654and/or vision processing unit656can be arranged to execute mathematical operations and/or operands useful for machine learning, neural network processing, artificial intelligence, vision processing, etc.

Various I/O devices660and display652couple to the bus672, along with a bus bridge658which couples the bus672to a second bus674and an I/F640that connects the bus672with the chipset632. In one embodiment, the second bus674may be a low pin count (LPC) bus. Various devices may couple to the second bus674including, for example, a keyboard662, a mouse664and communication devices666.

Furthermore, an audio I/O668may couple to second bus674. Many of the I/O devices660and communication devices666may reside on the motherboard or system-on-chip (SoC)602while the keyboard662and the mouse664may be add-on peripherals. In other embodiments, some or all the I/O devices660and communication devices666are add-on peripherals and do not reside on the motherboard or system-on-chip (SoC)602.

FIG.7illustrates a block diagram of an exemplary communications architecture700suitable for implementing various embodiments as previously described, such as communications between secondary synthetic data generator102and computer vision process108or handwriting simulator104and output controller106. The communications architecture700includes various common communications elements, such as a transmitter, receiver, transceiver, radio, network interface, baseband processor, antenna, amplifiers, filters, power supplies, and so forth. The embodiments, however, are not limited to implementation by the communications architecture700.

As shown inFIG.7, the communications architecture700comprises includes one or more clients702and servers704. In some embodiments, communications architecture may include or implement one or more portions of components, applications, and/or techniques described hereby. The clients702and the servers704are operatively connected to one or more respective client data stores708and server data stores710that can be employed to store information local to the respective clients702and servers704, such as cookies and/or associated contextual information. In various embodiments, any one of servers704may implement one or more of logic flows or operations described hereby, such as in conjunction with storage of data received from any one of clients702on any of server data stores710. In one or more embodiments, one or more of client data store(s)708or server data store(s)710may include memory accessible to one or more portions of components, applications, and/or techniques described hereby.