1. A method of reading data represented by characters of an array of dots associated with a notional x by y grid, and located on a surface, the method including the following sequence of steps: a) capturing an image of the character(s) by means of a digital camera device; b) transmitting the so-captured image to a computer; c) identifying by means of analysis software operating in the computer to which the camera image has been using the similarity of dots to idealised representations of dots using a combination of covariance, correlation or colour data; d) processing the position information relating to the detected dots to determine the distance between dots and to identify “clusters” of adjacent dots in groups of dots close to one another; e) combining the dots in each group and associating with each such group an x by y grid with the majority of the dots in each group being positioned at points where the grid elements intersect; f) analysing the image of each group to determine for each intersection of the x by y grid whether a dot is present or not; g) for each group, starting at a given fixed position, following a predefined sequence, generating a binary number corresponding to the presence or absence of a dot at each intersection; h) comparing this binary number with binary numbers in a reference table of binary numbers referenced to information corresponding to a dot-matrix printed character for each group to determine a best match, and i) providing an output formed by assembling together the characters identified by such comparison.