iphone - tesseract OCRing 时如何停止?

标签 iphone block ocr tesseract

我在我的 iPhone 应用程序中使用 tesseract 进行图像 OCRing。 我想在运行时停止所有 OCR 进程。

这是我的代码:

在.h文件中:

dispatch_queue_t main;
tesseract::TessBaseAPI *tesseract;
uint32_t *pixels;

在.m文件中:

- (void)processOcrAt:(UIImage *)image
{
    [self setTesseractImage:image];

    //char* utf8Text = tesseract->GetUTF8Text();
    //[self performSelector:@selector(ocrProcessingFinished:) withObject:[NSString stringWithUTF8String:utf8Text]];
    //dispatch_queue_t queue = dispatch_queue_create("com.awesome", 0);

    main = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_async(main, ^{
        tesseract->Recognize(NULL);
        char* utf8Text = tesseract->GetUTF8Text();
        [self performSelectorOnMainThread:@selector(ocrProcessingFinished:)
                               withObject:[NSString stringWithUTF8String:utf8Text]
                               waitUntilDone:NO];
        delete [] utf8Text;
    });


}

-(IBAction)backPressed:(id)sender{
    dispatch_release(main);
    tesseract->Clear();
    //tesseract->End();

    delete tesseract;
    tesseract = nil;
    delete pixels;
    [self.navigationController popViewControllerAnimated:YES];
}

当我在 ocr 运行时点击后退按钮时,它会崩溃。因为 ocr 仍在运行。我怎样才能阻止它?我在 tesseract 中找不到任何方法。

最佳答案

Recognize() 函数中的 ETEXT_DESC 参数怎么样? (不确定您写答案 fulberto100 时是否存在)。它是一个监视器,用于跟踪进度以及取消进度。它在 TessBaseAPI::ProcessPage 中使用。不过我自己还没试过。

ETEXT_DESC monitor;
monitor.cancel = NULL;
monitor.cancel_this = NULL;
monitor.set_deadline_msecs(timeout_millisec);
// Now run the main recognition.
failed = Recognize(&monitor) < 0;

关于iphone - tesseract OCRing 时如何停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12138497/

相关文章:

r - 使用 R 进行简单的图像/模式识别任务?

iphone - 格式化 CIColorCube 数据

ios - 谷歌地图 sdk 在 iPhone 中显示方向

c - 我无法理解 for 循环 block 和 if 语句

html - 显示 block 移动整个 body 部分

python - 训练 Tesseract OCR 消除歧义

python - 阅读文本时出现 Pytesseract 随机错误

ios - 当我们通过ipa安装Application时,iphone 5(OS- 8.2)崩溃,但在设备上调试时却无法崩溃

iphone - 使用 iPhone 发送 HTML 到远程客户端

ruby-on-rails - 跨多个<%%>标签或多行使用的Ruby DSL