Tesseract-ocr For .NET

今天尝试了google的一个用于图片文字识别的Tesseract-ocr,我将它用于识别验证码。结果惨不忍睹。
首先你需要在github上获取当前最新的tesseract-3.04.00.tar

https://github.com/tesseract-ocr/tesseract
  1. 下载、解压后找到vs2010文件夹
    如图Tesseract-ocr For .NET_第1张图片

  2. 用visual studio打开tesseract.sln
    如图Tesseract-ocr For .NET_第2张图片

  3. 然后在程序包管理器控制台中输入“Install-Package Tesseract”
    (程序包管理器控制台 在 工具-》NuGet包管理器-》程序包管理器控制台)

  4. 在回到vs2010文件夹下,就会发现多了几个文件夹,其中packages文件夹就是我们需要的。
    如图Tesseract-ocr For .NET_第3张图片
    其中Tesseract.dll就是我们可以直接引用的。

  5. 在我的项目中添加引用Tesseract.dll,并添加下列代码

using (TesseractEngine engine = new TesseractEngine(HttpContext.Current.Server.MapPath(“/tessdata”), “eng”, EngineMode.Default))
{
Page page = engine.Process(Pix.LoadFromFile(path), PageSegMode.SingleLine);
string ocrText = page.GetText();
res.Add(new JProperty(“ocrText”, ocrText));
page.Dispose();
}

但是执行到初始化engine时报错了,接下我我们还需要做几部操作。

  1. 首先从在packages文件夹下找到x84和x64两个文件夹,直接复制到新项目的根目录下
  2. 从https://github.com/tesseract-ocr/tessdata上 找到eng.traineddata,如果你还想识别汉字 找到chi_sim.traineddata下载。在你的项目根目录下新建文件夹名为“tessdata”(文件夹名不能为其它),将下载下来的eng.traineddata和chi_sim.traineddata放入tessdata文件夹
  3. “eng”即为识别语言,如果想要识别汉字就改为“chi_sim”(简体中文)
    好了,现在基本就可以识别了。

PS:由于我是将他用于识别苹果验证码的。苹果的验证码背景有光栅、字符之间还可能重合。这里写图片描述这里写图片描述简单的用Tesseract识别20次,只能够正确识别两次,且两次都是字符之间没有重合,且每个字符倾斜不是很严重。这里写图片描述这里写图片描述
不过我用Tesseract识别英文文本效果还是可以的,如图:
Tesseract-ocr For .NET_第4张图片
识别的结果是:
responseStr‘eam.Close();\n
validateCodeRequest.Abor‘t();\n
validateCodeResponse.Close()5\n
response.Close();\n\n

也就是小写字符“r”书别错了,多加了“‘”符号。
用于识别汉字的话,就是惨不忍睹。我就贴一个栗子
Tesseract-ocr For .NET_第5张图片
识别的效果
//将base64St「ing 转为 byte数组\n
byte[] byteArray一 一 ConvePt-FPomBaSeG4StPing(baseG4StPing〉;\n\n
String SaVeFileName = \"Va1idateCode\" + DateTime-NOW-TOFileTime().ToString();\n
Str
ing path: HttpCOnteXt.Current.Se「VeP.MapPath〈\”/主mageS/\” + saVeFileName +\n\n
//使用文1牛流bi卖取byte数乡且中的数据\n\n
StPeam S = new F11eSt「eam〈path】 F11eMOde-CPeate);\n\n
-png\”);\n\n
s.W「ite(byteAPPay′ 0, byteA「「ay-Length〉j\n\n

你可能感兴趣的:(文字识别)