2012-05-29 61 views
1

是否有可能從tesseract圖像異步獲取文本? 身份證愛讓用戶取消掃描,如果它需要很多時間。異步閱讀從Tesseract圖像文本?

char* utf8Text = tesseract->GetUTF8Text(); 

鎖定屏幕直到OCR完成。

+0

塊沒有內置的方法來阻止他們,你將不得不手動寫這篇文章,或嘗試使用具有方法'cancelAllOperations'的NSOperationQueue。這個網站有一個很好的寫在他們http://eng.pulse.me/concurrent-downloads-using-nsoperationqueues/ – danielbeard

+1

請發表一個*新的*問題,以及一個新的問題,而不是編輯到一個現有的問題。 – ThiefMaster

回答

1

在後臺線程中運行將讓用戶界面繼續接收請求。嘗試是這樣的:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    char* utf8Text = tesseract->GetUTF8Text(); 
}); 
+1

謝謝你,但我現在有另一個問題。如果用戶點擊後退按鈕,它會崩潰。我認爲我必須殺死所有的作品。我的代碼是:dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^ { tesseract-> Recognize(NULL); 字符* utf8Text = tesseract-> GetUTF8Text(); [自performSelectorOnMainThread:@selector(ocrProcessingFinished :) withObject:[NSString的stringWithUTF8String:utf8Text] waitUntilDone:NO]; 刪除[] utf8Text; }); – fulberto100

+0

嘗試使用調試器來檢查傳遞給ocrProcessingFinished方法的對象的內容,並檢查它是否爲零。 – danielbeard

+0

我編輯了這個問題,你能再看一遍嗎? – fulberto100