A method for data reading comprising the steps of: capturing (305, 405, 705), via a data reader, a first set of images of an item bearing an optical code (31, 37, 38, 41, 500); analyzing (310, 410, 715) the first set of images to determine whether the optical code is borne by a reflective surface (30, 36); establishing (315, 340) a decode setting based on whether the optical code is borne by a reflective surface; and decoding (320, 345, 425, 710) the optical code appearing in the first set of images using the decode setting; characterized in that it is found by analyzing the first set of images that the optical code is borne by a reflective surface (30, 36) by determining that both i) a first intensity value of a first percentage of pixels exceeding a first specific threshold percentage exceeds a first specific intensity value and ii) a second intensity value of a second percentage of pixels exceeding a second specific threshold percentage is below a second specific intensity value, wherein the second specific intensity value is lower than the first specific intensity value; and establishing the decode setting includes: if it is determined that the optical code is not borne by a reflective surface, configuring the decode setting to use a majority of a decoding time for decoding a 1 D optical code and a minority of the decoding time for decoding a 2D optical code, or to attempt to decode a 1D optical code prior to attempting to decode a 2D optical code, if it is determined that the optical code is borne by a reflective surface, configuring the decode setting to use a minority of a decoding time for decoding a 1D optical code and a majority of the decoding time for decoding a 2D optical code, or to attempt to decode a 2D optical code prior to attempting to decode a 1D optical code. capturing (305, 405, 705), via a data reader, a first set of images of an item bearing an optical code (31, 37, 38, 41, 500); analyzing (310, 410, 715) the first set of images to determine whether the optical code is borne by a reflective surface (30, 36); establishing (315, 340) a decode setting based on whether the optical code is borne by a reflective surface; and decoding (320, 345, 425, 710) the optical code appearing in the first set of images using the decode setting; characterized in that it is found by analyzing the first set of images that the optical code is borne by a reflective surface (30, 36) by determining that both i) a first intensity value of a first percentage of pixels exceeding a first specific threshold percentage exceeds a first specific intensity value and ii) a second intensity value of a second percentage of pixels exceeding a second specific threshold percentage is below a second specific intensity value, wherein the second specific intensity value is lower than the first specific intensity value; and establishing the decode setting includes: if it is determined that the optical code is not borne by a reflective surface, configuring the decode setting to use a majority of a decoding time for decoding a 1 D optical code and a minority of the decoding time for decoding a 2D optical code, or to attempt to decode a 1D optical code prior to attempting to decode a 2D optical code, if it is determined that the optical code is borne by a reflective surface, configuring the decode setting to use a minority of a decoding time for decoding a 1D optical code and a majority of the decoding time for decoding a 2D optical code, or to attempt to decode a 2D optical code prior to attempting to decode a 1D optical code. if it is determined that the optical code is not borne by a reflective surface, configuring the decode setting to use a majority of a decoding time for decoding a 1 D optical code and a minority of the decoding time for decoding a 2D optical code, or to attempt to decode a 1D optical code prior to attempting to decode a 2D optical code, if it is determined that the optical code is borne by a reflective surface, configuring the decode setting to use a minority of a decoding time for decoding a 1D optical code and a majority of the decoding time for decoding a 2D optical code, or to attempt to decode a 2D optical code prior to attempting to decode a 1D optical code.