def test_textgrounder(self): grounder = TextGrounder() characters = "0" * len(self.segments) grounder.ground(self.img, self.segments, characters) self.assertTrue(self.img.is_grounded) self.assertEqual(reconstruct_chars(self.img.ground.classes), characters)
def _test_ocr(self, train_file, test_file): # get data from images ground_truth = test_file.ground.classes test_file.remove_ground() # create OCR segmenter = ContourSegmenter(blur_y=5, blur_x=5) extractor = SimpleFeatureExtractor() classifier = KNNClassifier() ocr = OCR(segmenter, extractor, classifier) # train and test ocr.train(train_file) chars, classes, _ = ocr.ocr(test_file, show_steps=False) print(chars) print(reconstruct_chars(ground_truth)) self.assertEqual(chars, reconstruct_chars(ground_truth)) self.assertEqual(list(classes), list(ground_truth))
def test_terminal_grounder(self): terminal = TerminalGrounder() characters = "0" * len(self.segments) mock_input_gen = iter(characters) def mock_input(prompt): return next(mock_input_gen) with mock.patch('six.moves.input', mock_input): terminal.ground(self.img, self.segments) self.assertTrue(self.img.is_grounded) self.assertEqual(reconstruct_chars(self.img.ground.classes), "0" * len(self.segments))
def test_usergrounder(self): ESC_KEY = 27 ZERO_KEY = 48 keys = [ZERO_KEY] * len(self.segments) + [ESC_KEY] mock_generator = iter(keys) def mock_input(*args): return next(mock_generator) grounder = UserGrounder() with mock.patch('cv2.waitKey', mock_input): with mock.patch('cv2.imshow'): grounder.ground(self.img, self.segments) self.assertTrue(self.img.is_grounded) self.assertEqual(reconstruct_chars(self.img.ground.classes), "0" * len(self.segments))