1. A method of reading marking animals comprising the following steps: (a) creating a series of S video frames of a first animal in a first cage wherein the first animal comprises a tail with a marked code; (b) extracting from each of the S video frames a body location and an angular body position of the first animal, using image processing; (c) extracting from each of the S video frames the tail location and a curvature of the tail of the first animal, using image processing; (d) creating from the S video frames S modified frames, each comprising an image of the tail straightened; (e) locating, in each of the S modified frames, D character areas; (f) computing, for each of the D character areas in each of the S modified frames, S probability sets, wherein each probability set comprises a probability for each of K distinct characters; wherein each probability is a probability that the each character area contains the each K distinct character, thus computing D*S probability sets; (g) summing the probabilities in each probability set for each of the D character areas, over the S modified frames, creating D aggregate probability sets, each with K aggregate probabilities; (h) choosing, from each of D aggregate probability sets, a chosen distinct character with a highest probability in the each set; (i) combining the D chosen distinct characters to create a first candidate number; (j) verifying the first candidate number is in a set of valid numbers; (k) associating with the first animal the first candidate number, if the verification in step (j) passes.