class OCRServicer(RecognizeTextServicer): MODES = { Image.PAGE: PSM.AUTO_OSD, Image.WORD: PSM.SINGLE_WORD, Image.CHARACTER: PSM.SINGLE_CHAR } def __init__(self): self.lock = RLock() self.ocr = OCR() def Recognize(self, image, context): # acquired = self.lock.acquire(blocking=False) # if acquired is False: # context.set_code(grpc.StatusCode.RESOURCE_EXHAUSTED) # context.set_details('OCR engine is busy.') # return Text() try: mode = self.MODES.get(image.mode, PSM.AUTO_OSD) text = self.ocr.extract_text(image.data, mode=mode, languages=image.languages) return Text(text=text) except Exception as exc: log.exception("Failed OCR.") self.ocr.clear_engine() context.abort(grpc.StatusCode.INTERNAL, str(exc))
class OCRServicer(RecognizeTextServicer): MODES = { Image.PAGE: PSM.AUTO_OSD, Image.WORD: PSM.SINGLE_WORD, Image.CHARACTER: PSM.SINGLE_CHAR } def __init__(self): self.lock = RLock() self.ocr = OCR() def Recognize(self, image, context): acquired = self.lock.acquire(blocking=False) if acquired is False: context.set_code(grpc.StatusCode.RESOURCE_EXHAUSTED) context.set_details('Engine is busy.') return Text() try: mode = self.MODES.get(image.mode, PSM.AUTO_OSD) text = self.ocr.extract_text(image.data, mode=mode, languages=image.languages) return Text(text=text) finally: self.lock.release()
class OCRServicer(RecognizeTextServicer): MODES = { Image.PAGE: PSM.AUTO_OSD, Image.WORD: PSM.SINGLE_WORD, Image.CHARACTER: PSM.SINGLE_CHAR } def __init__(self): self.recognizer = OCR() def Recognize(self, image, context): mode = self.MODES.get(image.mode, PSM.AUTO_OSD) text = self.recognizer.extract_text(image.data, languages=image.languages, mode=mode) return Text(text=text)
def __init__(self): self.lock = RLock() self.ocr = OCR()
def test_ocr(self): ocr = OCR() with open(os.path.join(FIXTURES, 'mfsa.png'), 'rb') as fh: data = fh.read() text = ocr.extract_text(data, ['en']) assert 'THAMES RIVER TRADITIONAL' in text, text
def test_ocr_russian(self): ocr = OCR() with open(os.path.join(FIXTURES, 'russian.png'), 'rb') as fh: data = fh.read() text = ocr.extract_text(data, ['ru']) assert 'которая извлечена из памяти' in text, text
def __init__(self): self.recognizer = OCR()