1. A computer-implemented method for decoding a barcode using a computing device, comprising: determining a set of symbols capable of being contained in a barcode image; generating appearance models for the set of symbols at least in part by simulating a plurality of image distortions for each of the set of symbols; obtaining an image to be analyzed; extracting a barcode signal from a potential barcode region of the obtained image; locating limits of the barcode signal and normalizing a signal scale of the barcode signal to determine an approximate location of each digit in the potential barcode region; generating symbol scores for each of a plurality of the set of symbols for each digit location in the potential barcode region; analyzing combinations of symbols for the potential barcode region to determine at least a top combination, each symbol of a combination being selected based at least in part upon the symbol score for that symbol at a location in the potential barcode region; and selecting the top combination as a value of a barcode in the obtained image when the top combination has a valid checksum.