A decoding device comprising: storage configured to store image data comprising a first image captured by a first camera of an object; and a processor communicatively coupled to the storage, the processor configured to perform operations comprising: analyze the first image to derive boundaries of a first region of interest, ROI, within which at least one one-dimensional optically readable indicia, briefly barcode, is present, and to identify at least one angle of orientation of the at least one barcode; derive multiple linear read paths for multiple read operations to be attempted within the first ROI based on the at least one angle of orientation of the at least one barcode; attempt each read operation of the multiple read operations within the first ROI along a different one of the linear read paths of the multiple linear read paths to attempt to read data encoded within the at least one barcode, referred in the following as the first barcode; analyze the linear read path of each read operation of the multiple read operations to identify a first cluster of read operations of the multiple read operations that are associated with attempts to read the first barcode; analyze results of each read operation within the first cluster to identify each read operation in which data encoded within the first barcode was successfully fully read; in response to at least one read operation within the first cluster resulting in the data encoded within the first barcode being successfully fully read, provide an indication of the data encoded within the first barcode to another device; and in response to a lack of success in fully reading the data encoded within the first barcode among the read operations within the first cluster, generating an indication of the lack of success. storage configured to store image data comprising a first image captured by a first camera of an object; and a processor communicatively coupled to the storage, the processor configured to perform operations comprising: analyze the first image to derive boundaries of a first region of interest, ROI, within which at least one one-dimensional optically readable indicia, briefly barcode, is present, and to identify at least one angle of orientation of the at least one barcode; derive multiple linear read paths for multiple read operations to be attempted within the first ROI based on the at least one angle of orientation of the at least one barcode; attempt each read operation of the multiple read operations within the first ROI along a different one of the linear read paths of the multiple linear read paths to attempt to read data encoded within the at least one barcode, referred in the following as the first barcode; analyze the linear read path of each read operation of the multiple read operations to identify a first cluster of read operations of the multiple read operations that are associated with attempts to read the first barcode; analyze results of each read operation within the first cluster to identify each read operation in which data encoded within the first barcode was successfully fully read; in response to at least one read operation within the first cluster resulting in the data encoded within the first barcode being successfully fully read, provide an indication of the data encoded within the first barcode to another device; and in response to a lack of success in fully reading the data encoded within the first barcode among the read operations within the first cluster, generating an indication of the lack of success. analyze the first image to derive boundaries of a first region of interest, ROI, within which at least one one-dimensional optically readable indicia, briefly barcode, is present, and to identify at least one angle of orientation of the at least one barcode; derive multiple linear read paths for multiple read operations to be attempted within the first ROI based on the at least one angle of orientation of the at least one barcode; attempt each read operation of the multiple read operations within the first ROI along a different one of the linear read paths of the multiple linear read paths to attempt to read data encoded within the at least one barcode, referred in the following as the first barcode; analyze the linear read path of each read operation of the multiple read operations to identify a first cluster of read operations of the multiple read operations that are associated with attempts to read the first barcode; analyze results of each read operation within the first cluster to identify each read operation in which data encoded within the first barcode was successfully fully read; in response to at least one read operation within the first cluster resulting in the data encoded within the first barcode being successfully fully read, provide an indication of the data encoded within the first barcode to another device; and in response to a lack of success in fully reading the data encoded within the first barcode among the read operations within the first cluster, generating an indication of the lack of success.