Attempts to crack the given OCR
        
        Uses the "darkest pixel" method to find the darkest pixel in the image. Once
        found it generates a virtual box around the rest of the pet and returns the
        x and y coordinate of the middle of the virtual box. About 98.7% accurate.
           
        Parameters:
           img (StringIO) -- The image content
           
        Returns
           tuple - The x and y coordinates of the center of the pet
           
        Raises
           failedOCR

def crackOCR(self, image):
        """ Attempts to crack the given OCR
        
        Uses the "darkest pixel" method to find the darkest pixel in the image. Once
        found it generates a virtual box around the rest of the pet and returns the
        x and y coordinate of the middle of the virtual box. About 98.7% accurate.
           
        Parameters:
           img (StringIO) -- The image content
           
        Returns
           tuple - The x and y coordinates of the center of the pet
           
        Raises
           failedOCR
        """
        try:
            im = Image.open(image)
            
            # Convert to greyscale, and find darkest pixel
            im = im.convert("L")
            lo, hi = im.getextrema()
            
            # Find the pet outline and create a rectangle around a part of it
            im = im.point(lambda p: p == lo)
            rect = im.getbbox()
            
            # Return the center point
            return (str(0.5 * (rect[0] + rect[2])), str(0.5 * (rect[1] + rect[3])))
        except Exception:
            logging.getLogger("neolib.item").exception("Failed to crack OCR")
            raise failedOCR