【Tesseract-OCR】在VS2010环境下使用的方法---精简快速入门之总结

来源:互联网 发布:淘宝网店加盟 编辑:程序博客网 时间:2024/05/01 04:20

【Tesseract-OCR】在VS2010环境下使用的方法---精简快速入门之总结

以下是在原文基础上整理的精简安装使用流程:

一,下载lib和dll

http://download.csdn.net/detail/lutwmiao/9511228

里面包括用到的所有:

tesseract-ocr-3.02.chi_sim.tar.gz    中文语言库

tesseract-3.02.02-win32-lib-include-dirs.zip  lib和dll

tesseract-ocr-setup-3.02.02.exe 安装文件

安装tesseract-ocr-setup-3.02.02.exe 

二,工程中属性中增加路径

      新建工程testOCR,在自己的工程属性中VC++目录下增加包含目录和库目录,以便VS2010查找文件。例如

包含目录  下新增:C:\Program Files\Tesseract-OCR\include\tesseract

库目录      下新增: C:\Program Files\Tesseract-OCR\lib  

三,增加语言训练包

      直接将语言训练包放置在 安装目录 tessdata文件夹 下就好,比如将tesseract-ocr-3.02.chi_sim.tar.gz中的chi_sim.traineddata 文件直接抽取出来放在   C:\Program Files\Tesseract-OCR\tessdata 下面,就可以支持中文简体字符的识别啦。当然,自己训练出来的 traineddata 文件也是要放在这里的才生效。

四,API 简单 使用方法

    注:这里识别的结果需要转换一次!否则会出现乱码!!!

找到二步新建工程的main函数,修改为如下:

#include "stdafx.h"
#include "baseapi.h"
#include "strngs.h"
  #include<iostream>




#pragma  comment(lib,"libtesseract302.lib")
 using namespace std;



//这里是识别结果UTF8转string
std::string UTF8_To_string(const std::string & str)
{
int nwLen = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0);
wchar_t * pwBuf = new wchar_t[nwLen + 1];//一定要加1,不然会出现尾巴
memset(pwBuf, 0, nwLen * 2 + 2);
MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), pwBuf, nwLen);
int nLen = WideCharToMultiByte(CP_ACP, 0, pwBuf, -1, NULL, NULL, NULL, NULL);
char * pBuf = new char[nLen + 1];
memset(pBuf, 0, nLen + 1);
WideCharToMultiByte(CP_ACP, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL);
std::string retStr = pBuf;
delete []pBuf;
delete []pwBuf;
pBuf = NULL;
pwBuf = NULL;
return retStr;
}
int _tmain(int argc, _TCHAR* argv[])
{
//ocr
        char * str = "d:要识别的图片.jpg";  

tesseract::TessBaseAPI  api;    
api.Init(NULL, "chi_sim", tesseract::OEM_DEFAULT);  //初始化,设置语言包,中文简体:chi_sim;英文:eng;也可以自己训练语言包  
//api.SetVariable( "tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" );    
STRING text_out;    
if (!api.ProcessPages(str, NULL, 0, &text_out))    
{    
return 0;    
}    
// cout<<text_out.string();
char* text = api.GetUTF8Text();//识别图像中的文字
std::string aa=UTF8_To_string(text);
cout<<aa.c_str();

return 0;
}



0 0
原创粉丝点击