做字符识别,不能不了解google的Tesseract-OCR,但是如何在自己的工程中使用其API倒是语焉不详,官网上倒是很详尽地也很啰嗦地介绍如何重新编译生成适合自己平台的lib和dll,经过近些天的不断搜索和尝试,可算是找了些门路。尤其感谢以下作者的分享带给我的帮助和启发:

<span>cxf7394373</span>的 字符识别Google开源Tesseract-ocr的DLL调用方法

<span>夏梦c</span>Tesseract3.02简单环境搭建

<span>tsinson</span>的 tesseract下的简单应用

下面开始介绍我的使用经验:

一,下载lib和dll

可以从这里http://code.google.com/p/tesseract-ocr/downloads/list  下载

tesseract-ocr-setup-3.02.02.exe Windows installer of tesseract-ocr 3.02.02 (including English language data)  Featured

然后进行安装,如此可以方便地省去好多配置细节:如修改环境变量【如果不采用环境变量方式,则需要对于每个工程目录建立tessdata文件夹,并且里面放置所需要的chi_sim.traineddata等语言包】,也不再需要下载tesseract-3.02.02-win32-lib-include-dirs.zip, 更方便以后训练出自己的traineddata 文件

需要注意的是,安装目录下lib里面 libtesseract302d.dll 是针对VS2008的,需要用一个vs2010编译出的替换下来才可以在VS2010下正常使用。

另外还需要将 liblept168.dll 和 liblept168d.dll两个文件一并下载放到lib里面。 【这三个文件均可以从tsinson提供的样例工程里面找到】

二,修改环境变量Path

在环境变量Path中增加指向安装目录下lib的路径,比如C:\Program Files\Tesseract-OCR\lib  ,以便exe运行时能找到所需要的dll

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

在自己的工程属性中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简单使用方法

这里可以参照<span>cxf7394373</span>的 字符识别Google开源Tesseract-ocr的DLL调用方法

使用其API的一种模式大致是这样:先包含头文件,连接库;然后再定义一个api类,配置好参数之后提取识别结果

  1. #include "strngs.h"
  2. #include "baseapi.h"
  3. #pragma  comment(lib,"libtesseract302d.lib")
  4. ////////////////
  5. tesseract::TessBaseAPI  api;
  6. api.Init(NULL, "eng", tesseract::OEM_DEFAULT);  //初始化,设置语言包,中文简体:chi_sim;英文:eng;也可以自己训练语言包
  7. //api.SetVariable( "tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" );
  8. STRING text_out;
  9. if (!api.ProcessPages("kaze.tif", NULL, 0, &text_out))
  10. {
  11. //AfxMessageBox("tesseract 处理出现异常");
  12. return 0;
  13. }
  14. cout<<text_out.string();
  15. cout<<UTF8ToGBK(text_out.string()).c_str();
  1. #include "strngs.h"
  2. #include "baseapi.h"
  3. #pragma  comment(lib,"libtesseract302d.lib")
  4. ////////////////
  5. tesseract::TessBaseAPI  api;
  6. api.Init(NULL, "eng", tesseract::OEM_DEFAULT);  //初始化,设置语言包,中文简体:chi_sim;英文:eng;也可以自己训练语言包
  7. //api.SetVariable( "tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" );
  8. STRING text_out;
  9. if (!api.ProcessPages("kaze.tif", NULL, 0, &text_out))
  10. {
  11. //AfxMessageBox("tesseract 处理出现异常");
  12. return 0;
  13. }
  14. cout<<text_out.string();
  15. cout<<UTF8ToGBK(text_out.string()).c_str();

Tesseract OCR简单实用介绍的更多相关文章

  1. MonkeyTest简单实用介绍

    什么是Monkeytest? monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动Trackball.按键灯操作来对设备上的程序进行压力测试,检测程序发 ...

  2. iOS边练边学--多线程介绍、NSThread的简单实用、线程安全以及线程之间的通信

    一.iOS中的多线程 多线程的原理(之前多线程这块没好好学,之前对多线程的理解也是错误的,这里更正,好好学习这块) iOS中多线程的实现方案有以下几种 二.NSThread线程类的简单实用(直接上代码 ...

  3. Python下Tesseract Ocr引擎及安装介绍

    1.Tesseract介绍 tesseract 是一个google支持的开源ocr项目,其项目地址:https://github.com/tesseract-ocr/tesseract,目前最新的源码 ...

  4. 百度 OCR API 的使用以及与 Tesseract 的简单对比

    目录 百度 OCR API 初探 用 Python 调用百度 OCR API 与 Tesseract 的简单对比 百度 OCR API 初探 近日得知百度在其 APIStore 上开放了 OCR 的 ...

  5. Tesseract OCR使用介绍

    #Tesseract OCR使用介绍 ##目录[TOC] ##下载地址及介绍 官网介绍:http://code.google.com/p/tesseract-ocr/wiki/TrainingTess ...

  6. Tesseract——OCR图像识别 入门篇

    Tesseract——OCR图像识别 入门篇 最近给了我一个任务,让我研究图像识别,从我们项目的screenshot中识别文字信息,so我开始了学习,与大家分享下. 我看到目前OCR技术有很多,最主要 ...

  7. 使用ImageMagick和Tesseract进行简单数字图像识别

    使用ImageMagick和Tesseract进行简单数字图像识别 由于直接使用 tesseract 进行识别,识别率很低, ImageMagick 安装.配置及使用: 平台:winXP 1. 安装I ...

  8. 简单实用的PHP防注入类实例

    这篇文章主要介绍了简单实用的PHP防注入类实例,以两个简单的防注入类为例介绍了PHP防注入的原理与技巧,对网站安全建设来说非常具有实用价值,需要的朋友可以参考下   本文实例讲述了简单实用的PHP防注 ...

  9. tesseract ocr文字识别Android实例程序和训练工具全部源代码

    tesseract ocr是一个开源的文字识别引擎,Android系统中也可以使用.可以识别50多种语言,通过自己训练识别库的方式,可以大大提高识别的准确率. 为了节省大家的学习时间,现将自己近期的学 ...

随机推荐

  1. shell 示例1 从1叠加到100

    从1叠加到100 echo $[$(echo +{..})] echo $[(+)*(/)] seq -s |bc

  2. Spring Boot实战系列-----------邮件发送

    快速导航 添加Maven依赖 配置文件增加邮箱相关配置 Service.Test项目代码构建 五种邮件发送类型讲解 文本邮件 html邮件 附件邮件 html内嵌图片邮件 模板邮件 问题汇总 添加ma ...

  3. mysql 1045 access denied for user 解决方法

    提示:1045 access denied for user 'root'@'localhost' using password yes方法一: # /etc/init.d/mysql stop #  ...

  4. mybatis关联查询数据模型分析——(七)

    1.     数据模型分析思路 1.每张表记录的数据内容 分模块对每张表记录的内容进行熟悉,相当 于你学习系统 需求(功能)的过程. 2.每张表重要的字段设置 非空字段.外键字段 3.数据库级别表与表 ...

  5. find中的-print0和xargs中-0的奥妙【转】

    find cygnus/firmware_cygnus/target/linux/brcm5830/files/arch/arm/mach-iproc/pm_iproc/ -name "*. ...

  6. WCF客户端调用服务器端错误:"服务器已拒绝客户端凭据"。

    WCF客户端和服务器端不在同一台机器上时,客户端调用服务器端会报如下错误:"服务器已拒绝客户端凭据". 解决办法:在服务端配置文件与客户端配置文件中加入下面红色部分

  7. [原创]Python/Django使用富文本编辑器XHeditor上传本地图片

    前言 为了在Django框架下使用Xheditor上传图片,居然折腾了我一个晚上.期间也遇到种种问题,网上相关资料极少.现在把经验分享给大家. 正文 xheditor篇 1.下载http://xhed ...

  8. 【转载】redis容灾策略

    版权声明:转载请注明出处 http://blog.csdn.net/irean_lau. https://blog.csdn.net/Irean_Lau/article/details/5136027 ...

  9. unit测试出现异常:Exception in thread "main" java.lang.NoSuchMethodError: org.junit.platform.commons.util

    在进行单元测试时,测试出现异常 Exception in thread "main" java.lang.NoSuchMethodError: org.junit.platform ...

  10. C/C++有效对齐值的确定

    先来看看什么是对齐.现代计算机中内存空间都是按照字节(byte)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型 ...