Patent Description:
The embodiments relate to a printer device, printer marking system and method with multi-stage production print inspection.

Optical character recognition for continuous inkjet (CIJ) in industrial application is difficult. Currently, the camera system embedded with vision systems have <NUM>% reliability in the inspection performance for industrial applications. Many customers are skeptical about the accuracy of vision systems because these systems fail, usually due to high rates of false positives. A false positive is when the vision system rates a good product as a bad product. Rating products as bad has consequences. The first consequence is wasting time to visually inspect the product manually which can be costly if a high number of products must be visually inspected. A second consequence is turning the vision system off so the production can run.

Smart cameras with vision systems are very costly in comparison to cameras without a vision system. For example, a smart camera could cost $<NUM> while a camera without a vision system may cost $<NUM>. In industrial applications, the cost increases with multiple production lines with multiple different printer technology.

<CIT> discloses a system comprising a memory to store machine readable instructions and a processing unit to access the memory and execute the machine readable instructions. The machine readable instructions can comprise a feature set extractor to extract a feature set from each of a plurality of digital images of print samples. The feature set can be a filtered feature set that includes a feature set characterizing a printer that printed a given print sample of the print samples. The machine readable instructions can also comprise a cluster component to determine clusters of the print samples based on the feature set of each of the plurality of scanned images of the print samples. The machine readable instructions can further comprise a printer identifier to identify the printer of the print samples based on the clusters of the print samples.

<CIT> discloses a method and system for marking items on a production line, with a series of unique identifiers (e.g. promotional codes). The system then obtains marking feedback data, indicating whether the marking was completed or not. The system then inspects the unique identifying mark to obtain inspection data, regarding the visual appearance of the mark. The marking feedback data and inspection data may be stored, logged or processed to aid tracing and marking error diagnosis. The system may also generate expected data regarding the unique mark, and by comparing this with the inspection data, may obtain an inspection result. The system may also determine the verification status of the mark, based upon marking feedback data and/or inspection data. The verification status may indicate whether or not the unique identifier mark has been acceptably marked. The article may be kept or discarded, based upon the verification status.

Embodiments herein relate to a printer device, printer marking system and method with multi-stage production print inspection. Embodiments may also include non-transitory, tangible computer-readable storage medium.

According to a first aspect of the invention there is provided a device according to claim <NUM>.

According to a second aspect of the invention there is provided a system according to claim <NUM>.

According to a third aspect of the invention there is provided a method according to claim <NUM>.

The invention will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:.

Embodiments are described herein with reference to the attached figures wherein like reference numerals are used throughout the figures to designate similar or equivalent elements. The figures are not drawn to scale and they are provided merely to illustrate aspects disclosed herein. Several disclosed aspects are described below with reference to non-limiting example applications for illustration. It should be understood that numerous specific details, relationships, and methods are set forth to provide a full understanding of the embodiments disclosed herein. One having ordinary skill in the relevant art, however, will readily recognize that the disclosed embodiments can be practiced without one or more of the specific details or with other methods. In other instances, well-known structures or operations are not shown in detail to avoid obscuring aspects disclosed herein. The embodiments are not limited by the illustrated ordering of acts or events, as some acts may occur in different orders and/or concurrently with other acts or events. Furthermore, not all illustrated acts or events are required to implement a methodology in accordance with the embodiments.

Notwithstanding that the numerical ranges and parameters setting forth the broad scope are approximations, the numerical values set forth in specific non-limiting examples are reported as precisely as possible. Any numerical value, however, inherently contains certain errors necessarily resulting from the standard deviation found in their respective testing measurements. Moreover, all ranges disclosed herein are to be understood to encompass any and all sub-ranges subsumed therein. For example, a range of "less than <NUM>" can include any and all sub-ranges between (and including) the minimum value of zero and the maximum value of <NUM>, that is, any and all sub-ranges having a minimum value of equal to or greater than zero and a maximum value of equal to or less than <NUM>, e.g., <NUM> to <NUM>.

<FIG> illustrates a print marking (PM) system <NUM> with multi-stage production print inspection. The PM system <NUM> comprises at least one printer <NUM> and at least one camera <NUM> interfaced with at least one computing device <NUM>. Each computing device <NUM> may have at least one human machine interface (HMI) <NUM> and metadata <NUM> stored in a memory (<FIG>). The at least one computing device <NUM> may each store field values <NUM>. The at least one computing device <NUM> will be described in more detail in relation to <FIG>. By way of non-limiting example, the at least one printer <NUM> may include one or more of continuous inkjet (CIJ) printer, laser printer, thermal transfer overprinting (TTO) printer, thermal inkjet (TIJ) printer and LCM printer.

The PM system <NUM> is interfaced with a print inspection system (PIS) <NUM>. The print inspection system <NUM> may include a first inspection stage processor <NUM> and a second inspection stage processor <NUM>. The at least one HMI <NUM> may display information received from the first inspection stage processor <NUM> and a second inspection stage processor <NUM>. In some embodiments, there may be a single HMI <NUM> per computing device <NUM>. The at least one camera <NUM> may be associated with the PM system <NUM> or may be part of the PIS <NUM> system. The at least one camera <NUM> being part of the PIS <NUM> would be an embedded component in the PM system <NUM>. In some embodiments, the at least one camera <NUM> may be shared with one or more systems.

The printer <NUM> is paired with an optical character recognition (OCR) algorithm executed by at least one processor to form an optical code detector. The optical code detector, executed by one or more processors, detects the code in a received image of the product printed by the printer <NUM> by optically recognizing characters in the received image using a trained optical character recognition (OCR) algorithm for the printer technology type. The OCR algorithm is trained to identify each digit of the plurality of digits of the code in a selected region of interest (ROI) based on printer parameters such as without limitation, a substrate type corresponding to a material of the substrate and a curvature of the substrate to which the printed content is directly applied and the printer technology type.

For the sake of brevity, the PM system <NUM> is shown with a production line <NUM>. The production line <NUM> may serially move a plurality of widgets W1, W2 and W3 shown. The dashed arrow represents the direction of flow of the production line <NUM>. During production, the widgets are printed with content (i.e., printed content) or code. The production line <NUM> may include parallel paths PL1 and PL2. The path PL1 may move the widgets W1, W2 and W3 to a printer in path PL1 for printing in a designated region of interest (ROI). The path PL2 may move packages (PK), by way of non-limiting example, configured for widgets W1, W2 and W3 to a printer in path PL2 for printing in a designated region of interest (ROI). Each path PL1 and PL2 may include at least one camera and at least one printer. The metadata and field vale for each path PL1 and PL2 may be synchronized and/or correlated to the metadata and field values of the other parallel path.

Nonetheless, some widgets may not include separate packaging. Furthermore, some widgets may have additional regions of interest (ROI) which are to be printed, each ROI may have use a different printer technology to print the characters and/or symbols of the printed content and may use a different path in the production line <NUM>.

The production line <NUM> may include at least one printer <NUM> to print printed content in at least one region of interest on a widget or package.

In an embodiment, the at least one HMI <NUM> includes a display <NUM> (<FIG>) and HMI driver 1022A (<FIG>) configured to display printer information from and to the printer <NUM> and camera information from and to camera <NUM>. The display <NUM> may be a touchscreen. The printer <NUM> may be controlled by printer metadata and print drivers. The print drivers may be specific to the printer manufacture or may have customized features and settings. The metadata <NUM> may include printer settings for the printed text to be printed by the printer <NUM>. The production line <NUM> is controlled by production line metadata. The camera <NUM> is operated based on control data (such as camera setting and triggers) and/or metadata. The camera <NUM> is configured to capture an image of a widget W1, W2 or W3 having a printer marking applied or printed by printer <NUM>. In some instances, the widget W1, W2 and W3 are to be packaged in package (PK) <NUM>, <NUM> and <NUM>, respectively. Thus, the codes printed on packages PK <NUM>, <NUM> and <NUM> may be synchronized with the codes or field values of widgets W1, W2 and W3, for example.

The widget comprises a manufactured product. The manufactured product includes a widget substrate to or upon which a printed code is printed via a printer <NUM>. The widget substrate may be a container filled with a product material. In such instance, the printing is on the widget substrate and not the product material, especially, if the product material is dispensed from the container, such as for consumption or application.

The camera <NUM> captures images at a rate R wherein the rate R may be a system setting to initiate the triggering of the image capture process by the camera <NUM>. The camera <NUM> may capture images every one minute, two minutes or other intervals. For a production cycle, the rate R may vary. By way of non-limiting example, the rate may be slower at the beginning of a production cycle and faster at an end of the production cycle. The rate R may be a constant rate. The rate of image capture may be a function of the rate at which the production line moves.

The captured image is a source of information to the computing device <NUM>. The computing device <NUM> communicates the captured image with metadata and field values to the first inspection stage processor <NUM> to start the inspection process. The computing device <NUM> provides field values <NUM> to the printer <NUM> to perform the printing and to the first inspection stage processor <NUM> for use in the inspection process.

The computing device <NUM> identifies field values <NUM> for a batch of widgets or a single widget being processed by the production line <NUM>. Field values <NUM> may be the character content of printed text or code. The field values <NUM> or product/package codes may be provided by a customer. The field values <NUM> may include a product or package code automatically generated by the product or package code generator <NUM> (<FIG>). The product or package code may be a standard code using standard character, numerical or symbols in any language. The standard character, numerical or symbol in any language may be printed in a manner consistent with industry and/or industrial standards or practices for any one particular printer technology for the application of printed content on a substrate. The production line may generate an authentication code based on the standard product/package code(s), as will be discussed in more detail in relation to <FIG> and <FIG>. A batch of widgets may include two or more widgets.

<FIG> illustrates a block diagram of field values <NUM>. For instance, the field values <NUM> may include one or more values which denote a current date <NUM>, current time <NUM>, an expiration date <NUM>, or a best by date. The field values may vary and are not limited to those specifically referenced by example. The field values <NUM> may include field value content <NUM> such as symbols, logo, or text (i.e., alphanumeric characters). The values of the field values <NUM> may include alphanumeric character streams or symbols which are capable of being printed or made by a printer. The field value <NUM> may include information representative of a logo. The alphanumeric character stream, symbols, text or logo may hereinafter be referred to as "printed content.

The field values <NUM> provide the basis of comparison to determine whether the printer <NUM> is printing accurate information (i.e., the printed content). By way of non-limiting example, image recognition (IR) algorithms in database <NUM> may be used to reduce an area within the captured image to an area of the printed content, the printed content is compared against the field value <NUM> to determine correctness or accuracy. By way of non-limiting example, in the case where the image is inspected by a man-in-the-loop process, the human may use the field values <NUM> provided by way of a graphic user interface (GUI) to determine correctness or accuracy. The man-in-the-loop process will be described in detail later. This stage of inspection may be used to train the OCR algorithms as the man-in-the-loop may find false positives and/or false failures. The OCR algorithms may be updated to address the results of the second stage inspection process.

The inspection system <NUM> may include an optical character algorithm(s) database <NUM> coupled to the first inspection stage processor <NUM>. The inspection system <NUM> may include an image archive database <NUM> also coupled to the first inspection stage processor <NUM>.

<FIG> illustrates a block diagram of metadata <NUM>. Metadata <NUM> may include parameters which include the print technology or type <NUM> used to print on the widgets in the production line <NUM>. The metadata <NUM> may include one or more of font data <NUM>, raster data <NUM>, vertical data <NUM> and other data. Font data <NUM> and raster data <NUM> may be used to decipher the image into characters, by an optical character recognition inspection process module <NUM>, as will be described later. The metadata may vary and are not limited to the parameters or data specifically referenced by example.

Metadata <NUM> may include product packaging specification parameters <NUM> and data that can classify the product profile to select an image recognition (IR) algorithm in database <NUM> from a plurality of image recognition algorithms. Printer technology may include the type of printer such as continuous inkjet (CIJ), laser, thermal transfer overprinting (TTO), thermal inkjet (TIJ) and LCM used in the specific marking process. The product packaging specification parameters may include details of the widget such as without limitation, color, material and surface curvature. Surface curvature may include an indicator which identifies whether the surface is convex or concave surface. Material types may include plastic material, reflective material, non-reflective material, glossy material, transparent material, etc..

The inventor has determined that recognition of images on at least a bottle closure and a curved surface have a higher rate of false positives on such bottle closures or curved surfaces. The classification engine <NUM> may perform an image recognition on a received image to determine first whether the product type is the correct product type. Printed characters on a curved surface, may have a perspective view as compared to printed characters printed on a non-curved surface.

<FIG> illustrates a block diagram of a database <NUM> of a plurality of image recognition (IR) algorithms. The database <NUM> may include one or more of an IR bottle closure algorithm <NUM>, an IR curved surface algorithm <NUM>, an IR non-curved surface algorithm <NUM>, an IR color recognition algorithm <NUM>, an IR surface material type recognition algorithm <NUM> and an IR geometrical shape recognition algorithm <NUM>. The database <NUM> may include a plurality of IR algorithms which can differentiate a geometrical shape of product(s).

The classification engine <NUM> of the first inspection stage processor <NUM> performs two inspection procedures. The first inspection procedure may use a selected image recognition algorithm to validate the product (i.e., widget) correlated to the metadata in an IR inspection process module <NUM>. The IR inspection process module <NUM> may use one or more algorithms to verify or validate multiple product profile parameters. For example, a customer may want different product profiles to be processed differently than other product profiles.

The IR inspection process module <NUM> may provide an inspection process to validate that the product (i.e., widget) being inspected is a match to the correct product with the correct product parameters. The IR inspection process module <NUM> may also allow validation of a color of the product. Nonetheless, the metadata may include product parameters which may include one or more of size, shape, color, type, design, substrate type, substrate material, reflectivity of substrate, concavity of substrate, convexity of substrate, transparency of substrate, etc. being unique to the product's physical classifiable profile. The IR inspection process module <NUM> may be improved or optimized such that the processing time of the image is reduced by tailoring the IR algorithm based on the metadata.

By way of non-limiting example, the printed content may be designated for a "red" colored widget with a curved surface having a concave surface. The first inspection procedure may determine whether the image received classifies the product according to the product's physical classifiable profile. In other words, the IR inspection process module <NUM> may specifically look for a curved surface profile or some other geometrical shape. Hence, the metadata is provided to the first inspection stage processor <NUM> so that an image recognition algorithm is selected specifically for a geometrical profile by the IR inspection process module <NUM>. In other examples, the image recognition algorithm may be configured to recognize a bottle closure. In other examples, the image recognition algorithm may be configured to recognize a non-curved surface. If the product's physical classifiable profile is not validated, a response may be sent to the computing device <NUM>. Thus, the production line <NUM> may be halted or an alert generated to the appropriate production monitor or quality control monitor. The alert may include an email alert, text message alert, light indicator or speaker output. For example, the production monitor may determine that the wrong product is on the production line <NUM>. In another example, a certain color product may require a white ink while another color product may require a black ink.

The product may include multiple areas with different colors. Certain colors may be used to designate a printed content area. Thus, the printed content area may be detected by the IR inspection process module <NUM>. For example, the printed content may be applied to an area with barcodes where the area has a geometrical shape such as a square or rectangle and may be white in color. Thus, OCR inspection process module <NUM> may use information from module <NUM> and the metadata to perform OCR in the designated white area to start the inspection process <NUM>, for example. For example, multiple areas in the image may have printed content wherein each area is inspected by an OCR algorithm. Optionally, the entire image may be subjected to an OCR algorithm.

The first inspection stage processor <NUM> may perform optical character recognition (OCR) inspection process module <NUM> to produce an OCR content result to the result generator <NUM>. The OCR inspection process module <NUM> may detect printed content in the printed content area if provided by the IR inspection process module <NUM>. The OCR inspection process module <NUM> may use metadata to determine the area within the image to start the OCR inspection process module <NUM>. The OCR content result for each optically recognized character and/or logo is sent to the result generator <NUM> and assembled so that the resultant character stream generated by the OCR inspection process module <NUM> may be decoded to validate the printed content of the resultant character stream. If the printed content is decoded and validated, the first inspection stage processor <NUM> provides a response to the computing device <NUM> to indicate that the inspection passed or validated. The first inspection stage processor <NUM> may include an inspection decoder <NUM> to decode the OCR content result to validate the printed content.

<FIG> illustrates a block diagram of a database <NUM> of a plurality of optical character recognition (OCR) algorithms. The plurality of optical character recognition (OCR) algorithms may include an OCR laser print algorithm <NUM>, OCR CIJ print algorithm <NUM>, OCR TTO print algorithm <NUM>, OCR TIJ print algorithm <NUM>, OCR LCM inkjet print algorithm <NUM>, or other OCR print technology print algorithm <NUM>. An LCM inkjet prints large characters. The optical character recognition (OCR) inspection process module <NUM> may be improved or optimized such that the processing time of the OCR is reduced by tailoring the OCR algorithm to the print technology.

<FIG> illustrates a block diagram of a OCR machine learning module <NUM>. Each OCR algorithm may include an OCR machine learning module <NUM> configured to be trained to improve print inspection performance and, if appropriate, authentication codes for a counterfeit detection system. The OCR machine learning module <NUM> may be configured and trained for a printer technology type <NUM>. The OCR machine learning module <NUM> may be trained based on one or more product parameters. The product parameters may include material, shape, concavity of the product or substrate, reflectivity of the material or product, the transparency of the material or product, and the color of the product or material. The training may be based on the color of material or type of material (i.e., solid, powder, liquid) stored within a transparent container where the transparent container provides the substrate on which a printed code is applied. Collectively, the container and material within the container may be sometimes referred to as a product. For example, the OCR machine learning module <NUM> may be trained based on a product substrate material <NUM>. The OCR machine learning module <NUM> may be trained based on product substrate shape <NUM>. The OCR machine learning module <NUM> may be trained based on product color <NUM>. The OCR machine learning module <NUM> may be trained based on degree of reflectivity <NUM>. The OCR machine learning module <NUM> may be trained based on degree of transparency <NUM>. The OCR machine learning module <NUM> may be trained based on concavity of substrate <NUM>. The OCR machine learning module <NUM> may be trained based on convexity of substrate <NUM>. The results from the second inspection stage can update the OCR machine learning module <NUM> with the results of the second inspection stage, as appropriate, to improve performance. The OCR machine learning module <NUM> may be trained based on at least one digit of a code regardless of whether the at least one digit passed or failed optical recognition detection.

By way of non-limiting example, characters, numbers and/or symbols printed on a reflective substrate may not, in some instances, be properly recognized.

By way of non-limiting example, characters and symbols printed on a transparent substrate may be difficult to recognize based on the product filled in the transparent container. This can be more problematic if the printed characters or symbols include a first character portion which resides in filled portion of the container while a second character portion resides in an un-filled portion of the transparent container. Furthermore, the color of the product filled in a transparent container may diminish the recognition of the characters. Thus, the second inspection stage can update the OCR machine learning module <NUM> to train the OCR machine learning module <NUM> such as, by way of non-limiting example, through supervised learning. The OCR machine learning module <NUM> may be trained in some instances based on unsupervised learning.

The machine learning module may employ neural networks, artificial neural networks, Bayesian networks, learning classifier systems, decision tree learning, etc..

<FIG> illustrates a block diagram of an inspection decoder <NUM>. The inspection decoder <NUM> may include an IR results to metadata comparator unit <NUM> to compare the IR result, from the IR inspection process module <NUM>, with one or more parameters of the metadata <NUM>. The inspection decoder <NUM> may include an OCR results to field values comparator unit <NUM> and a number of characters determination unit <NUM>. The printed content is validated when the OCR content result is the same based on the field value. The inspection decoder <NUM> may determine the number of characters or digits in the OCR content which could be validated by the number of characters determination unit <NUM>.

The first inspection stage processor <NUM> may determine an error in the OCR inspection process module <NUM> such that the process was aborted or whether no characters could be recognized.

The processor <NUM> or inspection decoder <NUM> may determine that decoding failed by at least one of units <NUM> or <NUM>. If decoding failed, a communication is generated for receipt by the second inspection stage processor <NUM>. The second inspection processor <NUM> includes a graphical user interface (GUI) task generator <NUM> which produces a GUI for the second inspection stage <NUM>. The GUI task generator <NUM> obtains the image <NUM> for population of the GUI wherein the image was used in the IR inspection process module <NUM>. In one example, the GUI task generator <NUM> may generate a data input field <NUM> to allow a man-in-the-loop in the second inspection stage <NUM> to enter the visually inspected characters of the text in the image <NUM> for comparison with the field value <NUM>. The image <NUM> may be overlaid with at least one highlighted box entered by the field highlighter <NUM> which surrounds an inspection region with the printed content. The GUI may include multiple highlighted boxes. The second inspection stage <NUM> may include a man-in-the-loop process where humans perform visual inspection. For example, the GUI may include a task request having an application programming interface (API) for Mechanical Turk by Amazon®. In another embodiment, the man-in-the-loop may include an in-house inspection team or other quality assurance (QA) service provider. The results may train the OCR algorithms.

The GUI from generator <NUM> may prompt the user to identify whether the content in the highlighted box matches the expected image/characters. Once the answers are submitted by the GUI interface, the second inspection processor <NUM> communicates a result to the computing device <NUM>. In one example, the result may be a pass or fail result.

The results from the first inspection stage processor <NUM> or the second inspection stage processor <NUM> may cause the marking system <NUM> to take action on the production line <NUM>, such as stopping the production line or sending an alert or notification. A notification may include an email, text message, instant messaging alerts, etc..

<FIG> illustrates a block diagram of a database <NUM> of archived images stored in an image archive record <NUM>. The computing device <NUM> or the first inspection stage processor <NUM> may store the received image in database <NUM>. An image archive record may be developed. The image archive record <NUM> may include storing an image <NUM> with current date and time log information <NUM>. The image may be stored with inspection results <NUM> such as without limitation pass or fail. The image <NUM> may be stored with metadata <NUM>.

The repository of images that could not be decoded by may trigger a change in the production line <NUM> or require further evaluation. The archived image may be used by a customer's quality control (QC) department to be able to pull an historical image from the actual production line on a certain date/time.

The system may be used for an anti-counterfeit technique. In a system where images are used for an anti-counterfeit technique, the camera <NUM> would take at least one image of every printed or marked widget. The print content may act like a fingerprint for the product. However, the first inspection stage processor <NUM> may only process every X image for inspection of the print content for quality control purposes. In other words, the printed content of every widget may not be inspected.

<FIG> illustrate a flowchart of a method <NUM> for print marking with a multi-stage inspection. The method may perform the blocks in the order shown or in a different order. Additional blocks may be added or some blocks deleted. One or more of the blocks may be performed contemporaneously. The method <NUM> begins with block <NUM> and will be described in relation to <FIG>. As the widgets W1, W2 and W3 serially move through the printer <NUM>, the widget W1, W2 and W3 is printed with printer text in the form of a code based on the metadata and field values for the production batch, at block <NUM>.

At block <NUM>, the camera <NUM> captures an image of the production line <NUM> at a predetermined rate R. Optionally, the rate may allow the camera <NUM> to capture one widget at a time or may skip widget. Optionally, the operation of the production line <NUM> movement, printing by printer <NUM> and image capturing by camera <NUM> may be synchronized or timed appropriately.

At block <NUM>, an inspection communication is assembled by the computing device <NUM>. The inspection communication may include the captured image. The inspection communication may include the field values <NUM> used in the print process and the metadata <NUM>. The inspection communication is sent to the first inspection stage processor <NUM> where it is received at block <NUM>.

At block <NUM>, the first inspection stage processor <NUM> will process the received communication to perform an image recognition inspection process module <NUM> to determine a product classifiable profile. Metadata <NUM> may include product packaging specification parameters and values that can classify the image recognition algorithm in database <NUM> that will be used in process module <NUM>. Thus, the first inspection stage processor <NUM> would look-up the image recognition algorithm in database <NUM> for optimizing the IR inspection process module <NUM>. The image is then processed to recognize the physical profile of the widget. The classification engine <NUM> may perform an IR inspection process module <NUM> on a received image to determine first whether the physical profile is detected based on the product packaging specification parameters.

At block <NUM>, if an error is generated, the product's physical classifiable profile was not detected, then an error message may be sent to the computer device <NUM> at block <NUM>. The first inspection procedure may use an IR algorithm to validate the product (i.e., widget) correlated to the metadata. The production line <NUM> may be halted <NUM> or an alert generated to the appropriate production monitor or quality control monitor. The alert may include an email alert, text message alert, light indicator or speaker output. At block <NUM>, if the physical profile is detected, the method <NUM> may continue to block <NUM>.

At block <NUM>, the classification engine <NUM> may perform an optical character recognition (OCR) algorithm from database <NUM>. At block <NUM>, the classification engine <NUM> will look-up the best OCR algorithm for the printer technology in the metadata. The classification engine <NUM> may look-up the best OCR algorithm based on the product packaging specification parameters as well. Block <NUM> will produce the OCR content result of the OCR algorithm. At block <NUM>, the OCR content result may be decoded to validate the printed content.

At block <NUM>, a determination is made whether the printed content is decoded and validated. If the determination is YES, the first inspection stage processor <NUM> provides a response to the computing device <NUM> to indicate that the inspection passed at block <NUM>.

If the determination is NO, the inspection decoder <NUM> may have to also determine the number of characters in the OCR text which could be validated. A message of validation/inspection failed is sent to the computing device <NUM>. The inspection decoder <NUM> may determine an error in the OCR process such that the process was aborted or whether no characters could be recognized. The inspection decoder <NUM> may produce a result which indicates decoding failed.

If the determination is NO, meaning decoding failed in some instances, a communication is generated for receipt by the second inspection stage processor <NUM>. For example, there decoding may have decoded most characters. Thus, the second inspection stage processor <NUM> may be initiated only after a certain number of characters have failed decoding. The decoding thresholds may be set by the customer and/or for maintenance of the printer.

Turning now to <FIG>, at block <NUM>, the inspection data is sent to the second inspection processor <NUM>. At block <NUM>, an inspection task request is generated which populates a graphic user interface (GUI) with image inspection parameters. At block <NUM>, the printed content field is highlighted in the GUI. At block <NUM>, the assembled GUI is communicated such as without limitation to a man-in-the-loop. At block <NUM>, the inspection GUI is displayed. The man-in-the-loop will display the GUI and enter the information based on the instructions.

The image may be overlaid with at least one highlighted box which surrounds the inspection region. The GUI may prompt the user to identify whether the text/content in the highlighted box matches the expected image/characters. A field may be provided in the GUI to enter the observed text. Once the answers are submitted, the second inspection processor <NUM> receives the answers through the interface with the GUI, at block <NUM>. The interface may be a web-based internet or intranet interface. The interface may be an application programming interface (API).

At block <NUM>, the second inspection processor <NUM> communicates a result to the computing device <NUM>. In one example, the result may be a pass or fail result.

At block <NUM>, the results from first inspection stage processor <NUM> or the second inspection stage processor <NUM> may cause the marking system <NUM> to take action on the production line, such as stopping the production line or sending an alert such as, by way of non-limiting example, for maintenance of the printer.

<FIG> illustrates a block diagram of print marking (PM) system with multi-stage production print inspection with a quality check. The system in <FIG> is similar to <FIG> thus only the differences will be described for the sake of brevity. The multi-stage production print inspection incorporates a quality check. For example, the printer content may be decoded but the quality of the print may be poor. By way of non-limiting example, the ink may need to be replaced when the quality of the print deteriorates to a certain level.

The processor <NUM> or inspection decoder <NUM> may determine that decoding failed by at least one of units <NUM> or <NUM>. If decoding failed, a communication is generated for receipt by the second inspection stage processor <NUM>'. The second inspection processor <NUM>' includes a graphical user interface (GUI) task generator <NUM> which produces a GUI for the second inspection stage <NUM>'. The GUI task generator <NUM>' obtains the image <NUM> for population of the GUI wherein the image was used in the IR inspection process module <NUM>. In one example, the GUI task generator <NUM> may generate a data input field <NUM> to allow a man-in-the-loop in the second inspection state <NUM> to enter the visually inspected characters of the text in the image <NUM> for comparison with the field value <NUM>. Optionally, the image <NUM> is overlaid with at least one highlighted box entered by the field highlighter <NUM> which surrounds an inspection region with the printed content. The GUI may include multiple highlighted boxes.

The GUI from generator <NUM>' may prompt the user to identify whether the content in the highlighted box matches the expected image/characters. Once the answers are submitted by the GUI interface, the second inspection processor <NUM>' communicates a result to the computing device <NUM>. In one example, the result may be a pass or fail result.

Additionally, the GUI task generator <NUM> may retrieve a plurality of varying print quality images. The plurality of varying print quality images may include a poor image sample 186A, a good image sample 186B and a fair image sample 186C where the sample includes printed content having a certain print quality. The second inspection stage <NUM>' may provide feedback regarding print quality flaws so the marking system <NUM> may dynamically adjust parameters to mitigate the print quality flaws. In some embodiments, the samples may be retrieved from the archived images in database <NUM>.

In the print quality process, the operation of the inspection decoder <NUM> may change. For example, even if all characters are decoded, every X image decoded may be sent for a print quality check by the second inspection stage processor <NUM> and second inspection stage <NUM> where X is a number greater than <NUM>. For example, a system may check every <NUM>th image or every <NUM>th image for print quality flaws and/or training OCR algorithms. However, once printed content starts to exhibit at least one character which cannot be recognized, the quality check interval may be decreased for example from <NUM> to <NUM> until the printed content fails validation.

<FIG> illustrates a block diagram of a method <NUM> to assemble an inspection graphical user interface (GUI) for a print quality check using the system of <FIG>. The method <NUM> begins with retrieving a poor OCR print image sample at block <NUM>. At block <NUM>, a good OCR print image sample is retrieved. At block <NUM>, a fair OCR print image sample is retrieved. At block <NUM>, the GUI is assembled with the poor, good and fair samples and the current image with the text section or printed content section highlighted. Examples of images are generated of different classifications (i.e., poor, good, fair) and embedded in the GUI. For example, GUI will provide a field for selecting whether the current image is good, bad or fair based on a comparison to the embedded comparison images. The comparison images may be specific to the print technology so that the same sample printed font types are used for comparison with the current image's printed content.

As a result of the print quality flaws, the system may need to replace the printer. The ink may need to be replaced.

<FIG> illustrates a block diagram of a printer marking (PM) system <NUM> (i.e., PM system <NUM>) interfaced with a plurality of systems <NUM>, <NUM> and <NUM>. The system <NUM> may be a quality assurance system (QAS). System <NUM> may be a counterfeit detection system (CDS). System <NUM> may be a print inspection system (PIS) (i.e., print inspection system <NUM>). The PM system <NUM> may include at least one printer <NUM>. In some embodiments, the PM system <NUM> may include at least one camera <NUM>. The PM system <NUM> is similar to PM system <NUM> previously described. The images captured by the at least one camera <NUM> may be sent to one or more of the QAS, the CDS and the PIS. The at least one camera <NUM> may be a shared component by the QAS, the CDS and the PIS but embedded in the PM system <NUM>, by way of non-limiting example. In some embodiments, the at least one camera may be part of the PIS but embedded in the PM system <NUM> to capture the image of the product immediately or shortly after the code is printed on the substrate.

For example, every picture may be sent to the counterfeit detection system. The captured images (i.e., photographs or picture) may be stored in the counterfeit product image database <NUM>. Depending on the production, images of the product may be stored in the counterfeit product image database <NUM>. Images of the packaging (PK) may be stored in the counterfeit package image database <NUM>.

Every X captured image may be sent to the print inspection system <NUM> (i.e., inspection system <NUM>). Depending on the production, images of the product may be stored in the product image archive database <NUM>. Images of the packaging (PK) may be stored in package image archive database <NUM>.

The QAS may also receive captured images which are stored in the QA product image database <NUM>. Depending on the production, the images of the packaging may be stored in the QA package image database <NUM>. The PM system <NUM> (i.e., PM system <NUM>) may be used the cameras in the production line (i.e., production line <NUM>) to capture images for at least one of the product and package for quality control operations, counterfeit detection and printed content inspection.

<FIG> illustrates a block diagram of a system <NUM> having a mobile computing device <NUM> configure to have selective communications with a counterfeit detection system (CDS) <NUM>. The user may initiate a communication session with the CDS <NUM> via the mobile computing device1202. The mobile computing device <NUM> may include a computing device such as described in relation to <FIG>. The mobile computing device <NUM> may be video-enabled or camera-enabled via a video camera or camera <NUM>. The mobile computing device <NUM> may include various applications including a network interface for communicating wirelessly through the Internet or other wireless communication system <NUM>. The mobile computing device <NUM> may include a consumer counterfeit detection application <NUM>.

The consumer counterfeit detection application <NUM> may include a communication module <NUM> to establish communications with the counterfeit detection system <NUM> being remote from the mobile computing device <NUM>. The consumer counterfeit detection application <NUM> may include a real-time imager <NUM> which interfaces with the video device or camera <NUM> to capture an image of the product or package being investigated for authenticity, including a visible code being visible to the unaided eye. The consumer counterfeit detection application <NUM> may include a remote CDS image receiver <NUM> represented in dashed lines to denote an optional function, as will be discussed in more detail. The consumer counterfeit detection application <NUM> may include an image matching module <NUM> configured to determine a match between the real-time image captured by the mobile computing device <NUM> and a stored image produced by the PM system <NUM> at the time of production. The image matching module <NUM> is represented in dashed lines to denote an optional function, as will be discussed in more detail.

The consumer counterfeit detection application <NUM> may include an optical character recognition (OCR) module <NUM>, denoted in a dashed line to denote an optional function. In some embodiment, the OCR algorithms of the OCR module <NUM> may be trained based on validation of any digit whether passed or failed during the print inspection system. Thus, a suite of trained OCR algorithms for each printer technology may be stored in the mobile computing device <NUM> such that the trained OCR algorithms would detect the authentication code based on printer technology. The authentication code instead of the image may be sent to the CDS <NUM> for validation matching. The application <NUM> may include the image matching module <NUM> to match the authentication code or OCR algorithms in the OCR module <NUM>. The OCR module <NUM> would perform OCR detection using the image captured by the real-time imager <NUM> interfaced with the camera <NUM>, by way of non-limiting example.

The consumer counterfeit detection application <NUM> may include a product validation indicator <NUM> configured to provide the user an indication on the display <NUM> of the mobile computing device <NUM> regarding the status of the authentication or validation. The indication may be a visual display on display <NUM> or an audible notification through the speaker of the mobile computing device <NUM>.

The remote CDS image receiver <NUM> and the image match module <NUM> may be optional as these functions may be performed by the CDS <NUM> sending an indication of authenticity (pass) or failure to verify, for example. The indication or result may be display on display <NUM>.

The counterfeit detection system (CDS) <NUM> may include one or more servers <NUM> coupled to the CDS product and package image databases <NUM>. The counterfeit detection system (CDS) <NUM> may include a system counterfeit detection application <NUM>.

The system counterfeit detection application <NUM> may include a communications module <NUM> to communicate through the Internet or communication network <NUM> to a consumer associated with the mobile computing device <NUM>. The system counterfeit detection application <NUM> may receive via a real-time image receiver <NUM>, a real-time image from the mobile computing device <NUM> captured by the camera <NUM> or video device. The system counterfeit detection application <NUM> may lookup the stored product/package image using the stored image lookup module <NUM>.

The system counterfeit detection application <NUM> may include an image matching module <NUM> configured to determine a match between the real-time image received from the mobile computing device <NUM> and a stored image retrieved, via a lookup module <NUM>, from databases <NUM>.

The image matching module <NUM> is represented in dashed lines to denote an optional function, as this function may be performed by the mobile computing device <NUM>. The system counterfeit detection application <NUM> may include a product or code validator <NUM> configured to communicate to the mobile computing device <NUM> an indication for display representative of an indication of authenticity (pass) or failure to authenticate product/package. The indication may be a visual display on display <NUM> or an audible notification through the speaker of the mobile computing device <NUM>.

<FIG> illustrates flowchart of a counterfeit detection process <NUM>. The process <NUM> may include, at block <NUM>, for generating an authentication code for a product or package by the authentication code generator <NUM>. As sometimes used herein the term "product" may sometimes refer to a "package" or both a product packaged together with a package. At block <NUM>, the process <NUM> may include printing by a printer printed content on a substrate including a plurality of digits. At block <NUM>, the process <NUM> may include capturing an image of the substrate on a package or product. At block <NUM>, archiving the image during production of the product in a database. At block <NUM>, the process <NUM> may include activating counterfeit application <NUM>. At block <NUM>, the process <NUM> may include capturing in real-time an image with region of interest (ROI) and all digits of the printed content of the product or package. At block <NUM>, the process <NUM> may include retrieving a stored image of the product or package from the CDS database. At block <NUM>, the process <NUM> may include comparing a region of interest (ROI) in the two images. At block <NUM>, the process <NUM> may determine if there is a match between the two images. If there is a match, an indicator is generated that the product or package is validated or authenticated. If there is not a match, an indicator is generated representative of the failure or that the product or package is counterfeit.

In counterfeit detection process, the same images used in the production line are used in the CDS <NUM> or <NUM> and the PIS <NUM> or <NUM> to determine a code match based on image recognition.

The OCR algorithms may be trained based on validation of any digit whether passed or failed during the print inspection system. Thus, a suite of trained OCR algorithms for each printer technology may be stored in the mobile computing device or remotely such that the trained OCR algorithms when executed would detect the authentication code based on printer technology in the real-time image. The authentication code instead of the image would be sent to the CDS <NUM> or <NUM> for validation matching.

Alternately, the CDS <NUM> or <NUM> may include the trained OCR algorithms. The trained OCR algorithm at the CDS <NUM> or <NUM> may perform optical character recognition on the image from the mobile computing device to detect the authentication code embedded within. Hence, the CDS <NUM> or <NUM> would generate a communication back to the mobile computing device to indicate the authenticity of the product or package.

Referring now to <FIG>, in a basic configuration, the computing device <NUM> may include any type of stationary computing device or a mobile computing device. The computing device <NUM> may be a computing system with one or more servers, each server including one or more processors. The servers may include a server application running on the server for online communications and may provide graphical user interface (GUI) or webpages. The term computing device and computing system may be interchangeable. The processors <NUM> and <NUM> may be computing devices, web servers or other computer devices. The processor <NUM> and <NUM> may be connected to the computing device <NUM> via the Internet, Intranet, local area network (LAN), or wide area network (WAN). Communications between computing device <NUM> and the processors <NUM> and <NUM> may be wired, wireless or a combination of wired and wireless.

Computing device <NUM> may include one or more processors <NUM> and system memory in hard drive <NUM>. Depending on the exact configuration and type of computing device, system memory may be volatile (such as RAM <NUM>), non-volatile (such as read only memory (ROM <NUM>), flash memory <NUM>, and the like) or some combination of the two. System memory may store operating system <NUM>, one or more applications, and may include program data for performing at least the processes <NUM>, <NUM> and <NUM>, described herein. Computing device <NUM> may also have additional features or functionality. For example, computing device <NUM> may also include additional data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, or tape. Computer storage media may include volatile and non-volatile, non-transitory, removable and non-removable media implemented in any method or technology for storage of data, such as computer readable instructions, data structures, program modules or other data. System memory, removable storage and non-removable storage are all examples of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, Electrically Erasable Read-Only Memory (EEPROM), flash memory or other memory technology, compact-disc-read-only memory (CD-ROM), digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other physical medium which can be used to store the desired data and which can be accessed by computing device. Any such computer storage media may be part of device.

Computing device <NUM> may also include or have interfaces for input device(s) (not shown) such as a keyboard, mouse, pen, voice input device, touch input device, etc. The computing device <NUM> may include or have interfaces for connection to output device(s) such as a display <NUM>, speakers, etc. The computing device <NUM> may include a peripheral bus <NUM> for connecting to peripherals. Computing device <NUM> may contain communication connection(s) that allow the device to communicate with other computing devices, such as over a network or a wireless network. By way of example, and not limitation, communication connection(s) may include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), infrared and other wireless media. The computing device <NUM> may include a network interface card <NUM> to connect (wired or wireless) to a network.

The computing device <NUM> may include applications stored in the hard drive <NUM> for carrying out various processes and functions described herein. The hard drive may include a product/package code generator <NUM> with a plurality of digits using standard characters, numbers or symbols in any language according to various printer technologies to produce a "standard code" for a product or package. A digit includes a character, number, or symbol. A digit may include all or part of a logo.

The product/package code or "standard code" from the code generator <NUM> may be converted to an authentication code to prevent or deter counterfeit production of the products and/or packages. All codes including "standard codes" are authentication codes when printed. However, some codes can be duplicated and copied on counterfeit products. Thus, in some instances, the authentication code is for the prevention of counterfeiting of products and/or packages.

The applications may include an authentication code generator <NUM> to deter counterfeit production of similar products or packages. The authentication code generator <NUM> may include a character modifier <NUM>. The character modifier <NUM> may modify any standard digit (i.e., character, number, or symbol) in any language found in the "standard code. " The character modifier <NUM> may include a font characteristic modifier <NUM> and a dot or pixel modifier <NUM> to modify a dot or pixel of a digit. The font characteristic modifier <NUM> may change the size, shape and spacing of a font for a digit.

The authentication code generator <NUM> may include a multiple code line generator <NUM> wherein the multiple code line generator <NUM> overlays or superimposes two or more lines of digits. In some instances, the multiple code line generator <NUM> may generate two or more lines of digits into covert codes which may be used together to verify the authenticity of a product or package.

The authentication code generator <NUM> may include a figure, symbol or logo generator <NUM> which is generated randomly or based on a stored set of figures, symbols and/or logos. The authentication code generator <NUM> may receive the "standard code" from code generator <NUM> and modify the "standard code" to generate an authentication code based on one or more of the character modifier <NUM>, the figure, symbol or logo generator <NUM> and the multiple code line generator <NUM>.

One of the "standard code" or the authentication code may be stored in the field values <NUM> for printing by the printer as the printed content on a substrate.

Computer program code for carrying out operations described above may be written in a variety of programming languages, including but not limited to a high-level programming language, such as Java, C or C++, for development convenience. In addition, computer program code for carrying out operations of embodiments described herein may also be written in other programming languages, such as, but not limited to, interpreted languages. Some modules or routines may be written in assembly language or even micro-code to enhance performance and/or memory usage. It will be further appreciated that the functionality of any or all of the program modules may also be implemented using discrete hardware components, one or more application specific integrated circuits (ASICs), or a programmed Digital Signal Processor (DSP) or microcontroller. A code in which a program of the embodiments is described can be included as a firmware in a RAM, a ROM and a flash memory. Otherwise, the code can be stored in a tangible computer-readable storage medium such as a magnetic tape, a flexible disc, a hard disc, a compact disc, a photo-magnetic disc, a digital versatile disc (DVD) or other tangible and non-transitory memory device.

The embodiments may be configured for use in a computer or a data processing apparatus which includes memory devices, such as a central processing unit (CPU), a RAM and a ROM as well as a storage medium such as a hard disc.

<FIG> illustrates an ideal printed character template 1300A. The ideal printed character template 1300A includes for example a matrix X by Y where in the example, X is <NUM> and Y is <NUM>. However, other values of X and Y may be used such as <NUM>, <NUM>, <NUM>, etc. The values of X and Y may differ. The template 1300A represents a matrix used to form an ideal character printed by for example using inkjet technology.

Each standard character, number or symbol (i.e., digit) is generated using an ideal character template wherein the character, number or symbol size and shape are printed to conform to the size of the matrix such that adjacent symbols, characters or numbers have similar size and shape set to the same font, for example. The printer may include a printer controller (not shown) to generate each standard digit and a logo, for example, according to industry standards and practices. For example, in inkjet technology, drop charge values for generating a standard digit is pre-programed in the printer controller.

By way of example, the template 1300A includes the character "L" in which includes ink is filled in cells of the matrix in a vertical line on the left side of the template and cells in a horizontal line at a bottom of the template 1300A. The ink filled matrix cell is shown hatched by vertical lines.

<FIG> illustrates a printed character template 1300B. The template 1300B is represented as the same as template 1300A however, the printed character "L" is shown with some of the cells of the filled/printed matrix include un-inked areas <NUM> and/or stray ink marks <NUM> in the other cells. This un-inked area <NUM> and/or stray marks <NUM> can cause a failure by the optical character recognition (OCR) algorithm to recognize the digit (i.e., character, number or symbol).

By way of non-limiting example, the stray marks <NUM> may be generated as a result of normal operation of a printer, such as those using a viscous ink medium. The un-inked areas <NUM> and <NUM> may be the result of a modified character such that a dot or pixel was omitted from the digit as required by an authentication code.

However, in an image, the un-inked areas <NUM> and <NUM> may be an appearance of an un-inked area created by a reflection from the substrate S at the time of image capture by the camera in the PM system <NUM>. For example, the point of reflection may appear along the same plane of a digit such as based on the ambient lighting conditions in which the camera is operated.

The trained OCR algorithms may be varied for substrate reflectivity and/or modified characters or digits, accordingly.

<FIG> illustrates a package 1400A with printed content in a region of interest ROI1. The printed content includes a plurality of digits "JLKPY09882" in a region of interest ROI1 on substrate S of a product or package. The code of the plurality of digits is surrounded by noise represented by dotted area <NUM> in the ROI1, and an adjacent text fields titles "NUTRITIONAL FACTS. " The ROI1 may also include a shaded area <NUM>. The stray line <NUM> and lines <NUM> represents extraneous matter which may provide noise in the image. The stray line <NUM> and lines <NUM> are shown to represent extraneous matter which may encroach into the ROI1 area which may cause a false failure by the OCR algorithms.

<FIG> illustrates a convex substrate S in the form of a bottle cap 1400B with printed content "JLKP" denoted as CODE2 in a region of interest ROI2 along a vertical plane of the product. The printed content, denoted as CODE <NUM>, being printed on a substrate having a convex shape. Thus, the print when printed has a perspective view. The top substrate of the bottle cap 1400B may include a code, denoted as CODE3, on a top flat surface in region of interest ROI3 of the bottle cap. This surfaces of the bottle cap 1400B may be plastic. In some embodiments, the surfaces may be metal and have a reflectivity. The line <NUM> represents a stray line which may be captured in an image which may encroach into the region of interest ROI2.

<FIG> illustrates a concave substrate <NUM> with printed content, denoted as CODE4, partially shown in a region of interest, denoted as ROI4. In some packaging, such as metal aerosol spray cans, the bottom of the can may include a concaved surface on which is printed a code or printed content is applied thereon.

<FIG> illustrates an authentication code 1500A including a plurality of characters, such as by example, "JLKPY09882" as CODE <NUM> in a region of interest ROI5 on substrate S of a product or package. The region of interest ROI5 is denoted by the dashed lined box. The area 1502B of the region of interest ROI5 may include a solid color such as white or other colors. The area 1502B of the region of interest ROI5 includes noise denoted by the dotted pattern <NUM>. In some embodiments, the noise may be the result of the product in a transparent or semi-transparent container or substrate.

The authentication code 1500A may include a code with a modified character, such as described is <CIT> The authentication code may include two covert codes to verify the authenticity of the product or package. In some codes, at least one dot or pixel used to create a character, number or symbol, in any language, may be removed to create a single modified character, number or symbol (i.e., digit).

The authentication code 1500A may include at least one character, number or symbol which is randomly modified to change a characteristic of one or more characters, number or symbols. By way of non-limiting example, a characteristic may include a font type, font size and font spacing. The original product code or other code may include a first font wherein the modified characters, numbers or symbols may be modified to include at least one of a different font size and a different font type. In the example, the first character "J" has a characteristic of the modified font.

The authentication code 1500A may include an arbitrary figure, arbitrary symbol <NUM> and <NUM> or an arbitrary logo incorporated in the authentication code. While the example authentication code includes one or more modified characters or additional figures, symbols or logo, the authentication code 1500A may include other variations including randomly generated variations to distinguish the authentication code 1500A.

The authentication code 1500A is visible to the unaided eye or does not require special glasses to see the digits of the code on the substrate.

<FIG> illustrates an authentication code 1500B including a plurality of characters, such as by example, "JLKPY09882" represents code CODE6 in a region of interest ROI6 on substrate S of a product or package. The region of interest ROI6 is denoted by the dashed lined box. The area 1502B of the region of interest ROI6 may include a solid color such as white or other colors. In this code 1500B, two lines of code CODE6 and CODE7 wherein the code digits "FEB <NUM><NUM>" denoted as CODE7 are superimposed or overlaid at least in part on a portion of the code digits "JLKPY09882" denoted as CODE6. In some codes, only a portion of the digits of code CODE6 would by overlaid on a portion of the digits of code CODE7. In this example, the "L" has a missing dot or pixel. The OCR algorithm may be trained for reflective surfaces to detect to edges of a character or digit with a "reflective" edge wherein a "reflective" edge appearing white or silver in a captured image under various ambient lighting conditions. Similarly, if the code is an authentication code, non-inked portions embedded within the modified digit may be detected using the field values.

Claim 1:
A device comprising:
a printer configured to apply a code of printed content on a substrate of a product, the printer having a printer technology type, the code having a plurality of digits; and
an optical code detector, executed by one or more processors, to detect the code in a received image of the product printed by the printer by optically recognizing characters in the received image using a trained optical character recognition (OCR) algorithm for the printer technology type, the OCR algorithm trained to identify each digit of the plurality of digits of the code in a region of interest (ROI) based on at least one parameter of the product to which the printed content is directly applied and the printer technology type;
wherein the optical code detector is configured to select the OCR algorithm for the printer technology type from a database of a plurality of OCR algorithms based on a printer technology type in metadata.