1)安装相关软件:
下载ccpan,把路径放到path(右击电脑,选择“属性”,选择左边的“高级系统设置”,选择“环境变量”,找到“系统变量”里面的“path”,点击“编辑”,选择右边的“新建”,输入如下图1)。(我把cppan.exe放到c:\cppan\)
图1
2)安装cmake(我选择类似自动安装的方式)
3)下载tesseract和leptonica-1.74:
将下载后的tesseract解压后在文件夹搜索框中搜索所有.h文件,新建一个文件夹命名为tesseract-vs2015并在该文件夹中新建一个文件夹命名为tesseract,将上述得到的.h文件复制到里面。
将下载的leptonica解压后在文件夹搜索框中搜索所有.h文件,在文件夹tesseract-vs2015中新建一个文件夹命名为leptonica,将上述得到的.h文件复制到里面。
4)打开cmd窗口。
红色框即为我在cmd中输入的代码。
图2
图3
5)编译sln文件
打开tesseract/win64/,找到tesseract.sln,用vs2015打开,选择release,x64,如下图4.再选择build,选择build solution,如下图5。
图4
图5
6)修改编码错误:
在vs的错误列表里双击错误的文件后,单击 文件-高级保存选项修改编码方式为:简体中文GB2312-代码页936
7)重新生成
通过第六步后单击重新生成解决方案
8)保存生成的文件:
通过以上操作后在tesseract/win64/bin下可以看到如下图的.dll文件。
将其中的.dll文件复制,在上述步骤所建tesseract-vs2015文件夹中新建一个文件夹并命名为bin并将刚刚复制的.dll文件粘贴到当中去。在从tesseract/win64的某个文件夹中找到tesseract400.lib并将其复制,在上述步骤所建tesseract-vs2015文件夹中新建一个文件夹并命名为lib,并将刚刚复制的lib文件粘贴在里面。然后从C:\Users\Administrator\.cppan\storage\lib\ddbdbe4c\Release中将pvt.cppan.demo.danbloomberg.leptonica-1.74.4.lib,复制到tesseract-vs2015\lib文件夹下。
9)在vs2015中配置tesseract4.0:
新建一个空的控制台程序。并找到下图位置
双击.x64.user出现如下图:
单击VC++目录,将tesseract-2015/include/tesseract和tesseract-2015/include/leptonica这两个路劲包含在VC++目录下的包含目录下,如图
再将tesseract-2015/lib路径包含在VC++目录下的库目录中。在单击链接器-输入,将tesseract-2015/lib中的两个lib文件的名字添加到附加依赖项中。如图;
最后把tesseract-2015/bin文件夹路径放到系统的环境变量中的path值中即可。
注:将生成的所有dll文件放在Release目录下,才编译成功。
11)网络上的测试代码:
#include<iostream>
#include <baseapi.h>
#include<allheaders.h>
#include <cv.h>
#include <highgui.h>
using namespace std;
int main()
{
char *outText;
tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
// Initialize tesseract-ocr with English, without specifying tessdata path
if (api->Init(NULL, "eng")) {
fprintf(stderr, "Could not initialize tesseract.\n");
exit(1);
}
// Open input image with leptonica library
Pix *image = pixRead("D:\\opencvlianxi\\la\\1.jpg");
api->SetImage(image);
// Get OCR result
outText = api->GetUTF8Text();
printf("OCR output:\n%s", outText);
// Destroy used object and release memory
api->End();
delete[] outText;
pixDestroy(&image);
return 0;
}
api->SetPageSegMode(tesseract::PSM_SINGLE_BLOCK);
api.SetPageSegMode(tesseract::PSM_AUTO);//设置自动进行版面分析
api.SetAccuracyVSpeed(tesseract::AVS_FASTEST);//要求速度最快
api->SetRectangle(30, 86, 590, 100);
api->Init("/usr/src/tesseract-3.02/", "eng");
- #include "stdafx.h"
- #include "tesseract\baseapi.h"
- #include "tesseract\strngs.h"
- int _tmain(int argc, _TCHAR* argv[])
- {
- const char * image = "image.jpg";
- tesseract::TessBaseAPI api;
- api.Init(NULL, "eng", tesseract::OEM_DEFAULT);
- api.SetVariable( "tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" );
- STRING text_out;
- if (!api.ProcessPages(image, NULL, 0, &text_out))
- {
- return 0;
- }
- printf(text_out.string());
- return 0;
- }