An apparatus has a photodetector with a plurality of pixels arranged in at
least one dimension. The apparatus is designed to optically pick up an
image of an information code by the pixels of the photodetector. In the
apparatus, an establishing unit establishes a preliminary correcting
region on part of the image data. A preliminary correcting unit provides
a correcting variable that estimates a shift amount of the image data;
and preliminarily corrects the part of the image data within the
preliminary correcting region based on a value of the correcting
variable. A determining unit determines whether the preliminary
correction of the preliminary correcting unit is proper based on the
corrected result. When the determining unit determines that the
preliminary correction of the preliminary correcting unit is proper, a
correcting unit corrects the image data based on the value of the
correcting variable.