为什么Tesseract OCR库(iOS)根本无法识别文本?

Mai*_*r00 24 ocr tesseract objective-c ios

我正在尝试Tesseract OCR在我的iOS应用程序中使用库.我从github下载了tesseract-ios库,当我试图识别一个简单的文本图像时,我得到了垃圾.这是我试图识别的图像:

在此输入图像描述

我的文字难以理解:

T0I1101T0W KIR1 H1I1101T0W KIR1 H1I1101T0W CIBEPS H1 ES PBHY P306 EHH11 133I R1 11335 11I1H1 19 13S SYIL 3B19 M H300H1911 H1113 AIR1 J1 OIII 3I9SH5H133IS 13V9 I1 Q1H211 E015 19 W331 H1 111SW

为什么Tesseract甚至无法识别简单的图像?这是我用来实例化Tesseract的代码:

Tesseract* tesseractObject = [[Tesseract alloc] initWithDataPath:@"tessdata" language:@"eng"];
[tesseractObject setVariableValue:@"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" forKey:@"tessedit_char_whitelist"];
[tesseractObject setImage:image];
[tesseractObject recognize];
NSLog(@"RECOGNISED= %@" , [tesseractObject recognizedText]);
Run Code Online (Sandbox Code Playgroud)

这是我的项目结构:

在此输入图像描述

我通过引用添加了英文testdata文件夹.那么我做错了什么?我怎样才能解决这个问题?

Méd*_*tit 21

您正在使用选项tessedit_char_whitelist,其值为"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",它仅将字符识别限制为此列表.但是,您要处理的图像包含小写字符,如果要使用此选项,则还必须包括小写字母char.

[tesseractObject setVariableValue:@"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" forKey:@"tessedit_char_whitelist"];
Run Code Online (Sandbox Code Playgroud)


Ada*_*son 19

确保您拥有Google代码中的最新tessdata文件

http://code.google.com/p/tesseract-ocr/downloads/list

这将为您提供一个tessdata文件列表,您需要下载并包含在您的应用程序中,如果您还没有.在您的情况下,您将需要tesseract-ocr-3.02.eng.tar.gz,因为您正在寻找英语语言文件

以下文章将向您展示您需要安装它的位置.当我构建我的第一个Tesseract项目并发现它非常有用时,我通读了本教程

http://lois.di-qual.net/blog/install-and-use-tesseract-on-ios-with-tesseract-ios/


Chr*_*her 12

就像亚当说的那样,如果你想要好的结果,你将不得不做一些图像处理并配置一些设置(白名单列出某些字符等).

对于任何绊倒这个问题的人,我在这里整理了一个示例项目,它做了一些白名单和图像处理:https://github.com/mstrchrstphr/OCR-iOS-Example