update:

/////////////////////////////////////////////////////////////////////////


codice:
    def main(self):
        os.chdir(self.__scanDir)

        while True:
            files = filter(os.path.isfile, os.listdir(self.__scanDir))
            files = [os.path.join(self.__scanDir, f) for f in files]
            files.sort()
            
            for file in files:
                try:
                    im  = Image.open(file)
                    self.__px = im.load()
                    self.__width, self.__height = im.size[:2]
                    
                    self.__convertPixels()
                    
    # [...]
    
    def __convertPixels(self):
        self.__pixels = tuple(
            tuple(
                tuple(self.__px[i,ii][:3]) for ii in xrange(self.__height)
            ) for i in xrange(self.__width)
        )
    ## End def __convertPixels
    
    def __readTableInfo(self, left, top, right, bottom, toFind):
        info = self._simplePixelMatch(
            left = left, top = top, right = right, bottom = bottom, toFind = toFind
        )
        if isinstance(info, list) and toFind == info:
            return "".join(str(l) for l in info)
    ## End def __readTableInfo
    
    def _simplePixelMatch(self, **kwargs):
        readed = []
        for i in xrange(kwargs["left"], kwargs["right"]):
            for ii in xrange(kwargs["top"], kwargs["bottom"]):
                for k, char in enumerate(Table.chars):
                    # Check if is outer of range of pixels
                    if (ii + len(char)) > kwargs["bottom"]:
                        continue
                
                    c = 0
                    for pixels in char:
                        if pixels != self.__pixels[i][ii + c]:
                            break

                        c += 1
                        if c == len(char):
                            readed.append(k)

                            if len(readed) == kwargs["toFind"]:
                                return readed
    ## End def _hardPixelMatch
main: ciclo i file che ho in una directory (che sono solo .png), converto il formato di PIL (PixelAccess) in Tuple con __convertPixels.

Con _simplePixelMatch ciclo i pixel in verticale confrontandola con delle mie tuple che contengono i medesimi pixel, esempio:

Immagine:
+-------+--------------+
| 0,0,0 | 255,255,255 |
| 255,0,0| 0,255,0 |
+-------+--------------+

Mia Tupla:
(0,0,0,),(255,0,0)

Se trova le tuple in "orizzontale" termina il ciclo e restituisce quello che deve restituire.
Ora il punto è: posso evitare il ciclo? Ma appunto fare in qualche modo una comparazione?