Patent Publication Number: US-2022230279-A1

Title: Optical information reading device

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     The present application claims foreign priority based on Japanese Patent Application No. 2021-005654, filed Jan. 18, 2021, and No. 2021-164231, filed Oct. 5, 2021, the contents of which are incorporated herein by references. 
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present aspect relates to an optical information reading device that optically reads information. 
     2. Description of Related Art 
     In recent years, for example, the importance of so-called traceability that enables a distribution route of an article to be tracked from a manufacturing stage to a consumption stage or a disposal stage has increased, and code readers for the purpose of such traceability have been widely used. In addition to the traceability, the code readers are used in various fields. 
     In general, a code reader is configured to be capable of capturing an image of a code, such as a bar code and a two-dimensional code, attached to a workpiece with a camera, specifying and binarizing the code included in the obtained image by image processing, and performing decoding processing to read information, and is a device that optically reads information, and thus, is also called an optical information reading device. 
     As this type of optical information reading device, a device including a machine learning device that learns a model structure representing a relationship between an image of a code acquired by a visual sensor of a robot and an image of an ideal code is known, for example, as disclosed in Japanese Patent No. 6683666. 
     Japanese Patent No. 6683666 describes that an image appropriate for reading is restored by applying a learning result of the machine learning device to the image of the code acquired by the visual sensor during operation. 
     Meanwhile, optical information reading devices include a handheld optical information reading device that enables code reading work in a state of being held by a user&#39;s hand, and a stationary optical information reading device that is used in a state of being installed in a production line or the like of a factory. The handheld optical information reading device is required to be as small and lightweight as possible in consideration of workability during reading. In the stationary optical information reading device, there is a strong demand for a further increase in processing speed in order to cope with a workpiece flowing through the line at a high speed. 
     However, when an attempt is made to incorporate the machine learning device as disclosed in Japanese Patent No. 6683666 into the optical information reading device, a calculation load of image processing using machine learning is extremely heavy so that it is difficult to simplify a processor. As a result, it is difficult to reduce the size and weight of the handheld optical information reading device. In addition, the heavy calculation load results in a decrease in processing speed, and thus, it is not easy to apply this machine learning device to the stationary optical information reading device. 
     SUMMARY OF THE INVENTION 
     The present aspect has been made in view of such points, and an object thereof is to improve reading accuracy by enabling a code image to be restored by machine learning while reducing a calculation load in an optical information reading device. 
     In order to achieve the above object, according to one embodiment of the invention, an optical information reading device that reads a code attached to a workpiece is used as a premise. The optical information reading device includes: a camera that captures an image of the code and generates a code image; 
     a storage part that stores a structure and a parameter of a neural network generated in advance by machine learning of a plurality of defective images having portions inappropriate for code reading and a plurality of ideal images respectively corresponding to the plurality of defective images; and a processor that inputs the code image generated by the camera to the neural network configured using the structure and parameter stored in the storage part to attempt to restore the code image according to the structure and parameter stored in the storage part, and executes decoding processing on the restored code image. The optical information reading device can be configured by accommodating the camera, the storage part, and the processor in a housing. 
     According to this configuration, it is attempted to restore the code image when the code image generated by the camera is input to the neural network during the operation of the optical information reading device. Thus, it is possible to obtain the code image obtained after the restoration attempt which has been restored so as to be an image appropriate for code reading. Since the decoding processing is performed on the code image obtained after the restoration attempt, the reading accuracy is improved. 
     Since the neural network is configured using the structure and parameter obtained by performing the machine learning of the plurality of defective images and the plurality of ideal images in advance, the optical information reading device only needs to perform inference processing by the neural network without performing learning processing, thereby reducing the calculation load of the processor. As a result, a size and weight of a handheld optical information reading device can be reduced, and the processing speed of a stationary optical information reading device can be increased. 
     According to another embodiment of the invention, an optical information reading device that reads a code attached to a workpiece is used as a premise. The optical information reading device includes: a camera that captures an image of the code and generates a code image; 
     a storage part that stores a structure and a parameter of a neural network generated in advance by machine learning of a plurality of defective images having portions inappropriate for code reading and a plurality of ideal images respectively corresponding to the plurality of defective images; a setting part configured to input the code image generated by the camera to the neural network configured using the structure and parameter stored in the storage part to set an image restoration filter that attempts restoration of the code image according to the structure and parameter stored in the storage part; and a processor that applies the image restoration filter set by the setting part to the code image generated by the camera to attempt the restoration of the code image and executes decoding processing on the code image obtained after the attempt of the restoration. The optical information reading device can be configured by accommodating the camera, the storage part, and the processor in a housing. 
     According to this configuration, when the image restoration filter is set by the setting part, the code image after the restoration attempt which has been restored by applying the image restoration filter is obtained, and the decoding processing is executed on this code image after the restoration attempt, so that the reading accuracy is improved. 
     In the processing performed by the image restoration filter, the code image generated by the camera is input to the neural network to attempt to restore the code image. Since the neural network is configured using the structure and parameter obtained by performing the machine learning of the plurality of defective images and the plurality of ideal images in advance, the calculation load of the processor is reduced as described above. 
     According to still another embodiment of the invention, the setting part is configured to be capable of receiving setting of the image restoration filter by a user. Thus, it is possible for the user to set the image restoration filter when it is desired to apply the image restoration filter, and not to set the image restoration filter when it is not desired to apply the image restoration filter. That is, a case where a code image inappropriate for reading is rarely generated is conceivable depending on a use environment of the optical information reading device, for example, and the calculation load of the processor can be further reduced and the processing speed can be increased when the user performs setting not to set the image restoration filter in advance in such a use environment. 
     According to still another embodiment of the invention, a filter processing part, which executes an image processing filter on the code image before the code image generated by the camera is input to the neural network, is further provided. Thus, the appropriate image processing can be executed before attempting the restoration using the neural network. As a result, the restoration of the code image becomes more accurate. Examples of the image processing filter include a noise removal filter and the like. 
     According to still another embodiment of the invention, the filter processing part executes a noise removal filter that removes noise included in an image generated by the camera. Thus, it is possible to successfully restore cells forming the code, for example, at the time of attempting the restoration using the neural network. 
     According to still another embodiment of the invention, the optical information reading device may further include a tuning execution part that sets various conditions such that the various conditions become conditions appropriate for the decoding processing at the time of setting the optical information reading device. The tuning execution part can include the setting part configured to set the image restoration filter. 
     With this configuration, the tuning execution part sets, for example, a capturing condition of the camera and the like, and can also set the image restoration filter. Thus, application or non-application of the image restoration filter can be selected according to an environment in which the user operates the optical information reading device. 
     According to still another embodiment of the invention, the tuning execution part can set a parameter related to the image restoration filter. Thus, the image restoration can be appropriately performed according to the environment in which the user operates the optical information reading device. 
     According to still another embodiment of the invention, the tuning execution part can set a code condition included in the code image generated by the camera. Thus, the image restoration can be appropriately performed according to the code condition. 
     According to still another embodiment of the invention, a size of the code image to be input to the neural network can be set based on the code condition set by the tuning execution part. Thus, the calculation load of the processor can be reduced without decreasing the reading accuracy. 
     According to still another embodiment of the invention, the storage part can be configured to store a parameter set including information regarding setting of the image restoration filter, the storage part can store a first parameter set for setting the image restoration filter and a second parameter set for not setting the image restoration filter, and one parameter set selected from the first parameter set and the second parameter set can be applied to execute the decoding processing by the processor. 
     That is, there may be a case where it is unnecessary to restore the code image depending on the environment in which the user operates the optical information reading device. In this case, the restoration of the code image is not attempted by applying the second parameter set, and thus, the calculation load of the processor is reduced, and the processing speed is increased. On the other hand, the image restoration using the neural network is attempted by applying the first parameter set in a case where it is necessary to restore the code image, and thus, the highly accurate reading can be performed. 
     According to still another embodiment of the invention, the processor includes an integrated circuit dedicated to an attempt for restoration of the code image. Thus, the processing can be further speeded up. 
     According to still another embodiment of the invention, the housing is a handheld housing having a grip part to be gripped by the user during the operation. Thus, it is possible to capture the image of the code by directing the camera in a desired direction in a state where the user holds the housing by the hand. In this case, the user may be able to switch between application and non-application of the image restoration filter as necessary. 
     According to still another embodiment of the invention, the processor is configured to execute decoding processing on the code image before attempting restoration, attempt to restore the code image when decoding fails, and execute decoding processing on the restored code image. That is, in a case where a code image that does not require the restoration of the code is generated, the decoding processing succeeds by executing the decoding processing on the code image before attempting the restoration. Thus, it is unnecessary to attempt the restoration that increases the calculation load, and the processing is speeded up. On the other hand, in a case where the decoding processing fails, the code image is restored and then subjected to the decoding processing. Thus, a success rate of decoding can be increased. 
     According to still another embodiment of the invention, an image restoration part that inputs the code image to the neural network and executes inference processing of generating a restored image obtained by restoring the code image, a first decoding processing part that executes first decoding processing on the code image generated by the camera, and a second decoding processing part that executes second decoding processing on the restored image generated by the image restoration part are further provided. The second decoding processing part extracts a code candidate region from the code image and sends a trigger signal to the image restoration part to execute the inference processing. When receiving the trigger signal sent from the second decoding processing part, the image restoration part inputs a partial image corresponding to the code candidate region to the neural network and executes the inference processing of generating a restored image obtained by restoring the partial image. The second decoding processing part can determine a grid position indicating each cell position of the code based on the restored image, and execute decoding of the restored image based on the determined grid position. That is, the first decoding processing part executes decoding of a normal code image that has not been subjected to the inference processing, the image restoration part executes the generation of the restored image by the inference processing, and the second decoding processing part decodes the restored image restored by the inference processing. Thus, it is possible to increase the processing speed by constructing processing circuits suitable for the respective parts. In addition, the image restoration part only needs to restore the partial image corresponding to the code candidate region, and thus, the processing speed can be further increased. 
     According to still another embodiment of the invention, the inference processing by the image restoration part and the first decoding processing by the first decoding processing part are executed in parallel. Thus, the processing speed can be increased. In addition, at least a part of a period during which the second decoding processing part executes the second decoding processing has a pause period during which the inference processing by the image restoration part is not executed. Thus, it is possible to reduce a load on the image restoration part and suppress heat generation. In this case, the second decoding processing part may include a plurality of cores. 
     According to still another embodiment of the invention, the first decoding processing part can execute the first decoding processing in a time shorter than a time required for the second decoding processing. Further, the setting part can switch whether to execute the second decoding processing, that is, whether to execute the decoding processing of the restored image. Since the second decoding processing executes the decoding processing of the restored image, the time required for the processing is longer than that of the first decoding processing of executing the decoding processing of the normal code image. Assuming this, in a case where it is set to execute the second decoding processing, a decoding timeout time (decoding limit time) longer than the time required for executing the second decoding processing can be set. On the other hand, in a case where it is set not to execute the second decoding processing, a decoding timeout time shorter than the time required for executing the second decoding processing can be set. Thus, when the decoding of the restored image exceeds the decoding timeout time, it is possible to quickly shift to the decoding processing of the next captured image. 
     The decoding processing part according to still another embodiment of the invention can execute the second decoding processing on the restored image in parallel with the first decoding processing on the code image generated by the camera, and thus, the processing speed can be increased even if both the code image and the restored image exist. In a case where it is set by the setting part not to execute the second decoding processing, the decoding processing part can allocate resource resources to be used for the second decoding processing to the first decoding processing. The processing resources are, for example, a use area of a memory, a core forming a multi-core CPU, and the like. If it is set not to execute the second decoding processing in a case where a memory area or the core is set in advance as the processing resources to be used for the second decoding processing, the memory area and the core can be used for the first decoding processing, and thus, the first decoding processing can be further speeded up. 
     The decoding processing part according to still another embodiment of the invention extracts a code candidate region in which the code is highly likely to be present from the code image. The image restoration part inputs a partial image corresponding to the code candidate region to the neural network, and generates a restored image obtained by restoring the partial image. The decoding processing part determines a grid position based on the restored image generated by the image restoration part, and executes decoding of the restored image based on the determined grid position. That is, it takes time to generate the restored image in many cases, the time required for generating the restored image can be shortened by extracting the code candidate region based on, for example, a characteristic amount indicating a code likelihood before generating the restored image. In addition, the determination of the grid position can be executed with high accuracy based on the restored image, and thus, the reading performance is improved. 
     According to still another embodiment of the invention, tuning processing of determining optimum imaging condition and decoding condition and setting a size of a code to be read is executed. The decoding processing part can determine a size of the extracted image including the code candidate region from the code image based on the size of the code set in the tuning processing. Since the extracted image is enlarged or reduced to an image having a predetermined size and then input to the neural network, a PPC of a code image input to the neural network can be kept within a predetermined range, and an image restoration effect by the neural network can be stably achieved. In addition, it is conceivable that there are various sizes of codes to be read, but the size of the code to be finally input to the neural network can be fixed, and thus, the balance between high-speed processing and the ease of decoding can be maintained at a certain level or more. 
     The camera according to still another embodiment of the invention receives light, which has passed through a first polarizing plate and been reflected from the code, through a second polarizing plate, and generates a code image having lower contrast as compared with a case where the first polarizing plate and the second polarizing plate are not interposed. Since a specular reflection component of the workpiece is removed by using the polarizing plate, it is possible to acquire the code image in which the influence of the specular reflection component has been reduced. For example, the polarizing plate is suitable for an image having many specular reflection components as in a case where the image is obtained by capturing a metal workpiece, but there is a case where the code image becomes dark due to a decrease in the amount of light, and the contrast decreases. In such a case, the reading performance is improved by converting the code image into the restored image with the high contrast by the inference processing of the neural network. 
     According to still another embodiment of the invention, the tuning execution part can set a plurality of imaging conditions and code conditions including first imaging condition and code condition and second imaging condition and code condition. The decoding processing part can input a code image generated under the first imaging condition and code condition to the neural network to generate a restored image, and can input a code image generated under the second imaging condition and code condition different from the first imaging condition and code condition to the neural network to generate a restored image when the decoding processing of the restored image fails, and execute decoding of the restored image. 
     As described above, the code image can be restored by the neural network configured using the structure and parameter obtained by the machine learning of the plurality of defective images and the plurality of ideal images in advance. Thus. it is possible to improve the reading accuracy by enabling the code image to be restored by the machine learning while reducing the calculation load in the optical information reading device. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a diagram for describing the operation time of a stationary optical information reading device; 
         FIG. 2  is a perspective view of the stationary optical information reading device; 
         FIG. 3  is a block diagram of an optical information reading device; 
         FIG. 4  is a perspective view of a handheld optical information reading device; 
         FIG. 5  is a diagram for describing each part configured by a processor; 
         FIG. 6  is a conceptual view of a neural network; 
         FIG. 7  is a flowchart illustrating an example of a basic procedure during learning of the neural network; 
         FIGS. 8A and 8B  illustrate a pair of a defective image and an ideal image, in which  FIG. 8A  is an example of the defective image and  FIG. 8B  is an example of the ideal image; 
         FIG. 9  is a conceptual view of a convolutional neural network used for image conversion; 
         FIG. 10  is a flowchart illustrating an example of a procedure of a tuning step performed during setting of the optical information reading device; 
         FIG. 11  is a flowchart illustrating an example of a decoding processing procedure before a reduction ratio and an enlargement ratio are determined; 
         FIG. 12  is a flowchart illustrating an example of a decoding processing procedure after the reduction ratio and the enlargement ratio are determined; 
         FIG. 13A  is a view illustrating an example of a code image generated by a camera, and  FIG. 13B  is a view illustrating an example of an image obtained after execution of an image processing filter; 
         FIG. 14A  is a view illustrating an example of an image obtained after reduction processing, and  FIG. 14B  is a view illustrating an example of an image obtained after code region extraction; 
         FIG. 15  is a view illustrating a restoration example of a code image obtained by the neural network; 
         FIG. 16  is a diagram illustrating an example of a decoding processing procedure according to another embodiment; 
         FIG. 17  is a time chart of decoding processing performed by a first decoding processing part and a second decoding processing part; 
         FIG. 18  is a time chart of decoding processing performed by a decoding processing part; 
         FIG. 19  is a flowchart illustrating examples of first decoding processing and second decoding processing; 
         FIG. 20  is a view illustrating an image example of each processing; 
         FIGS. 21A to 21C  are views for describing a case of handling black-and-white inversion of a code using a plurality of neural networks; 
         FIGS. 22A to 22C  are views for describing a case of handling black-and-white inversion of a code using one neural network; 
         FIG. 23  is a graph illustrating a relationship between contrast and a matching level; 
         FIG. 24  is a flowchart illustrating an example of a process of calculating the matching level; 
         FIG. 25  is a view illustrating an example of a user interface displayed on a display part; and 
         FIGS. 26A to 26C  are diagrams illustrating examples of using an imaging element with an AI chip. 
     
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
     Hereinafter, embodiments of the present aspect will be described in detail with reference to the drawings. Note that the following description of the preferred embodiments is merely an example in essence, and is not intended to limit the present aspect, its application, or its use. 
     (Stationary Optical Information Reading Device)  FIG. 1  is a diagram schematically illustrating the operation time of a stationary optical information reading device  1  according to the embodiment of the present aspect. In this example, a plurality of workpieces W are conveyed in a direction of arrow Y in  FIG. 1  in the state of being placed on an upper surface of a conveying belt conveyor B, the optical information reading device  1  according to the embodiment is installed at a place separated upward from the workpieces W. The optical information reading device  1  is a code reader configured to be capable of capturing an image of a code attached to the workpiece W and reading information by performing decoding processing of the code included in the captured image. In the example illustrated in  FIG. 1 , the optical information reading device  1  is the stationary type. During the operation time of the stationary optical information reading device  1 , the optical information reading device  1  is used in the state of being fixed to a bracket or the like (not illustrated) so as not to move. Note that the stationary optical information reading device  1  may be used in the state of being held by a robot (not illustrated). In addition, the code of the workpiece W in a stationary state may be read by the optical information reading device  1 . The operation time of the stationary optical information reading device  1  is the time during which an operation of sequentially reading codes of the workpieces W conveyed by the conveying belt conveyor B is performed. 
     In addition, the code is attached to an outer surface of each of the workpieces W. The codes include both a barcode and a two-dimensional code. Examples of the two-dimensional code include a QR code (registered trademark), a micro QR code, a data matrix (data code), a Veri code, an Aztec code, PDF 417, a Maxi code, and the like. The two-dimensional code has a stack type and a matrix type, and the present aspect can be applied to any two-dimensional code. The code may be attached by printing or engraving directly on the workpiece W, may be attached by being pasted to the workpiece W after being printed on a label, and any mechanism or method may be used. 
     The optical information reading device  1  is connected to a computer  100  and a programmable logic controller (PLC)  101  in a wired manner by signal lines  100   a  and  101   a , respectively. However, the aspect is not limited thereto, and the optical information reading device  1 , the computer  100 , and the PLC  101  may have built-in communication modules to wirelessly connect the optical information reading device  1  with the computer  100  and the PLC  101 . The PLC  101  is a control device configured for sequence control of the conveying belt conveyor B and the optical information reading device  1 , and can use a general-purpose PLC. The computer  100  can use a general-purpose or dedicated electronic calculator, a portable terminal, or the like. 
     In addition, the optical information reading device  1  receives a reading start trigger signal that defines a code reading start timing from the PLC  101  via the signal line  101   a  during its operation time. Then, the optical information reading device  1  captures an image of the code and decodes the image based on the reading start trigger signal. Thereafter, the decoding result is transmitted to the PLC  101  via the signal line  101   a . In this manner, during the operation time of the optical information reading device  1 , the input of the reading start trigger signal and the output of the decoding result are repeatedly performed via the signal line  101   a  between the optical information reading device  1  and an external control device such as the PLC  101 . Note that the input of the reading start trigger signal and the output of the decoding result may be performed via the signal line  101   a  between the optical information reading device  1  and the PLC  101  as described above, or may be performed via another signal line (not illustrated). For example, a sensor configured to detect arrival of the workpiece W and the optical information reading device  1  may be directly connected to each other to input the reading start trigger signal from the sensor to the optical information reading device  1 . 
     As illustrated in  FIG. 2 , the optical information reading device  1  includes a box-shaped housing  2 , a polarizing filter attachment  3 , an illumination part  4 , a camera  5 , a display part  6 , a power connector  7 , and a signal line connector  8 . In addition, the housing  2  is provided with indicators  9 , aimer light irradiation parts (light irradiation parts)  10 , and operation buttons  11  and  12 , and the indicator  9 , the aimer light irradiation part  10 , and the operation buttons  11  and  12  are also components of the optical information reading device  1 . 
     The housing  2  has a shape that is long in a predetermined direction, but the shape of the housing  2  is not limited to the illustrated shape. The polarizing filter attachment  3  is detachably attached to a front outer surface of the housing  2 . The housing  2  accommodates the illumination part  4 , the camera  5 , the aimer light irradiation part  10 , a processor  20 , a storage part  30 , a ROM  40 , a RAM  41 , and the like. The processor  20 , the storage part  30 , the ROM  40 , and the RAM  41  are also components of the optical information reading device  1 . 
     The illumination part  4  is provided on the front side of the housing  2 . The illumination part  4  is a portion configured to illuminate at least the code of the workpiece W by emitting light toward the front of the optical information reading device  1 . As also illustrated in  FIG. 3 , the illumination part  4  includes a first illumination part  4   a  formed of a plurality of light emission diodes (LEDs), a second illumination part  4   b  formed of a plurality of light emission diodes, and an illumination drive part  4   c  formed of an LED driver or the like that drives the first illumination part  4   a  and the second illumination part  4   b . The first illumination part  4   a  and the second illumination part  4   b  are individually driven by the illumination drive part  4   c , and can be separately turned on and off. The illumination drive part  4   c  is connected to the processor  20 , and the illumination drive part  4   c  is controlled by the processor  20 . Note that one of the first illumination part  4   a  and the second illumination part  4   b  may be omitted. 
     As illustrated in  FIG. 2 , the camera  5  is provided in a central part on the front side of the housing  2 . An optical axis direction of the camera  5  substantially coincides with a light irradiation direction of the illumination part  4 . The camera  5  is a portion that captures a code and generates a code image. As illustrated in  FIG. 3 , the camera  5  includes: an imaging element  5   a  that receives light reflected from the code attached to the workpiece W and illuminated by the illumination part  4 ; an optical system  5   b  having a lens and the like; and an autofocus module (AF module)  5   c . The light reflected from a portion of the workpiece W to which the code is attached is incident on the optical system  5   b , and the incident light is emitted toward the imaging element  5   a  and forms an image on an imaging surface of the imaging element  5   a.    
     The imaging element  5   a  is an image sensor including a light receiving element, such as a charge-coupled device (CCD) and a complementary metal oxide semiconductor (CMOS), which converts the image of the code obtained through the optical system  5   b  into an electrical signal. The imaging element  5   a  is connected to the processor  20 , and the electrical signal converted by the imaging element  5   a  is input to the processor  20  as data of the code image. In addition, the AF module  5   c  is a mechanism that performs focusing by changing a position and a refractive index of a focusing lens among the lenses constituting the optical system  5   b . The AF module  5   c  is also connected to the processor  20  and controlled by the processor  20 . 
     As illustrated in  FIG. 2 , the display part  6  is provided on a side surface of the housing  2 . The display part  6  is configured using, for example, an organic EL display, a liquid crystal display, or the like. The display part  6  is connected to the processor  20 , and can display, for example, the code captured by the camera  5 , a character string that is a decoding result of the code, a read success rate, a matching level, and the like. The read success rate is an average read success rate when read processing is executed a plurality of times. The matching level is a reading margin that indicates the ease of reading the code that has been successfully decoded. This can be obtained from the number of error corrections having occurred during decoding, and can be expressed numerically, for example. The matching level (reading margin) increases as the error corrections decrease, and the matching level (reading margin) decreases as the error corrections increase. 
     A power cable (not illustrated), configured to supply power to the optical information reading device  1  from the outside, is connected to the power connector  7 . In addition, the signal lines  100   a  and  101   a , configured to perform communication with the computer  100  and the PLC  101 , are connected to the signal line connector  8 . The signal line connector  8  can be configured using, for example, an Ethernet connector, a serial communication connector such as an RS 232C, a USB connector, or the like. 
     The housing  2  is provided with the indicator  9 . The indicator  9  is connected to the processor  20  and can be configured using a light emitting body such as a light emission diode. An operating state of the optical information reading device  1  can be notified to the outside by a lighting state of the indicator  9 . 
     The pair of aimer light irradiation parts  10  is provided on the front side of the housing  2  so as to sandwich the camera  5 . As illustrated in  FIG. 3 , the aimer light irradiation part  10  includes an aimer  10   a  formed of a light emission diode and the like, and an aimer drive part  10   b  that drives the aimer  10   a . The aimer  10   a  emits light (aimer light) toward the front of the optical information reading device  1  to indicate a capturing range or the center of the visual field of the camera  5 , a guide of an optical axis of the illumination part  4 , and the like. Specifically, the aimer  10   a  emits visible light of a color (for example, red, green, or the like), different from ambient light, toward the inside of a capturing visual field range of the camera  5 , and forms a mark visible to the naked eye on a surface irradiated with the visible light. The mark may be various figures, symbols, characters, or the like. A user can also refer to the light emitted from the aimer  10   a  to install the optical information reading device  1 . 
     As illustrated in  FIG. 2 , the operation buttons  11  and  12  used at the time of setting the optical information reading device  1  are provided on the side surface of the housing  2 . The operation buttons  11  and  12  include, for example, a select button, an enter button, and the like. In addition to the operation buttons  11  and  12 , for example, a touch panel type operation mechanism may be provided. The operation buttons  11  and  12  are connected to the processor  20 , and the processor  20  can detect operation states of the operation buttons  11  and  12 . It is possible to select one of a plurality of options displayed on the display part  6  or to confirm a selected result by operating the operation buttons  11  and  12 . 
     (Handheld Optical Information Reading Device) 
     Although the case where the optical information reading device  1  is the stationary type has been described in the example described above, the present aspect can also be applied to an optical information reading device other than the stationary optical information reading device  1 .  FIG. 4  illustrates a handheld optical information reading device  1 A, and the present aspect can also be applied to the handheld optical information reading device  1 A as illustrated in  FIG. 4 . 
     A housing  2 A of the handheld optical information reading device  1 A has a shape that is long in the up-down direction. Note that an orientation of the optical information reading device  1 A at the time of use is not limited to the illustrated orientation, and the optical information reading device  1 A can be used in various orientations, but the up-down direction of the optical information reading device  1 A is specified for convenience of the description. 
     A display part  6 A is provided in an upper portion of the housing  2 A. The display part  6 A is configured similarly to the display part  6  of the stationary optical information reading device  1 . A lower portion of the housing  2 A is a grip part  2 B to be gripped by a user during the operation. The grip part  2 B is a portion that can be held by a general adult with one hand, and shape and size thereof can be freely set. The optical information reading device  1 A can be carried and moved by holding the grip part  2 B. That is, the optical information reading device  1 A is a portable terminal device, and can also be referred to as a handy terminal, for example. 
     The housing  2 A of the handheld type also accommodates an illumination part, a camera, an aimer light irradiation part, a processor, a storage part, a ROM, a RAM, and the like (not illustrated) similarly to the stationary optical information reading device  1 . An optical axis of the illumination part, an optical axis of the camera, and an optical axis of the aimer light irradiation part are directed obliquely upward from the vicinity of an upper end of the housing  2 A. In addition, the housing  2 A of the handheld type is also provided with a buzzer (not illustrated). 
     A plurality of operation buttons  11 A and a trigger key  11 B are provided in the grip part  2 B and the vicinity thereof. The operation buttons  11 A are similar to the operation button  11  and the like of the stationary optical information reading device  1 . If the user presses the trigger key  11 B with a distal end (upper end) of the optical information reading device  1 A facing the workpiece W, aimer light is emitted from the distal end of the optical information reading device  1 A. If the user adjusts the direction of the optical information reading device  1 A while visually observing the aimer light reflected on a surface of the workpiece W to make the aimer light focus on a code to be read, reading and decoding processing of the code are automatically performed. When the reading is completed, a completion notification sound is generated from the buzzer. 
     As a use example of the handheld optical information reading device  1 A, there is an example in which the handheld optical information reading device  1 A is used for picking work in a distribution warehouse. For example, when an ordered product is shipped from the distribution warehouse, the necessary product is picked from a product shelf in the product warehouse. This picking work is performed while a user carrying an order slip describing a code collates the code of the order slip with a code attached to the product or the product shelf after moving to the product shelf. In this case, the code of the order slip and the code attached to the product or the product shelf are alternately read by the handheld optical information reading device  1 A. 
     (Configuration of Processor) 
     The following description is common to the stationary optical information reading device  1  and the handheld optical information reading device  1 A, and can also be applied to both the devices  1  and  1 A unless otherwise specified. As illustrated in  FIG. 3 , the processor  20  includes a CPU core  21 , a DSP core  22 , and an AI chip  23 . The CPU core  21 , the DSP core  22 , and the AI chip  23  are so-called system-on-a-chips (SoCs, SOCs), and are mounted on one substrate. Note that the DSP core  22  and the AI chip  23  are not necessarily SoCs. In such a case, the DSP core  22  and the AI chip  23  are not mounted on the same substrate, but such a case is also included in the scope of the present aspect. 
     The high-speed RAM  41  is connected to the CPU core  21 , the DSP core  22 , and the AI chip  23 , and all of the CPU core  21 , the DSP core  22 , and the AI chip  23  can access the RAM  41 . In addition, the ROM  40  is connected to the processor  20 , and all of the CPU core  21 , the DSP core  22 , and the AI chip  23  can access the ROM  40 . 
     The CPU core  21  is a general-purpose processor, and is a portion that executes, for example, AF control, illumination control, camera control, decoding processing on a code image, and the like. The DSP core  22  is, for example, a portion that executes various kinds of filter processing and the like on the code image. The AI chip  23  is an integrated circuit dedicated to an attempt of restoration of the code image by a neural network, and is specialized in executing a product-sum operation, necessary for processing by the neural network, at an ultra-high speed. 
     As illustrated in  FIG. 5 , an AF control part  20   a , an imaging control part  20   b , a filter processing part  20   c , a tuning execution part  20   d , a decoding processing part  20   f , an extraction part  20   g , a reduction part  20   h , an enlargement part  20   i , and an image restoration part  20   j  are configured by the processor  20 . The AF control part  20   a , the imaging control part  20   b , the filter processing part  20   c , the tuning execution part  20   d , the decoding processing part  20   f , the extraction part  20   g , the reduction part  20   h , and the enlargement part  20   i  are portions configured by arithmetic processing of the CPU core  21  or the DSP core  22 . On the other hand, the image restoration part  20   j  is a portion configured using the AI chip  23 . 
     (Configuration of AF Control Part) 
     The AF control part  20   a  is a unit that controls the AF module  5   c  illustrated in  FIG. 3 , and is configured to be capable of performing focusing of the optical system  5   b  by conventionally known contrast AF and phase difference AF. 
     (Configuration of Imaging Control Part) 
     The imaging control part  20   b  is a unit that adjusts the gain of the camera  5 , controls the amount of light of the illumination part  4 , and controls the exposure time (shutter speed) of the imaging element  5   a . Here, the gain of the camera  5  is an amplification factor (also referred to as magnification) when the brightness of an image output from the imaging element  5   a  is amplified by digital image processing. The amount of light of the illumination part  4  can be changed by separately controlling the first illumination part  4   a  and the second illumination part  4   b . The gain, and the amount of light and the exposure time of the illumination part  4  are imaging conditions of the camera  5 . 
     (Configuration of Filter Processing Part) 
     The filter processing part  20   c  is a portion that executes an image processing filter on a code image. The filter processing part  20   c  executes a noise removal filter that removes noise included in an image generated by the camera  5 , a contrast correction filter that corrects contrast, an averaging filter, and the like. The image processing filter executed by the filter processing part  20   c  is not limited to the noise removal filter, the contrast correction filter, and the averaging filter, and may include other image processing filters. 
     The filter processing part  20   c  is configured to execute the image processing filter on a code image before image restoration to be described later. In addition, the filter processing part  20   c  is configured to execute the image processing filter on a code image before enlargement or reduction to be described later. Note that the filter processing part  20   c  may be configured to execute the image processing filter on a code image obtained after image restoration, or may be configured to execute the image processing filter on an enlarged or reduced code image. 
     [Configuration of Tuning Execution Part] 
     The tuning execution part  20   d  illustrated in  FIG. 5  repeats imaging and decoding processing while changing the imaging conditions of the camera  5  and decoding conditions of the decoding processing, determines the optimum imaging conditions and decoding conditions based on the matching level indicating the ease of code reading calculated under each of the imaging conditions and decoding conditions, and executes tuning processing of setting a size of a code to be read. Specifically, the tuning execution part  20   d  is a portion that changes the imaging conditions, such as the gain of the camera  5 , the amount of light and the exposure time of the illumination part  4 , and image processing conditions in the filter processing part  20   c  and sets various conditions (tuning parameters) so as to obtain the conditions appropriate for decoding at the time of setting the optical information reading devices  1  and  1 A. The image processing conditions in the filter processing part  20   c  include a coefficient of an image processing filter (the strength of the filter) or switching of image processing filters, a combination of different types of image processing filters, and the like in a case where there are a plurality of image processing filters. Appropriate imaging conditions and image processing conditions differ depending on the influence of external light on the workpiece W during conveyance, a color and a material of a surface to which the code is attached, and the like. Accordingly, the tuning execution part  20   d  searches for more appropriate imaging conditions and image processing conditions, and sets the processing by the AF control part  20   a , the imaging control part  20   b , and the filter processing part  20   c.    
     The tuning execution part  20   d  is configured to be capable of acquiring the size of the code included in the code image generated by the camera  5 . When acquiring the size of the code, first, the tuning execution part  20   d  searches for the code based on a characteristic amount indicating a code likeness. Next, the tuning execution part  20   d  acquires a pixel per cell (PPC), a code type, a code size, and the like of the searched code. The PPC, the code type, the code size, and the like are included in code parameters or code conditions, and accordingly, the tuning execution part  20   d  is configured to be capable of acquiring the code parameters or code conditions of the searched code. 
     A two-dimensional code is configured by randomly arranging a plurality of white modules and black modules. For example, in Model  2  as a QR code, the number of modules is 21×21 to 177×177. In the case of the stationary optical information reading device  1 , the code to be read is read in advance to limit the number of modules and the PPC, and the operation is performed by limiting a size (pixel size) of the code to the number of modules×PPC. 
     When focusing on one module among the modules forming the code, a code parameter indicating how many pixels the module is formed of is the PPC. The tuning execution part  20   d  can acquire the PPC by specifying one module and then counting the number of pixels forming the one module. 
     The code type is, for example, a type of a code such as a QR code, a data matrix code, and a verification code. Since each code has a characteristic, the tuning execution part  20   d  can discriminate the code type depending on, for example, the presence or absence of a finder pattern. 
     In addition, the code size can be calculated by the PPC and the number of modules arrayed in the vertical or horizontal direction of the code. The tuning execution part  20   d  calculates the number of modules arrayed in the vertical or horizontal direction of the code, calculates the PPC, and integrates the number of modules arrayed in the vertical or horizontal direction and the PPC to acquire the code size. 
     (Configuration of Decoding Processing Part) 
     The decoding processing part  20   f  is a portion that decodes data binarized into black and white. For decoding, a table indicating a comparison of relationship of encoded data can be used. Further, the decoding processing part  20   f  checks whether a decoding result is correct according to a predetermined check scheme. When an error is found in data, correct data is calculated using an error correction function. The error correction function varies depending on the code type. 
     In this embodiment, the decoding processing part  20   f  decodes a code included in a code image obtained after image restoration to be described later, but can also decode a code included in a code image before image restoration. The decoding processing part  20   f  is configured to write a decoding result obtained by decoding the code in a decoding result storage part  30   b  of the storage part  30  illustrated in  FIG. 3 . 
     (Configuration of Extraction Part) 
     The extraction part  20   g  is a portion that extracts a code candidate region in which a code is highly likely to be present from the code image generated by the camera  5 . The code candidate region can be extracted based on a characteristic amount indicating a code likeness. In this case, the characteristic amount indicating the code likeness is information for identifying the code. For example, the extraction part  20   g  can acquire a code image and search for the code based on the characteristic amount indicating the code likeness with respect to the acquired code image. Specifically, it is searched whether there is a portion having a predetermined or more characteristic amount indicating a code likeness in the acquired code image. If a portion having a characteristic amount indicating the code likeness can be searched as a result, a region including the portion is extracted as the code candidate region. The code candidate region may include a region other than the code, but includes at least a portion having a predetermined or higher possibility of being the code. Note that the code candidate region is just the region in which the code is highly likely to be present, and thus, there may be a case where the code candidate region is a region that does not include a code in the end. 
     The extraction part  20   g  can also extract the code candidate region by using position information of the aimer light emitted from the aimer light irradiation part  10  as information for identifying the code. In this case, the extraction part  20   g  identifies a portion corresponding to the mark formed by the aimer light irradiation part  10  from the code image, and extracts the identified portion as the code candidate region. That is, since the aimer light indicates the capturing range and the center of the visual field of the camera  5  as described above, the mark formed by the aimer light can be set to coincide with the center of the visual field of the camera  5  in advance. In particular, in the case of the handheld optical information reading device  1 A, the user makes the aimer light focus on the code to be read, and thus, the mark formed by the aimer light has a high probability of overlapping with the code. That is, when the extraction part  20   g  extracts a region including the center of the visual field of the camera  5  by setting the portion corresponding to the mark formed by the aimer light irradiation part  10  to coincide with the center of the visual field of the camera  5 , the region becomes a region in which the code is highly likely to be present. In this case, the portion corresponding to the mark formed by the aimer light irradiation part  10  is not necessarily set to completely coincide with the center of the visual field of the camera  5 , and may be slightly shifted in the vertical direction or the horizontal direction of the visual field. Since the code has a predetermined size, the region extracted by the extraction part  20   g  is a region having not only the center of the visual field of the camera  5  but also a predetermined size including the center of the visual field. 
     The extraction part  20   g  can also identify a center portion of the code image and extract the center portion as the code candidate region. For example, when the center of the visual field of the camera  5  is acquired in advance as information for identifying the code, a portion to be the center of the visual field of the camera  5  can be identified on the code image. In particular, in the case of the handheld optical information reading device  1 A, a center portion identified on the code image corresponds to the mark formed by the aimer light irradiation part  10 , and thus, the center portion is the region in which the code is highly likely to be present. 
     The extraction part  20   g  can be configured to receive designation of a predetermined portion by the user from the code image, and can extract the designated portion as the code candidate region. That is, when the user designates a region having an arbitrary size at an arbitrary position (coordinate) on the code image, the extraction part  20   g  receives designation of a predetermined portion from the code image based on information of the coordinate of the position and the size. The extraction part  20   g  extracts the received portion as the code candidate region. For example, in the case of the stationary optical information reading device  1 , the workpiece W conveyed by the conveying belt conveyor B is captured and the decoding processing of the code is executed as illustrated in  FIG. 1 . However, the workpiece W is not necessarily present at the central part of the conveying belt conveyor B in the width direction, and there is a case where the workpiece W is present at an end. In this case, it is possible to accurately extract a region in which the code is highly likely to be present by designating a portion corresponding to the end of the conveying belt conveyor B from the code image. In addition, there is also a case where a code is displayed in the vicinity of an end away from the central part of a large workpiece W. In this case, it is possible to accurately extract a region in which the code is highly likely to be present by designating a portion corresponding to the vicinity of the end of the workpiece W from the code image. 
     (Configuration of Storage Part) 
     Although the storage part  30  illustrated in  FIG. 3  can be configured using a readable/writable storage device such as a solid state drive (SSD), for example, each of storage parts  30   a ,  30   b ,  30   c , and  30   d  to be described below may be provided in the ROM  40  instead of the storage device. That is, the present embodiment is also applied in a form in which the image data storage part  30   a , the decoding result storage part  30   b , the parameter set storage part  30   c , and the neural network storage part  30   d  are also included in the ROM  40 . The image data storage part  30   a  stores a code image generated by the camera  5 . The decoding result storage part  30   b  is a portion that stores a decoding result of a code executed by the decoding processing part  20   f . The parameter set storage part  30   c  is a portion that stores a result of tuning performed by the tuning execution part  20   d  and various set conditions, and various conditions set by the user. The neural network storage part  30   d  is a portion that stores a structure and a parameter of a trained neural network to be described later. 
     (Image Restoration Using Neural Network) 
     The optical information reading devices  1  and  1 A have an image restoration function of restoring a code image acquired by the camera  5  using a neural network. The present embodiment is different from a conventional optical information reading device in that the optical information reading device  1  or  1 A holds in advance the structure and parameter of the neural network that has already finished learning, instead of performing machine learning by the optical information reading device  1  or  1 A, and performs image restoration using the neural network configured using the held structure and parameters. 
     As illustrated in  FIG. 6 , the neural network includes an input layer to which input data (image data in this example) is input, an output layer that outputs output data, and an intermediate layer provided between the input layer and the output layer. A plurality of the intermediate layers can be provided, for example, thereby forming the neural network having a multilayer structure. 
     (Learning of Neural Network) 
     First, a basic procedure at the time of learning of the neural network will be described based on a flowchart illustrated in  FIG. 7 . The learning of the neural network can be performed using a computer prepared for learning other than the optical information reading devices  1  and  1 A, but may be performed using a general-purpose computer other than the computer for learning. In addition, a conventionally known method may be used as a learning method of the neural network. 
     In Step SA 1  after the start, data of a defective image prepared in advance is read. The defective image is an image having a portion inappropriate for reading a code, and can be exemplified by an image as illustrated at a left side in  FIG. 8 . The inappropriate portion is, for example, a dirty portion or a colored portion. Thereafter, the processing proceeds to Step SA 2  to read data of an ideal image prepared in advance. The ideal image is an image appropriate for reading a code, and can be exemplified by an image as illustrated at a right side in  FIG. 8 . The defective image and the ideal image are paired, and a plurality of such pairs are prepared. 
     In Step SA 2 , a loss function is calculated to obtain a difference between the defective image and the ideal image. In Step SA 3 , the parameters of the neural network are updated by reflecting the difference obtained in Step SA 2 . 
     In Step SA 4 , it is determined whether a completion condition of the machine learning is satisfied. The completion condition of the machine learning can be set based on the difference obtained in Step SA 2 , and it can be determined that the completion condition of the machine learning is satisfied, for example, when the difference is equal to or less than a predetermined value. When YES is determined in Step SA 4  and the completion condition of the machine learning is satisfied, the machine learning is ended. On the other hand, when NO is determined in Step SA 4  and the machine learning completion condition is not satisfied, the processing returns to Step SA 1  to read another defective image, and then, proceeds to Step SA 2  to read another ideal image paired with the another defective image. 
     In this manner, the trained neural network can be generated in advance by causing the machine learning of the plurality of defective images and the plurality of ideal images respectively corresponding to the plurality of defective images. When the optical information reading devices  1  and  1 A hold the structure and parameter of the trained neural network, the trained neural network can be constructed in the optical information reading devices  1  and  1 A. That is, an enormous number of defective images and ideal images are input to the neural network at the time of performing the machine learning, and thus, extremely high calculation capability is required at that time. It is difficult to ensure such a high calculation capability in the optical information reading device  1  or  1 A because there is a possibility that a demand for reduction in size and weight of the device is hardly satisfied. As in this example, if the machine learning is performed outside the optical information reading device  1  or  1 A and the structure and parameter of the neural network obtained as a result are held in the optical information reading device  1  or  1 A, it is possible to restore an image by the neural network while reducing the size and weight of the optical information reading device  1  or  1 A. 
       FIG. 9  is a conceptual diagram of a convolutional neural network (CNN) configured as described above. In “convolution”, characteristics of an input image are extracted. This layer is configured by a convolution operation such as an image processing filter. A weight of the filter is called a kernel, and a characteristic amount is extracted according to the kernel. The convolution layer generally has a plurality of different kernels, and the number of maps (D) increases according to the number of kernels. A size of the kernel can be set to, for example, 3×3, 5×5, or the like. 
     In “pooling”, reduction processing is performed to gather reactions of each kernel. In “Deconvolution”, an image is reconstructed from a characteristic value by a deconvolution filter. In “Unpooling”, enlargement processing is performed to sharpen a reaction value. 
     the structure and parameter of the trained neural network are stored in the neural network storage part  30   d  of the storage part  30  illustrated in  FIG. 3 . The structure of the neural network is the number (D) of the intermediate layers provided between the input layer and the output layer, the number of image processing filters, and the like. The parameters of the neural network are the parameters set in Step SA 3  of the flowchart illustrated in  FIG. 7 . 
     In addition, the neural network storage part  30   d  can store structures and parameters of a plurality of neural networks having different numbers of layers or different numbers of image processing filters. In this case, the structures and parameters of the plurality of neural networks and code conditions can be stored in association with each other in the neural network storage part  30   d . For example, a structure and parameters of a neural network for forming a first neural network are associated with a first code condition corresponding to the first neural network. Since the number of layers or the number of filters of the first neural network can be specified in advance by the first code condition, particularly a first PPC, at the time of performing the association, the association is performed so as to maintain such a relationship. Similarly, a structure and parameters of a second neural network different from the first neural network are associated with a second code condition different from the first code condition. 
     In a case where structures and parameters of the plurality of neural networks are stored in the neural network storage part  30   d , the tuning execution part  20   d  operates as follows at the time of setting the optical information reading device  1  or  1 A. That is, when setting a code condition included in a code image generated by the camera  5 , the tuning execution part  20   d  reads a structure and parameters of a neural network associated with the set code condition from the neural network storage part  30   d  and identifies the read structure and parameters as a neural network to be used during the operation. For example, when the tuning execution part  20   d  sets the first code condition by setting the code condition included in the code image, the structure and parameter of the first neural network associated with the first code condition are read from the neural network storage part  30   d . Then, the structure and parameter of the first neural network are identified as the neural network to be used during the operation of the optical information reading device  1  or  1 A. As a result, it is possible to attempt to restore the code image with the structure and parameter of the neural network optimal for the code condition, and thus, it is possible to improve the reading accuracy. 
     In learning of the neural network, it is also possible to cause machine learning of a defective image in which a pixel resolution of a module forming a code falls within a specific range and an ideal image. The pixel resolution of the module can be expressed by, for example, the number of pixels (PPC) of one module forming the code, and the machine learning of the neural network may be performed only with the defective image in which the PPC falls within the specific range and the ideal image. 
     The specific range is a range that includes a pixel resolution having a high restoration effect of a code image and excludes a pixel resolution with which the restoration effect of the code image is hardly improved, and can be set on the premise of restoration of an image including a code formed of a plurality of modules. As a result, the processing speed can be improved as a neural network structure specialized for restoration of an image including a code. 
     The specific range of the number of pixels can be set to, for example, 4 PPC or more and 6 PPC or less, but may be less than 4 PPC or more than 6 PPC. In addition, for example, when machine learning is performed with the specific range limited to 4 PPC or more and 6 PPC or less, it is possible to eliminate an extra scale variation from images used for learning and to optimize a trained neural network structure. 
     (Restoration Attempt) 
     As illustrated in  FIG. 5 , the processor  20  of each of the optical information reading devices  1  and  1 A is provided with the image restoration part  20   j  configured using the AI chip  23 . The image restoration part  20   j  reads a structure and parameters of a neural network stored in the neural network storage part  30   d  of the storage part  30 , and configures the neural network in the optical information reading device  1  or  1 A with the read structure and parameters of the neural network. The neural network configured in the optical information reading device  1  or  1 A is the same as the trained neural network that has performed learning by the procedure illustrated in the flowchart of  FIG. 7 . 
     The image restoration part  20   j  inputs a code image generated by the camera  5  to the neural network, and attempts to restore the code image according to the structure and parameter of the neural network stored in the neural network storage part  30   d . Then, the decoding processing part  20   f  executes decoding processing on the restored code image. 
     The filter processing part  20   c  is configured to execute an image processing filter on the code image before the image restoration part  20   j  inputs the code image generated by the camera  5  to the neural network. As a result, it is possible to execute appropriate image processing before attempting the restoration by the neural network. As a result, the restoration of the code image becomes more accurate. 
     The image restoration part  20   j  may attempt to restore all the code images subjected to the decoding processing by the decoding processing part  20   f , or the image restoration part  20   j  may attempt to restore only some of the code images subjected to the decoding processing by the decoding processing part  20   f . For example, the decoding processing part  20   f  executes decoding processing on the code image before attempting the restoration, and determines whether decoding has succeeded. The success in the decoding means that the code image does not need to be restored, and the resultant is directly output. On the other hand, when the decoding fails, the image restoration part  20   j  attempts to restore the code image, and the decoding processing part  20   f  executes decoding processing on the restored code image. 
     (Input of Partial Image) 
     An image that is input to the neural network by the image restoration part  20   j  may be the entire code image generated by the camera  5 . However, the amount of calculation by the neural network increases and a calculation load of the processor  20  becomes heavy as a size of the input image increases, so that there is a possibility that the processing speed decreases. Specifically, in a fully convolutional network (FCN) type neural network as illustrated in  FIG. 9 , when structures are assumed to be equal, the amount of calculation is an amount proportional to an input image size, and the input image size is proportional to the square of a code size, and thus, the amount of calculation is also proportional to the square of the code size. 
     On the other hand, it may be said that there is no case where a code is present in the entire code image generated by the camera  5 . A code is present only in a partial region of a code image during the normal operation, and the reading accuracy can be improved if restoration using the neural network can be performed only in the region. 
     Therefore, the image input to the neural network by the image restoration part  20   j  can be a part of the code image generated by the camera  5 , that is, a partial image including a code. Specifically, the image restoration part  20   j  cuts out a partial image corresponding to the code candidate region extracted by the extraction part  20   g  from the code image generated by the camera  5 . The image restoration part  20   j  inputs the cut partial image to the neural network, and attempts to restore the partial image according to the structure and parameter stored in the neural network storage part  30   d . Then, the decoding processing part  20   f  executes decoding processing on the restored partial image. 
     Since there is almost no case where a code is present in the entire code image as described above, a size of the partial image corresponding to the code candidate region is smaller than a size of the code image. As a result, the size of the image input to the neural network is reduced, and thus, the calculation load of the processor  20  is reduced so that the increase in the processing speed is realized. In addition, the partial image corresponds to the region in which the code is highly likely to be present, the partial image can be an image including information necessary for reading, that is, the entire code. Since the image including the entire code is input to the neural network, a decrease of the reading accuracy is suppressed. 
     The image restoration part  20   j  can determine an input size of the partial image to the neural network based on the code size acquired by the tuning execution part  20   d . As described above, the tuning execution part  20   d  can acquire the code size. The image restoration part  20   j  increases the input size of the partial image input to the neural network by a predetermined amount from the code size acquired by the tuning execution part  20   d.    
     That is, the calculation load can be reduced by inputting the partial image to the neural network. However, for example, in a case where a code is rotating or a position of the code is not accurately detectable, there is a possibility that a part of the code in the partial image is missing and decoding processing fails. Since the input size to the neural network is not the same as the code size acquired by the tuning execution part  20   d  and is larger than the code size by the predetermined amount in the present embodiment, it is possible to suppress the missing of a part of the code in the partial image. Note that the input size to the neural network can have an upper limit by making the code size larger than the code size by the predetermined amount, and accordingly, the calculation load can be made not to be heavy. Regarding the “predetermined amount”, for example, a horizontal (or vertical) length of the partial image input to the neural network may be set to 1.5 times or more, 2.0 times or more, or 3.0 times or more of a horizontal (or vertical) length of the code acquired by tuning execution part  20   d.    
     When the image restoration part  20   j  determines the input size of the partial image to be input to the neural network, the input size can be determined based on the number of pixels of one module forming the code acquired by the tuning execution part  20   d  and the number of modules arranged in the vertical or horizontal direction of the code. 
     The tuning execution part  20   d  can set the code conditions as described above. The image restoration part  20   j  can also set the size of the code image to be input to the neural network based on a code condition set by the tuning execution part  20   d . For example, if the image restoration part  20   j  acquires the code size among the code conditions set by the tuning execution part  20   d , a partial image having a size larger than the acquired code size by a predetermined amount is input to the neural network. The size of the partial image input to the neural network increases when the code size is large, and the size of the partial image input to the neural network decreases when the code size is small. That is, the size of the partial image input to the neural network can be changed according to the code condition. 
     (Reduction and Enlargement Function) 
     Here, it is necessary to extract a characteristic amount within a range covering a certain number of modules in order to sufficiently capture characteristics of a code in the convolutional neural network as illustrated in  FIG. 9  and restore the code to an image appropriate for decoding. For example, assuming that one characteristic value obtained from a neural network is a value extracted from a range of 6×6 modules, it is necessary to design the neural network to calculate an aggregated characteristic value from a range of 120×120 pixels in a case of an image captured with one module having 20 pixels. That is, the hierarchy of the neural network needs to be deeper as a pixel range that is desirably covered becomes wider. For example, when the characteristic value is to be aggregated from the above-described range of 120×120 pixels, the convolution layer applied six times is required. 
     Meanwhile, the code is configured by randomly arranging white modules and black modules, a relationship between pixel values in a wide range is sparse, and the restoration effect is hardly improved even if the pixel range to be covered is expanded to a certain extent or more. Such a characteristic is referred to as a narrow range characteristic in the present specification. 
     In addition, the arrangement of a determined module pattern such as a finder pattern included in the code or a quadrangular shape of the entire code can be a wide range characteristic. However, it is possible to sufficiently perform the restoration only using the narrow range characteristic without using the wide range characteristic as long as modules and a background are roughly separated. Note that the wide range characteristic can be defined as a characteristic having a shape determined over a wide range. 
     Therefore, an image in which the PPC of the code is in the specific range can be used at the time of learning of the neural network illustrated in  FIG. 7 . As a result, the processing speed can be improved as the neural network structure specialized for the restoration of the image including the code, but there is a concern that the restoration effect on a code image in which the PPC is out of the specific range deteriorates. Note that the image in which the PPC of the code is out of the specific range may be used at the time of learning of the neural network. 
     The optical information reading devices  1  and  1 A of the present embodiment have a function of reducing and enlarging a code image in order to make the PPC of the code image fall within the specific range. As illustrated in  FIG. 5 , the processor  20  includes the reduction part  20   h  and the enlargement part  20   i . The reduction part  20   h  is a portion that generates a code image reduced such that the pixel resolution of the module forming the code in the code image generated by the camera  5  falls within the above-described specific range. In addition, the enlargement part  20   i  is a portion that generates a code image enlarged such that the pixel resolution of the module forming the code in the code image generated by the camera  5  falls within the above-described specific range. 
     For example, the reduction part  20   h  and the enlargement part  20   i  determine whether the PPC of the code in the code image generated by the camera  5  is out of the specific range (4 PPC or more and 6 PPC or less), do not execute the reduction or enlargement when the PPC of the code falls within the specific range, and execute the reduction or enlargement when the PPC of the code is out of the specific range. When the reduction or enlargement is executed, the PPC of the code in the partial image input to the neural network by the image restoration part  20   j  falls within the specific range. 
     The image restoration part  20   j  inputs the code image, enlarged or reduced to fall within the specific range, to the neural network configured using the structure and parameter stored in the neural network storage part  30   d , thereby attempting to restore the code image according to the structure and parameter. Then, the decoding processing part  20   f  executes decoding processing on the restored code image. 
     The extraction part  20   g  may be configured to search for a code with respect to a code image enlarged by the enlargement part  20   i  or a code image reduced by the reduction part  20   h , and extract a region including the searched code as the code candidate region in which the code is highly likely to be present. In this case, the image restoration part  20   j  inputs a partial image corresponding to the code candidate region extracted by the extraction part  20   g  to the neural network configured using the structure and parameter stored in the neural network storage part  30   d , thereby attempting to restore the code image according to the structure and parameter. 
     The tuning execution part  20   d  can generate a plurality of code images (enlarged images) with different enlargement ratios and generate a plurality of code images (reduced images) with different reduction ratios at the time of setting the optical information reading device  1  or  1 A. The tuning execution part  20   d  inputs the plurality of generated code images (enlarged images or reduced images) to the neural network to attempt to restore each of the code images, and executes decoding processing on each of the restored code images to obtain a reading margin indicating the ease of code reading. The tuning execution part  20   d  identifies an enlargement ratio or a reduction ratio of a code image with the obtained reading margin higher than a predetermined value as the enlargement ratio or reduction ratio to be used during the operation. When the tuning execution part  20   d  has identified the enlargement ratio or reduction ratio, the reduction part  20   h  and the enlargement part  20   i  enlarge or reduce a code image at the enlargement ratio or reduction ratio identified by the tuning execution part  20   d  during the operation of the optical information reading devices  1  and  1 A. 
     That is, for example, in a case where the specific range has a certain degree of extent, it is conceivable that the reading margin changes if the enlargement ratio or reduction ratio is changed even within the specific range. Since the enlargement ratio or reduction ratio of the code image during the operation can be identified such that the reading margin obtained by the tuning execution part  20   d  becomes higher than the predetermined value, the processing speed and the reading accuracy are improved. 
     After obtaining the reading margins of the respective code images, the tuning execution part  20   d  can identify an enlargement ratio or a reduction ratio of a code image having the highest reading margin among the plurality of obtained reading margins as the enlargement ratio or reduction ratio to be used during the operation. As a result, the processing speed and the reading accuracy can be further improved. 
     In addition, types of parameter sets can also be increased by using the fact that a code image can be reduced and enlarged by the reduction part  20   h  and the enlargement part  20   i . A plurality of parameter sets having different reduction ratios by the reduction part  20   h  and a plurality of parameter sets having different enlargement ratios by the enlargement part  20   i  are generated, and these parameter sets can be stored in the parameter set storage part  30   c  of the storage part  30 . For example, in a case where a plurality of reduction ratios, such as ½, ¼, and ⅛ can be set by the reduction part  20   h , a parameter set having the reduction ratio of ½, a parameter set having the reduction ratio of ¼, and a parameter set having the reduction ratio of ⅛ can be stored in the parameter set storage part  30   c . In addition, in a case where a plurality of enlargement ratios, such as twice, four times, and eight times, can be set by the enlargement part  20   i , a parameter set having the enlargement ratio of twice, a parameter set having the enlargement ratio of four times, and a parameter set having the enlargement ratio of eight times can be stored in the parameter set storage part  30   c . Then, an arbitrary parameter set can be applied from among the plurality of parameter sets stored in the parameter set storage part  30   c.    
     (Image Restoration Filter) 
     The image restoration part  20   j  may be a portion that executes an image restoration filter attempting to restore a code image using a neural network. The image restoration filter is a filter that attempts to restore the code image according to a structure and parameters stored in the neural network storage part  30   d  by inputting the code image to the neural network including the structure and parameter stored in the neural network storage part  30   d , and exhibits the same function as the above-described image restoration. 
     In the case of enabling the image restoration filter to be executed, a setting part  20   e  (illustrated in  FIG. 5 ) for setting the image restoration filter can be provided. The setting part  20   e  is configured to be capable of receiving the setting of the image restoration filter performed by the user. For example, at the time of setting the optical information reading device  1  or  1 A, the setting part  20   e  can be configured to generate a user interface that allows the user to select one of “application of the image restoration filter” and “non-application of the image restoration filter”, display the user interface on the display part  6 , and receive the selection by the user. Therefore, the image restoration part  20   j  applies the image restoration filter set by the setting part  20   e  to the code image to attempt the restoration of the code image. 
     The setting part  20   e  may be included in the tuning execution part  20   d , or may be configured separately from the tuning execution part  20   d . In a case where the setting part  20   e  is included in the tuning execution part  20   d , it is possible to set parameters related to the image restoration filter at the time of tuning. The parameters related to the image restoration filter can include “application of the image restoration filter” and “non-application of the image restoration filter”. “Application of the image restoration filter” means that the image restoration filter is set to be executable, and “non-application of the image restoration filter” means that the image restoration filter is not set. 
     The parameters related to the image restoration filter are also information related to the image restoration filter. In this case, a parameter set including the information related to the setting of the image restoration filter can be stored in the parameter set storage part  30   c . Since the parameters related to the image restoration filter include “application of the image restoration filter” and “non-application of the image restoration filter”, the parameter set stored in the parameter set storage part  30   c  includes a first parameter set for setting the image restoration filter to be executable and a second parameter set for not setting the image restoration filter. During the operation of the optical information reading device  1  or  1 A, one parameter set selected from the first parameter set and the second parameter set is applied. When the first parameter set is applied, the decoding processing part  20   f  executes decoding processing on a code image on which image restoration has been executed by the image restoration filter. On the other hand, when the second parameter set is applied, the decoding processing part  20   f  executes decoding processing on a code image on which image restoration has not been executed. 
     The parameter set stored in the parameter set storage part  30   c  also includes items for setting the code condition included in the code image generated by the camera  5 . In the items for setting the code condition, a PPC, a code type, a code size, and the like acquired by the tuning execution part  20   d  are set. For example, one parameter set can include the PPC, the code type, and the code size as the items for setting the code condition, the gain of the camera  5  as the imaging condition, the amount of light and the exposure time of the illumination part  4 , an image processing filter type as an item of the image processing filter applied by the filter processing part  20   c , parameters of the image processing filter, and an application item of the image restoration filter. The values and the like set by the tuning execution part  20   d  may be used directly as these items, or the user can arbitrarily change these items. 
     (Example of Procedure of Tuning Step) 
     An example of a procedure of a tuning step performed by the tuning execution part  20   d  at the time of setting the optical information reading device  1  or  1 A will be specifically described with reference to a flowchart illustrated in  FIG. 10 . In Step SB 1  after the start of the flowchart illustrated in  FIG. 10 , the tuning execution part  20   d  controls the illumination part  4  and the camera  5  to cause the camera  5  to generate a code image, and the tuning execution part  20   d  acquires the code image. At this time, the presence or absence and a type of an image processing filter executed before decoding processing, and a decoding processing parameter for applying image restoration using a neural network are set to arbitrary parameters. Next, the processing proceeds to Step SB 2 , where the tuning execution part  20   d  causes the decoding processing part  20   f  to execute the decoding processing on the acquired code image. 
     After the decoding processing, the processing proceeds to Step SB 3 , and the tuning execution part  20   d  determines whether the decoding processing in Step SB 2  has succeeded. When NO is determined in Step SB 3  and the decoding processing in Step SB 2  fails, that is, when reading of the code has failed, the processing proceeds to Step SB 4 , the decoding processing parameter is changed to another parameter, and then, the decoding processing is executed again in Step SB 2 . When the decoding processing has failed with all the decoding processing parameters, this flow is ended and a notification is given to the user. 
     On the other hand, when YES is determined in Step SB 3  and the decoding processing in Step SB 2  has succeeded, the processing proceeds to Step SB 5 , and the tuning execution part  20   d  determines code parameters (a PPC, a code type, a code size, and the like). When the tuning execution part  20   d  determines the code parameters, a structure and parameters of a neural network stored in the neural network storage part  30   d  in association with the code parameters are also determined (Step SB 6 ). In Step SB 6 , the neural network is configured using the structure and parameter read from the neural network storage part  30   d.    
     In Step SB 7 , the image restoration part  20   j  attempts to restore the code image by inputting the code image to the neural network configured in Step SB 6 , and the decoding processing part  20   f  executes the decoding processing on the restored code image. Thereafter, the processing proceeds to Step SB 8 , and the tuning execution part  20   d  evaluates a reading margin based on a result of the decoding processing in Step SB 7  and temporarily stores a result of the evaluation. 
     In Step SB 9 , it is determined whether the execution of the decoding processing has been completed with all the decoding processing parameters. When NO is determined in Step SB 9  and the execution of the decoding processing has not been completed with all the decoding processing parameters, the processing proceeds to Step SB  10 , the decoding processing parameter is changed to another parameter, and then, the processing proceeds to Step SB 7 . 
     On the other hand, when YES is determined in Step SB 9  and the execution of the decoding processing has been completed with all the decoding processing parameters, the processing proceeds to Step SB  11 . In Step SB  11 , the tuning execution part  20   d  selects a decoding processing parameter having the highest reading margin from among all the decoding processing parameters, and determines the selected decoding processing parameter as a parameter to be applied during the operation. Note that the imaging condition and the like are also set to appropriate conditions in the tuning step. 
     (Decoding Processing Procedure Before Determination of Reduction Ratio and Enlargement Ratio) 
     Next, an example of a decoding processing procedure before determination of a reduction ratio and an enlargement ratio will be specifically described with reference to a flowchart illustrated in  FIG. 11 . The processing specified in the flowchart illustrated in  FIG. 11  can be executed in Step SB 2  of the flowchart illustrated in  FIG. 10 . 
     In Step SC 1  after the start of the flowchart illustrated in  FIG. 11 , the tuning execution part  20   d  selects an arbitrary image processing filter from the plurality of image processing filters. This image processing filter is a filter to be executed by the filter processing part  20   c . Thereafter, the filter processing part  20   c  executes the image processing filter selected in Step SC 1  on a code image in Step SC 2 . 
     Next, the processing proceeds to Step SC 3  to create an image pyramid. The image pyramid includes an original code image, an image obtained by reducing the original code image to ½, an image obtained by reducing the original code image to ¼, an image obtained by reducing the original code image to ⅛, and so on. The reduction of the code image is executed by the reduction part  20   h . In addition, the image pyramid can also include an original code image, an image obtained by enlarging the original code image twice, an image obtained by enlarging the original code image four times, an image obtained by enlarging the original code image eight times, and so on. The enlargement of the code image is performed by the enlargement part  20   i . Note that one of the reduced image and the enlarged image may be omitted. 
     After the image pyramid is created, the processing proceeds to Step SC 4 , and an arbitrary code image is selected from the plurality of code images forming the image pyramid. There is also a case where the selected image includes the original code image that has not been reduced or enlarged. In Step SC 5 , the extraction part  20   g  extracts the code candidate region in which the code is highly likely to be present from the code image selected in Step SC 4 . Thereafter, the processing proceeds to Step SC 6 , and the image restoration part  20   j  inputs a partial image corresponding to the code candidate region extracted in Step SC 5  to the neural network to attempt to restore the code image. A size of the partial image input to the neural network is determined by the code condition described above. 
     After the code image is restored, the processing proceeds to Step SC 7  to execute a process of positioning a contour of the code and modules forming the code. After the positioning process, the processing proceeds to Step SC 8  to discriminate whether each of the modules forming the code is white or black. After the black and white are discriminated, the processing proceeds to Step SC 9 , and the decoding processing part  20   f  executes decoding processing on the restored code image. In the decoding processing, for example, a technique of restoring a character string from a (0,1)-matrix of a module can be adopted. 
     Thereafter, the processing proceeds to Step SC 10 , and the tuning execution part  20   d  determines whether the decoding processing in Step SC 9  has succeeded. When NO is determined in Step SC 10  and the decoding processing in Step SC 9  has failed, the processing proceeds to Step SC 11  to determine whether all the code images forming the image pyramid have been selected. When NO is determined in Step SC 11  and all the code images forming the image pyramid have not been selected, the processing proceeds to Step SC 4  to select another reduced code image or another enlarged code image forming the image pyramid, and the processing proceeds to Step SC 5 . 
     On the other hand, when YES is determined in Step SC 11  and all the code images forming the image pyramid have been selected, this flow is ended, and a condition under which decoding has succeeded is stored. 
     (Decoding Processing Procedure after Determination of Reduction Ratio and Enlargement Ratio) 
     Next, an example of a decoding processing procedure after determination of a reduction ratio and an enlargement ratio will be specifically described with reference to a flowchart illustrated in  FIG. 12 . The processing specified in the flowchart illustrated in  FIG. 12  can be executed in Step SB 7  of the flowchart illustrated in  FIG. 10  and during the operation of the optical information reading device  1  or  1 A. 
     In Step SD 1  after the start of the flowchart illustrated in  FIG. 12 , the filter processing part  20   c  executes the image processing filter selected in Step SC 1  of the flowchart illustrated in  FIG. 11  on a code image. At this time, when the filter processing part  20   c  executes the averaging filter on the code image as illustrated at upper side in  FIG. 13 , an image obtained after execution of the image processing filter as illustrated at a lower side in  FIG. 13  is obtained. 
     Thereafter, the processing proceeds to Step SD 2  to execute reduction or enlargement processing on the code image as necessary. Specifically, the reduction or enlargement is not executed when the PPC of the code in the code image obtained after execution of the image processing filter falls within the specific range, and the reduction or enlargement is executed when the PPC is out of the specific range such that the PPC falls within the specific range. An example of a code image obtained after the reduction processing is illustrated at an upper side in  FIG. 14 . 
     Next, in Step SD 3 , the extraction part  20   g  extracts the code candidate region in which the code is highly likely to be present from the code image reduced or enlarged in Step SD 2 . An example of a code candidate region extraction image is illustrated at a lower side in  FIG. 14 . Note that, when the original code image is not reduced or enlarged in Step SD 2 , the extraction processing is executed on the original code image in Step SD 3 . 
     Thereafter, the processing proceeds to Step SD 4 , and the image restoration part  20   j  inputs a partial image corresponding to the code candidate region extracted in Step SD 3  to the neural network to attempt to restore the code image.  FIG. 15  illustrates examples of the code image before restoration and the restored code image. After the code image is restored, the flow is ended after passing through Steps SD 5  to SD 7 . Steps SD 5  to SD 7  are the same as Steps SC 7  to SC 9  in the flowchart illustrated in  FIG. 11 . 
     Functions and Effects of Embodiment 
     According to this embodiment, it is attempted to restore a code image when the code image generated by the camera  5  is input to the neural network during the operation of the optical information reading device  1  or  1 A as described above. Thus, it is possible to obtain a code image obtained after the restoration attempt which has been restored so as to be an image appropriate for code reading. Since the decoding processing is performed on the code image obtained after the restoration attempt, the reading accuracy is improved. 
     Since the neural network used for the restoration is configured using the structure and parameter obtained by performing the machine learning of the plurality of defective images and the plurality of ideal images in advance, the optical information reading device  1  or  1 A only needs to perform inference processing by the neural network without performing learning processing, thereby reducing the calculation load of the processor  20 . As a result, the size and weight of the handheld optical information reading device  1 A can be reduced, and the processing speed of the stationary optical information reading device  1  can be increased. 
     In addition, when the code candidate region is extracted from the code image during the operation of the optical information reading device  1  or  1 A, a partial image corresponding to the code candidate region is input to the neural network to attempt restoration of the partial image. As a result, the size of the image input to the neural network is reduced, and thus, the calculation load of the processor  20  is reduced so that the increase in the processing speed is realized. In addition, the partial image corresponds to the region in which the code is highly likely to be present, the partial image can be an image including information necessary for reading, that is, the entire code. Since the image including the entire code is input to the neural network, a decrease of the reading accuracy is suppressed. 
     Further, the machine learning of the defective image in which the pixel resolution of the module forming the code falls within the specific range and the ideal image is performed at the time of generating the structure and parameter of the neural network. Thus, the processing speed can be improved as the neural network structure specialized for the restoration of the image including the code. When the pixel resolution of the module forming the code in the code image is out of the specific range, the code image is enlarged or reduced so as to fall within the specific range and then is input to the neural network. Thus, it is possible to restore the image including the code having a wide range of pixel resolution. 
     OTHER EMBODIMENTS 
       FIG. 16  is a diagram illustrating an example of a procedure of processing during the operation of the optical information reading device  1  according to another embodiment. In addition to the image restoration part  20   j , a pre-processing part  200 , a post-processing part  201 , a first decoding processing part  202 , and a second decoding processing part  203  are configured by the processor  20  in this embodiment. The pre-processing part  200  is a portion that executes a noise removal filter, a contrast correction filter, an averaging filter, and the like on a code image generated by the camera  5 , which is similar to the filter processing part  20   c.    
     The first decoding processing part  202  is a portion that executes decoding processing on the code image generated by the camera  5 , and the decoding processing executed by the first decoding processing part  202  is also referred to as first decoding processing. In a case where the processor  20  has a plurality of cores (N cores), the first decoding processing part  202  is constituted by Core 0 to Core i. The first decoding processing part  202  may include one core. 
     In addition, the second decoding processing part  203  is a portion that executes decoding processing on a restored image generated by the image restoration part  20   j , and the decoding processing executed by the second decoding processing part  203  is also referred to as second decoding processing. In the case where the processor  20  has N cores, the second decoding processing part  203  is constituted by Core i+1 to Core N−1. The second decoding processing part  203  may include one core. 
     As also illustrated in  FIG. 17 , in the case where the first decoding processing part  202  is constituted by Core 0 to Core i, each of Core 0 to Core i executes positioning processing of a contour of a code and modules forming the code after extracting a code candidate region in which the code is highly likely to be present from the code image generated by the camera  5 , and then, discriminates whether each of the modules forming the code is white or black, and executes decoding processing. A result of the processing is output to the post-processing part  201 . 
     On the other hand, in the case where the second decoding processing part  203  is constituted by Core i+1 to Core N−1 as illustrated in  FIG. 17 , each of Core i+1 to Core N−1 extracts a code candidate region in which a code is highly likely to be present from the code image as a code region for restoration, and sends a trigger signal to the image restoration part  20   j  so as to execute inference processing. Although  FIG. 17  illustrates that one task is executed by two cores, but one task may be executed by one or more arbitrary cores. 
     Specifically, when Core N−2 and Core N−1 forming the second decoding processing part  203  extract a code candidate region for restoration, a trigger signal (Trigger  1 ) is output to the image restoration part  20   j  to cause the image restoration part  20   j  to execute inference processing. When receiving the trigger signal (Trigger  1 ) sent from Core N−2 and Core N−1, the image restoration part  20   j  inputs a partial image corresponding to the code candidate region for restoration extracted by Core N−2 and Core N−1 to the neural network, and executes the inference processing of generating a restored image in which the partial image has been restored (Image Restoration  1 ). The restored image generated in Image Restoration  1  is sent to Core N−2 and Core N−1. Core N−2 and Core N−1 determine a grid position indicating each cell position of the code based on the restored image generated in Image Restoration  1 , and execute decoding processing of the restored image based on the determined grid position. 
     On the other hand, when Core i+1 and Core i+2 forming the second decoding processing part  203  extract a code candidate region for restoration, a trigger signal (Trigger  2 ) is output to the image restoration part  20   j  to cause the image restoration part  20   j  to execute inference processing. When receiving the trigger signal (Trigger  2 ) sent from Core i+1 and Core i+2, the image restoration part  20   j  inputs a partial image corresponding to the code candidate region for restoration extracted by Core i+1 and Core i+2 to the neural network, and executes the inference processing of generating a restored image in which the partial image has been restored (Image Restoration  2 ). The restored image generated in Image Restoration  2  is sent to Core i+1 and Core i+2. Core i+1 and Core i+2 determine a grid position indicating each cell position of the code based on the restored image generated in Image Restoration  2 , and execute decoding processing of the restored image based on the determined grid position. 
     Hereinafter, similarly, Image Restoration  3  is executed by a trigger signal (Trigger  3 ) sent from Core N−2 and Core N−1, Image Restoration  4  is executed by a trigger signal (Trigger  4 ) sent from Core i+1 and Core i+2, Image Restoration  5  is executed by a trigger signal (Trigger  5 ) sent from Core N−2 and Core N−1, Image Restoration  6  is executed by a trigger signal (Trigger  6 ) sent from Core i+1 and Core i+2, and Image Restoration  7  is executed by a trigger signal (Trigger  7 ) sent from Core N−2 and Core N−1. 
     As illustrated in this time chart, the inference processing by the image restoration part  20   j  and the first decoding processing by the first decoding processing part  202  are executed in parallel. For example, the inference processing by the image restoration part  20   j  is executed once or a plurality of times while the first decoding processing part  202  continuously performs the code region extraction, the grid position determination, and the decoding processing. In addition, the second decoding processing part  203  executes the extraction of the code region for restoration, the output of the trigger signal, the grid position determination, and the second decoding processing while the first decoding processing part  202  continuously performs the code region extraction, the grid position determination, and the decoding processing. Since the image restoration part  20   j  only needs to be specialized in the restoration of the partial image corresponding to the code candidate region for restoration in this manner, the speed of the inference processing can be increased. 
     At least a part of a period during which the second decoding processing part executes the second decoding processing has a pause period during which the inference processing by the image restoration part  20   j  is not executed. That is, the second decoding processing part  203  starts the second decoding processing after the end of Image Restoration  1  of the image restoration part  20   j  as illustrated in  FIG. 17 , but a predetermined period is provided until the image restoration part  20   j  starts the next Image Restoration  2 , and this predetermined period is the pause period during which the image restoration part  20   j  does not perform the image restoration. This pause period is a period during which the image restoration part  20   j  does not perform the inference processing, and it is possible to reduce a load on the image restoration part  20   j  and suppress heat generation of the AI chip  23  by providing the pause period. Note that a processing time of the grid position determination may be long or short depending on a restored image to be processed. Although  FIG. 17  illustrates an example in which the processing of each core is alternately executed, the processing of each core does not need to be alternately executed depending on the processing time of the grid position determination. That is, the trigger issuance and the grid position determination may be executed in order from a core that is available for processing. 
     As described above, the setting part  20   e  is configured such that the user can select one of “application of the image restoration filter” and “non-application of the image restoration filter”. Applying the image restoration filter means performing the image restoration. In addition, not applying the image restoration filter means not performing the image restoration. Thus, the setting part  20   e  also corresponds to a portion that sets whether the second decoding processing part  203  executes the second decoding processing. Since this setting is executed by the user, the setting part  20   e  is configured to be capable of receiving the user&#39;s operation. A setting form is not limited to the application and non-application of the image restoration filter, and for example, setting forms such as application and non-application of inference processing (restoration processing) and application and non-application of processing by AI may be used. Examples of the user&#39;s operation include an operation on a button or the like displayed on a user interface screen. 
     The optical information reading device  1  is operated after performing tuning processing of determining, in advance, the imaging conditions such as the exposure time and the gain, and settings such as the image processing filter. For example, in a case where a workpiece W is a label, a code is clearly printed, and thus, a high reading rate can be realized if an appropriate condition is set by the tuning processing. However, regarding a workpiece W made of metal, resin, or the like, there may be a case where reading becomes difficult due to a change in a code image due to weak ambient light or the like, or it is difficult to perform reading with ultra-low contrast due to an optical design and an algorithm design in the first place even if an optimum condition during the tuning processing is set. 
     When an image restoration algorithm executed by the image restoration part  20   j  of this example is performed in parallel with the case of performing the decoding processing without performing the image restoration, it is possible to improve the reading performance regarding the workpiece W made of metal, resin, or the like while maintaining the conventional reading performance and enhance the reading stability. In addition, the image restoration algorithm can be applied to a workpiece W that is not readable by the conventional optical design and algorithm. 
     As a specific example, in a step of reading a code printed on a seal attached to a box in a certain factory, the stable operation is possible even with conventional reading performance in a case where there is no restriction on an installation condition of the optical information reading device  1  so that the optimum installation is possible. Thus, it is possible to prioritize tact without applying the image restoration filter. 
     In addition, there is a case where there is a step of reading a code clearly printed on metal in a certain factory, and the optimum condition is determined in tuning processing at the time of setting the reading, but the reading becomes unstable due to a scratch on a metal surface, a variation in reading position and angle, a change in brightness of a surrounding environment, and the like during the actual operation. In such a case, when the image restoration filter is applied to improve the image quality, the resistance against the above variations in the conditions increases so that the reading performance is improved. 
     In addition, reading with the conventional algorithm is impossible for some workpieces, but there is a case where reading becomes possible by applying the image restoration filter in such a case. For example, even in a case where a code is significantly scratched or contrast is not clear, it is possible to restore the contrast or the scratch by applying the image restoration filter and perform reading. 
     Since the second decoding processing executed in the case where the image restoration filter is applied executes the decoding processing on a restored image, the time required for the processing is often longer than that of the first decoding processing in which the decoding processing of a normal code image is executed. Therefore, the first decoding processing part  202  can execute the first decoding processing in the time shorter than the time taken for the second decoding processing by the second decoding processing part  203 . This is used as the premise in this example, and the setting part  20   e  can change a decoding timeout time which is a time limit of decoding processing. 
     Specifically, the setting part  20   e  is configured to be capable of setting a decoding timeout time longer than the time required for executing the second decoding processing when it is set to execute the second decoding processing, and is configured to be capable of setting a decoding timeout time shorter than the time required for executing the second decoding processing when it is set not to execute the second decoding processing. As a result, when the second decoding processing is executed during the operation, it is possible to set the decoding timeout time longer than the time required for executing the general second decoding processing, and thus, the decoding processing for the restored image can be reliably executed. On the other hand, when it is set not to execute the second decoding processing, in general, only the first decoding processing, capable of performing the decoding processing in a shorter time than the second decoding processing, is executed, and thus, the short decoding timeout time corresponding to the first decoding processing can be set. Since the decoding timeout time is changed in this manner, it is possible to set the decoding timeout time corresponding to each of the first decoding processing and the second decoding processing. 
     Although the first decoding processing part  202  and the second decoding processing part  203  are separated in  FIG. 17 , the first decoding processing part  202  and the second decoding processing part  203  may be collectively configured as a decoding processing part  210  as illustrated in  FIG. 18 . The decoding processing part  210  executes the second decoding processing on a restored image in parallel with the first decoding processing on a code image generated by the camera  5 . In this manner, portions for executing the decoding processing can be arbitrarily divided on hardware or can also be integrated. Hereinafter, an example in which the portions for executing the decoding processing are integrated into one portion will be described, but the present aspect is not limited thereto, and can be similarly applied to a case where the portions are divided into a plurality of portions. 
     The decoding processing part  210  is configured to allocate processing resources to be used for the second decoding processing to the first decoding processing in the case where it is set by the setting part  20   e  not to execute the second decoding processing, and to speed up the first decoding processing as compared with the case where it is set to execute the second decoding processing. The processing resources are, for example, a use area of a memory, a core forming a multi-core CPU, and the like. Specifically, in the case where it is set not to execute the second decoding processing, the number of cores responsible for the first decoding processing is increased as compared with the case where it is set to execute the second decoding processing. In addition, in a case where it is set that the second decoding processing is not executed, the area of the memory used in the first decoding processing is enlarged as compared with a case where it is set that the second decoding processing is executed. Increasing the number of cores and expanding the area of the memory may be used in combination or only any one thereof may be performed. As a result, the performance of the multi-core CPU can be maximized to speed up the first decoding processing. 
     The decoding processing part  210  extracts a code candidate region in which a code is highly likely to be present from the code image prior to image restoration. That is, if an image to be input to a neural network is large at the time of performing the image restoration using the neural network, there is a problem that the calculation time becomes long. In addition, the number of decoding attempts is also desirably reduced as much as possible from the viewpoint of speeding up the processing. On the other hand, in this example, a search technique based on a heat map, instead of line search, is adopted in order to reliably extract the code candidate region even if it takes some time. For example, the decoding processing part  210  quantifies a characteristic amount of the code, generates a heat map in which the magnitude of the characteristic amount is assigned to each pixel value, and extracts the code candidate region in which the code is highly likely to be present on the heat map. As a specific example, there is a method of acquiring a characteristic portion (for example, a finder pattern or the like) of a two-dimensional code in a region that is relatively hot (has a large characteristic amount) in a heat map. In a case where a plurality of characteristic portions are acquired, the characteristic portions can be extracted according to priorities and stored in the RAM  41 , the storage part  30 , or the like. 
     After the decoding processing part  210  extracts the code candidate region, a partial image corresponding to the extracted code candidate region is output to the image restoration part  20   j . The image restoration part  20   j  inputs the partial image corresponding to the code candidate region extracted by the decoding processing part  210  to the neural network and executes inference processing of generating a restored image obtained by restoring the partial image. As a result, the calculation time can be shortened. 
     Further, the decoding processing part  210  may be configured to extract a code candidate region having a size capable of including a code to be read set by the tuning processing described above and having a high possibility that the code is present in a code image, input the extracted image to the neural network after reducing or enlarging the extracted image to a predetermined size, and decode a restored image restored by the neural network. Since the extracted image is enlarged or reduced to the image having the predetermined size and then input to the neural network, the PPC of the code image input to the neural network can be kept within a predetermined range, and the image restoration effect by the neural network can be stably achieved. In addition, it is conceivable that there are various sizes of codes to be read, but the size of the code to be finally input to the neural network can be fixed, and thus, the balance between high-speed processing and the ease of decoding can be maintained at a certain level or more. 
     Hereinafter, a flowchart of the first decoding processing and the second decoding processing will be described in detail with reference to  FIG. 19 . In Step SE 1  after the start, the processor  20  causes the camera  5  to generate a code image and acquires the code image. The code image acquired in Step SE 1  is input to the decoding processing part  210 . In Step SE 2 , the first decoding processing is executed without performing image restoration on the code image acquired in Step SE 1 . When the first decoding processing has succeeded, the processing proceeds to Step SE 4  to execute termination processing, that is, a process of outputting a result of the decoding. If the first decoding processing fails in Step SE 2 , the processing returns to Step SE 2  to execute the first decoding processing again. When a predetermined decoding timeout time has elapsed, the first decoding processing for the code image is stopped. 
     In a route from Step SE 1  to Step SE 5 , the decoding processing part  210  extracts a code region for restoration from the code image. Specifically, a code candidate region having a size that can include a code to be read set by the tuning processing and having a high possibility that the code is present in the code image is extracted. At this time, when a plurality of code regions for restoration are extracted, the code regions for restoration are temporarily stored as candidate regions R 1 , R 2 , and so on. An example of the extracted code region for restoration is illustrated in  FIG. 20 . Thereafter, the processing proceeds to Step SE 6 , and a value of k is set to one. 
     In Step SE 7 , resizing processing is executed on a partial image corresponding to a candidate region Rk. The resizing processing is processing of reducing or enlarging the partial image corresponding to the code region for restoration extracted in Step SE 5  so as to have a predetermined size. Through this resizing processing, a size of an image to be input to the neural network, which will be described later, can be set to the predetermined size in advance. In the example illustrated in  FIG. 20 , a case where the size of the partial image input to the neural network is 256 pixels×256 pixels is illustrated, but the size of the partial image is not limited thereto, and can be resized to an arbitrary size in consideration of the processing speed and the like. 
     In Step SE 8 , it is determined whether the black-and-white inversion setting is “both”. That is, the image restoration is to perform mapping mathematically, and there is a case where it is highly difficult to realize the mapping from white to black, from black to white, from black to black, and from white to white by a single neural network. Therefore, black-and-white inversion processing is executed based on a property so as to obtain an image in which black is printed on a white background. An image in which white is printed on a black background may also be adopted depending on a way of learning of the neural network. An example of the black-and-white inversion processing is illustrated in  FIG. 20 . The black-and-white inversion processing will be described later in detail. 
     When YES is determined in Step SE 8  and the black-and-white inversion setting is “both”, the processing proceeds to Step SE 9 , and the resized image is input to the image restoration part  20   j  to execute the image restoration. Thereafter, the processing proceeds to Step SE 10 , and the decoding processing part  210  executes the second decoding processing on the restored image. When the second decoding processing succeeds in Step SE 10 , the processing proceeds to Step SE 4  to execute the termination processing. When the second decoding processing fails in Step SE 10 , the processing proceeds to Step SE 11  to perform the black-and-white inversion processing on the resized image. Thereafter, the image obtained after the black-and-white inversion processing is input to the image restoration part  20   j  in Step SE 11  to execute the image restoration (see  FIG. 20 ). Next, the processing proceeds to Step SE 13 , and the decoding processing part  210  executes the second decoding processing on the restored image. When the second decoding processing succeeds in Step SE 13 , the processing proceeds to Step SE 4  to execute the termination processing. When the second decoding processing fails in Step SE 13 , the processing proceeds to Step SE 14 . In Step SE 14 , it is determined whether there is still a candidate region extracted in Step SE 5 , and the processing proceeds to Step SE 4  to execute the termination processing when there is no candidate region. 
     On the other hand, when NO is determined in Step SE 8  and the black-and-white inversion setting is not “both”, the processing proceeds to Step SE 15  to determine whether the black-and-white inversion setting is “OFF”. When NO is determined in Step SE 15  and the black-and-white inversion setting is not “OFF”, the processing proceeds to Step SE 16  to perform the black-and-white inversion processing on the resized image. Thereafter, the image obtained after the black-and-white inversion processing is input to the image restoration part  20   j  in Step SE 17  to execute the image restoration. Next, the processing proceeds to Step SE 18 , and the decoding processing part  210  executes the second decoding processing on the restored image. When the second decoding processing succeeds in Step SE 18 , the processing proceeds to Step SE 4  to execute the termination processing. When the second decoding processing fails in Step SE 18 , the processing proceeds to Step SE 14 . It is determined whether there is still a candidate region in Step SE 14 , and the processing proceeds to Step SE 4  to execute the termination processing when there is no candidate region. 
     When it is determined in Step SE 14  that there is still a candidate region, the processing proceeds to Step SE 19 , one is added to the value of k, and the processing proceeds to Step SE 7 . In Step SE 7 , since the value of k is increased by one from the previous flow, the resizing processing is similarly executed on a partial image corresponding to the next candidate region Rk. Step SE 8  and the subsequent steps are similarly applied as described above. That is, when the decoding has succeeded in one of the first decoding processing and the second decoding processing, the decoding result is output at the time of the success so as not to perform decoding processing on the other candidate regions, a code image obtained by capturing the next workpiece W is acquired, and the similar processing is executed. 
     The post-processing part  201  illustrated in  FIG. 20  executes a process of combining a partial image that has not been subjected to the image restoration after the resizing processing and a partial image that has been subjected to the image restoration by the image restoration part  20   j  after the resizing processing. That is, in the image restoration using the neural network, a code before restoration can be visually confirmed by a human, but a case where the image restoration is poorly performed and a case where a cell becomes rounded when the image restoration is performed may occur. Regarding such cases, if the partial image that has not been subjected to the image restoration and the partial image that has been subjected to the image restoration are superimposed at an appropriate ratio, the subsequent decoding processing is sometimes facilitated. The ratio at which the partial image that has not been subjected to the image restoration and the partial image that has been subjected to the image restoration are superimposed may be a predetermined fixed value or may be a value other than the fixed value. For example, the ratio may be determined to be optimized dynamically at the time of reading based on the stability of the restoration by the image restoration part  20   j , or by preliminary evaluation (tuning). For example, in the preliminary evaluation, the ratio may be adjustable by the user with a scale bar or the like, and adjustment may be performed while presenting a combined image to the user. 
     (Bank Switching Function) 
     The present embodiment is configured such that, for example, a parameter set in which parameters forming imaging conditions of the camera  5  and parameters forming processing conditions and the like in the decoding processing part  210  are grouped as a set can be stored in the parameter set storage part  30   c . The parameter set may be referred to as a bank. A plurality of the banks are provided and respectively store different parameters. For example, the parameter set storage part  30   c  stores a plurality of imaging conditions and code conditions including first imaging condition and code condition and second imaging condition and code condition, set by the tuning execution part  20   d , as parameter sets different from each other. 
     The optical information reading device  1  is configured to be capable of performing switching from one parameter set including the first imaging condition and code condition to another parameter set including the second imaging condition and code condition among the plurality of parameter sets stored in the parameter set storage part  35   c  and performing the opposite switching. The switching of the parameter set can be also performed by the processor  20 , by the user, or by a switching signal from an external control device such as the PLC  101 . In a case where the user switches the parameter set, for example, a parameter set switching part incorporated in a user interface may be operated. When the parameter set switching part is set to “valid”, the parameter set of the bank is used during the operation of the optical information reading device  1 . When the parameter set switching part is set to “invalid”, the parameter set of the bank is not used during the operation of the optical information reading device  1 . That is, the parameter set switching part is configured to switch from one parameter set to the other parameter set. 
     When the decoding processing part  210  of this example fails in the second decoding processing on a restored image while operating using one parameter set, the parameter set is switched to another parameter set, and then, the image restoration and the second decoding processing are executed on a code image captured under another condition. For example, when the decoding processing part  210  detects that the second decoding processing has failed, the image restoration and the second decoding processing are executed after switching to a parameter set other than the current parameter set. When it is detected that the second decoding processing has failed even with this parameter set, the image restoration and the second decoding processing are executed after switching to another parameter set that has not been used so far. There is a case where not only the imaging condition of the camera  5  but also the size of the code to be read is changed when the parameter set is switched. In this case, the size at the time of extracting the code candidate region in which the code is highly likely to be present is also changed. As a result, the reduction ratio or the enlargement ratio of the image input to the neural network also changes, and a result of the image restoration also changes. 
     (Handling of Black-and-White Inversion) 
     Next, handling of black-and-white inversion of a code will be described with reference to  FIGS. 21A to 22C .  FIGS. 21A to 21C  are views for describing a case of handling black-and-white inversion of a code using two neural networks, that is, a neural network trained with a code printed in black on a white background and a neural network trained with a code printed in white on a black background.  FIG. 21A  illustrates a scheme in which a code image (leftmost image) to each of the neural network trained with the code printed in black on the white background and the neural network trained with the code printed in white on the black background to output decoding results from the respective neural network, and this scheme is referred to as a parallel execution scheme. Since the code image is an image obtained by capturing a code printed in black on a white background, decoding processing succeeds in a restored image obtained by the neural network trained with the code printed in black on the white background, but decoding processing fails in a restored image obtained by the neural network trained with the code printed in white on the black background. 
     In  FIG. 21B , a code image (leftmost image) is first input only to the neural network trained with the code printed in white on the black background to attempt decoding processing of a restored image. Only when the decoding processing fails, the code image is input to the neural network trained with the code printed in black on the white background to generate a restored image. This scheme is a scheme of using another network after failure. 
       FIG. 21C  is a scheme in which a neural network to which a code image is input is selected based on the user&#39;s setting. A case illustrated on the left side is a case where it is set that a code image is an image obtained by capturing a code printed in black on a white background. In this case, a network selection module selects the neural network trained with the code printed in black on the white background. Then, the code image (leftmost image) is input to the neural network trained with the code printed in black on the white background. On the other hand, a case illustrated on the right side is a case where it is set that a code image is an image obtained by capturing a code printed in white on a black background. In this case, the network selection module selects the neural network trained with the code printed in white on the black background. Then, the code image (leftmost image) is input to the neural network trained with the code printed in white on the black background. 
       FIGS. 22A to 22C  are views for describing a case of handling black-and-white inversion of a code using only one neural network.  FIG. 22A  illustrates a case where black-and-white inverted image is generated by performing black-and-white inversion processing on a code image (leftmost image). An image that has not been subjected to the black-and-white inversion processing and an image that has been subjected to the black-and-white inversion processing are input to the neural network trained with the code printed in black on the white background. Since the code image is an image obtained by capturing a code printed in white on a black background, decoding processing fails in a restored image by the neural network trained with the code printed in black on the white background, but decoding processing succeeds by using the image obtained after the black-and-white inversion processing. 
     In an example illustrated on the top of  FIG. 22B , a code image (leftmost image) is an image of a code printed in white on a black background, and thus, decoding processing fails when the code image is input to the neural network trained with the code printed in black on the white background. Thereafter, when an image that has been subjected to the black-and-white inversion processing is generated and input to the neural network trained with the code printed in black on the white background, decoding processing succeeds. 
     In an example illustrated on the bottom of  FIG. 22B , a code image (leftmost image) is an image of a code printed in black on a white background, and thus, decoding processing fails when the code image is input to the neural network trained with the code printed in white on the black background. Thereafter, when an image that has been subjected to the black-and-white inversion processing is generated and input to the neural network trained with the code printed in white on the black background, decoding processing succeeds. 
       FIG. 22C  is a scheme in which whether to execute the black-and-white inversion processing is determined based on the user&#39;s setting. A case illustrated on the upper side is a case where it is set that a code image is an image obtained by capturing a code printed in black on a white background. In this case, a black-and-white inversion processing module does not execute the black-and-white inversion processing, and the code image is directly input to the neural network trained with the code printed in black on the white background. On the other hand, a case illustrated on the lower side is a case where it is set that a code image is an image obtained by capturing a code printed in white on a black background. In this case, the black-and-white inversion processing module executes the black-and-white inversion processing. Then, an image that has been subjected to the black-and-white inversion processing is input to the neural network trained with the code printed in black on the white background. 
     (Relationship Between Contrast and Matching Level) 
     The matching level is used, for example, as a score at the time of tuning or is used to manage print quality and reading performance at the time of operation. For example, the matching level is defined by a positive integer value between 0 and 100, and can be designed to have a reading rate of 100% in a case of performing a reading rate test with the matching level of 50 or more. In addition, the matching level of 0 indicates a case where reading is not possible, and the matching level of 1 is the lowest value in a case where reading is possible. 
       FIG. 23  is a graph illustrating a relationship between contrast and a matching level, in which a solid line indicates a relationship between contrast and a matching level of an image (restored image) that has been subjected to the image restoration by the image restoration part  20   j , and a broken line indicates a relationship between contrast and a matching level of an image (code image) that has not been subjected to the image restoration by the image restoration part  20   j . As is clear from this graph, the matching level of the restored image is higher than the matching level of the code image as a whole, but the matching level rapidly decreases if the image quality deteriorates by a certain level or more. 
     (Process of Calculating Matching level) 
     The matching level is set for each algorithm. In general, one algorithm is used for one code type. In the present embodiment, however, two algorithms (an algorithm with image restoration and an algorithm without image restoration) are executed for one code type by mounting the image restoration function. Between these two algorithms, a result of an algorithm in which decoding processing has succeeded earlier is output. Thus, there is a possibility that a value of the matching level becomes unstable in a case where the decoding processing succeeds alternately in the two algorithms. In addition, an image that is easily readable is obtained by executing image restoration, and thus, a matching level tends to be higher in a matching level calculation method, which is similar to the conventional method, than the existing matching level. On the other hand, in the present embodiment, a weighted sum of the matching levels of the two algorithms is taken to adjust the value of the matching level. Hereinafter, a specific example will be described with reference to a flowchart illustrated in  FIG. 24 . 
     In Step SF 1  after the start, a code image is input to the decoding processing part  210 . In Step SF 2 , the decoding processing part  210  executes the first decoding processing without restoring the image. In Step SF 3 , a matching level A (MLA) by the first decoding processing is calculated. On the other hand, in Step SF 4 , the code image is input to the image restoration part  20   j  to execute image restoration processing. Thereafter, the processing proceeds to Step SF 5 , and the decoding processing part  210  executes the second decoding processing on the restored image. In Step SF 6 , a matching level B (MLB) by the second decoding processing is calculated. Note that MLA=0 is obtained when decoding has not succeeded in Step SF 2 , and MLB=0 is obtained when decoding has not succeeded in Step SF 5 . 
     In Step SF 7 , values of MLA and MLB are adjusted using, for example, an averaging function or the like. In addition, a processing of weighting the value of MLA is performed even if the decoding has succeeded in either Step SF 2  or Step SF 5 . 
     (Example of User Interface) 
       FIG. 25  is a view illustrating an example of a user interface  300  displayed on the display part  6 . The processor  20  generates the user interface  300  and displays the user interface  300  on the display part  6 . The user interface  300  is provided with a first image display region  301  in which an image (live-view image) currently captured by the camera  5  is displayed, a second image display region  302  in which a code image is displayed, and a third display region  303  in which a restored image restored by the image restoration part  20   j  is displayed. As a result, the code image and the restored image can be presented to the user in a comparable form. In addition, the user can grasp what kind of image an image on which decoding processing is to be executed or an image obtained after the execution of the decoding processing is. 
     (Example of Imaging Element with AI Chip) 
       FIGS. 26A to 26C  are diagrams illustrating examples of using the imaging element  5   a  with an AI chip. The imaging element  5   a  of the camera  5  can be configured as illustrated in the respective diagrams.  FIG. 26A  is a diagram illustrating a case where the imaging element  5   a  is provided with an AI chip executing image restoration and packaged, in which a code image is subjected to image restoration and then output to the processor  20 .  FIG. 26B  is a diagram illustrating a case where the imaging element  5   a  is provided with an AI chip executing extraction of a code region for restoration and image restoration and packaged, in which the code region for restoration is extracted from a code image, and thereafter, a partial image corresponding to the region is subjected to image restoration and then output to the processor  20 .  FIG. 26C  is a diagram illustrating a case where the imaging element  5   a  is provided with an AI chip executing extraction of a code region for restoration and packaged, in which the code region for restoration is extracted from a code image, and thereafter, a partial image corresponding to the region is output to the processor  20 . 
     In the example illustrated in  FIG. 26A , the code image acquired by the imaging element  5   a  may be output to the processor  20 , the image restoration may be executed by the AI chip, and the restored image may be output to the processor  20 . The same applies to the examples illustrated in  FIG. 26B  and  FIG. 26C . 
     (Polarizing Filter Attachment  3 ) 
     In the present embodiment, the first illumination part  4   a  and the second illumination part  4   b  each of which is formed of the plurality of light emission diodes are provided as light sources to generate illumination light for illuminating at least a code as illustrated in  FIG. 2 . The polarizing filter attachment  3  includes a first polarizing plate  3   a  that allows passage of light of a first polarizing component out of light generated by the light emission diodes forming the second illumination part  4   b , and a second polarizing plate  3   b  that allows passage of light of a second polarizing component substantially orthogonal to the first polarizing component. The first polarizing plate  3   a  and the second polarizing plate  3   b  can be provided respectively in hatched ranges in  FIG. 2 . For example, the first polarizing plate  3   a  is arranged so as to cover the second illumination part  4   b , and the second polarizing plate  3   b  is arranged so as to cover the optical system  5   b  of the camera  5  from the light incident side. 
     Therefore, the camera  5  receives light that has passed through the first polarizing plate  3   a  and been reflected from a surface (code) of a workpiece W via the second polarizing plate  3   b . As a result, a specular reflection component of the workpiece W is removed, and the camera  5  generates a code image with lower contrast as compared with a case where the first polarizing plate  3   a  and the second polarizing plate  3   b  are not interposed. The processor  20  acquires such a low-contrast code image. The processor  20  inputs the low-contrast code image to the neural network to convert the code image into a restored image with higher contrast than the contrast before the input, and executes decoding processing on the restored image. 
     That is, since the specular reflection component of the workpiece W is removed by using the polarizing plates  3   a  and  3   b , it is possible to acquire the code image in which the influence of the specular reflection component has been reduced. For example, the polarizing plates  3   a  and  3   b  are suitable for an image having many specular reflection components as in a case where the image is obtained by capturing a metal workpiece, but there is a case where the code image becomes dark due to a decrease in the amount of light, and the contrast decreases. In such a case, the reading performance is improved by converting the code image into the restored image with the high contrast by the inference processing of the neural network. 
     The above-mentioned embodiment is merely an example in all respects, and should not be construed in a limited manner. Further, all modifications and changes belonging to the equivalent range of the claims fall within the scope of the present aspect. 
     As described above, the optical information reading device according to the present aspect can be used, for example, in the case of reading the code attached to the workpiece.