Fix macos memory leaks
This commit is contained in:
17
owocr/ocr.py
17
owocr/ocr.py
@@ -344,16 +344,17 @@ class AppleLiveText:
|
|||||||
else:
|
else:
|
||||||
raise ValueError(f'img_or_path must be a path or PIL.Image, instead got: {img_or_path}')
|
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
|
with objc.autorelease_pool():
|
||||||
req.setLocales_(['ja','en'])
|
req = VKCImageAnalyzerRequest.alloc().initWithImage_requestType_(self._preprocess(img), 1) #VKAnalysisTypeText
|
||||||
self.result = None
|
req.setLocales_(['ja','en'])
|
||||||
self.analyzer.processRequest_progressHandler_completionHandler_(req, lambda progress: None, self._process)
|
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:
|
if self.result == None:
|
||||||
return (False, 'Unknown error!')
|
return (False, 'Unknown error!')
|
||||||
return (True, self.result)
|
return (True, self.result)
|
||||||
|
|
||||||
def _process(self, analysis, error):
|
def _process(self, analysis, error):
|
||||||
res = ''
|
res = ''
|
||||||
|
|||||||
22
owocr/run.py
22
owocr/run.py
@@ -36,6 +36,7 @@ except ImportError:
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
import objc
|
||||||
from AppKit import NSData, NSImage, NSBitmapImageRep, NSDeviceRGBColorSpace, NSGraphicsContext, NSZeroPoint, NSZeroRect, NSCompositingOperationCopy
|
from AppKit import NSData, NSImage, NSBitmapImageRep, NSDeviceRGBColorSpace, NSGraphicsContext, NSZeroPoint, NSZeroRect, NSCompositingOperationCopy
|
||||||
except ImportError:
|
except ImportError:
|
||||||
pass
|
pass
|
||||||
@@ -682,16 +683,17 @@ def run(read_from=None,
|
|||||||
win32clipboard.CloseClipboard()
|
win32clipboard.CloseClipboard()
|
||||||
elif mac_clipboard_polling:
|
elif mac_clipboard_polling:
|
||||||
if not paused:
|
if not paused:
|
||||||
old_count = count
|
with objc.autorelease_pool():
|
||||||
count = pasteboard.changeCount()
|
old_count = count
|
||||||
if not just_unpaused and count != old_count and NSPasteboardTypeTIFF in pasteboard.types():
|
count = pasteboard.changeCount()
|
||||||
clipboard_text = ''
|
if not just_unpaused and count != old_count and NSPasteboardTypeTIFF in pasteboard.types():
|
||||||
if NSPasteboardTypeString in pasteboard.types():
|
clipboard_text = ''
|
||||||
clipboard_text = pasteboard.stringForType_(NSPasteboardTypeString)
|
if NSPasteboardTypeString in pasteboard.types():
|
||||||
if ignore_flag or clipboard_text != '*ocr_ignore*':
|
clipboard_text = pasteboard.stringForType_(NSPasteboardTypeString)
|
||||||
img = normalize_macos_clipboard(pasteboard.dataForType_(NSPasteboardTypeTIFF))
|
if ignore_flag or clipboard_text != '*ocr_ignore*':
|
||||||
img = Image.open(io.BytesIO(img))
|
img = normalize_macos_clipboard(pasteboard.dataForType_(NSPasteboardTypeTIFF))
|
||||||
process_clipboard = True
|
img = Image.open(io.BytesIO(img))
|
||||||
|
process_clipboard = True
|
||||||
else:
|
else:
|
||||||
if not paused:
|
if not paused:
|
||||||
old_img = img
|
old_img = img
|
||||||
|
|||||||
Reference in New Issue
Block a user