diff --git a/owocr/ocr.py b/owocr/ocr.py index d2641ba..fc01944 100644 --- a/owocr/ocr.py +++ b/owocr/ocr.py @@ -344,16 +344,17 @@ class AppleLiveText: else: raise ValueError(f'img_or_path must be a path or PIL.Image, instead got: {img_or_path}') - req = VKCImageAnalyzerRequest.alloc().initWithImage_requestType_(self._preprocess(img), 1) #VKAnalysisTypeText - req.setLocales_(['ja','en']) - self.result = None - self.analyzer.processRequest_progressHandler_completionHandler_(req, lambda progress: None, self._process) + with objc.autorelease_pool(): + req = VKCImageAnalyzerRequest.alloc().initWithImage_requestType_(self._preprocess(img), 1) #VKAnalysisTypeText + req.setLocales_(['ja','en']) + self.result = None + self.analyzer.processRequest_progressHandler_completionHandler_(req, lambda progress: None, self._process) - CFRunLoopRunInMode(kCFRunLoopDefaultMode, 10.0, False) + CFRunLoopRunInMode(kCFRunLoopDefaultMode, 10.0, False) - if self.result == None: - return (False, 'Unknown error!') - return (True, self.result) + if self.result == None: + return (False, 'Unknown error!') + return (True, self.result) def _process(self, analysis, error): res = '' diff --git a/owocr/run.py b/owocr/run.py index 288985d..6af03ef 100644 --- a/owocr/run.py +++ b/owocr/run.py @@ -36,6 +36,7 @@ except ImportError: pass try: + import objc from AppKit import NSData, NSImage, NSBitmapImageRep, NSDeviceRGBColorSpace, NSGraphicsContext, NSZeroPoint, NSZeroRect, NSCompositingOperationCopy except ImportError: pass @@ -682,16 +683,17 @@ def run(read_from=None, win32clipboard.CloseClipboard() elif mac_clipboard_polling: if not paused: - old_count = count - count = pasteboard.changeCount() - if not just_unpaused and count != old_count and NSPasteboardTypeTIFF in pasteboard.types(): - clipboard_text = '' - if NSPasteboardTypeString in pasteboard.types(): - clipboard_text = pasteboard.stringForType_(NSPasteboardTypeString) - if ignore_flag or clipboard_text != '*ocr_ignore*': - img = normalize_macos_clipboard(pasteboard.dataForType_(NSPasteboardTypeTIFF)) - img = Image.open(io.BytesIO(img)) - process_clipboard = True + with objc.autorelease_pool(): + old_count = count + count = pasteboard.changeCount() + if not just_unpaused and count != old_count and NSPasteboardTypeTIFF in pasteboard.types(): + clipboard_text = '' + if NSPasteboardTypeString in pasteboard.types(): + clipboard_text = pasteboard.stringForType_(NSPasteboardTypeString) + if ignore_flag or clipboard_text != '*ocr_ignore*': + img = normalize_macos_clipboard(pasteboard.dataForType_(NSPasteboardTypeTIFF)) + img = Image.open(io.BytesIO(img)) + process_clipboard = True else: if not paused: old_img = img