Tesseract OCR简单实用介绍
做字符识别,不能不了解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类,配置好参数之后提取识别结果
- #include "strngs.h"
- #include "baseapi.h"
- #pragma comment(lib,"libtesseract302d.lib")
- ////////////////
- tesseract::TessBaseAPI api;
- api.Init(NULL, "eng", tesseract::OEM_DEFAULT); //初始化,设置语言包,中文简体:chi_sim;英文:eng;也可以自己训练语言包
- //api.SetVariable( "tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" );
- STRING text_out;
- if (!api.ProcessPages("kaze.tif", NULL, 0, &text_out))
- {
- //AfxMessageBox("tesseract 处理出现异常");
- return 0;
- }
- cout<<text_out.string();
- cout<<UTF8ToGBK(text_out.string()).c_str();
- #include "strngs.h"
- #include "baseapi.h"
- #pragma comment(lib,"libtesseract302d.lib")
- ////////////////
- tesseract::TessBaseAPI api;
- api.Init(NULL, "eng", tesseract::OEM_DEFAULT); //初始化,设置语言包,中文简体:chi_sim;英文:eng;也可以自己训练语言包
- //api.SetVariable( "tessedit_char_whitelist", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" );
- STRING text_out;
- if (!api.ProcessPages("kaze.tif", NULL, 0, &text_out))
- {
- //AfxMessageBox("tesseract 处理出现异常");
- return 0;
- }
- cout<<text_out.string();
- cout<<UTF8ToGBK(text_out.string()).c_str();
Tesseract OCR简单实用介绍的更多相关文章
- MonkeyTest简单实用介绍
什么是Monkeytest? monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动Trackball.按键灯操作来对设备上的程序进行压力测试,检测程序发 ...
- iOS边练边学--多线程介绍、NSThread的简单实用、线程安全以及线程之间的通信
一.iOS中的多线程 多线程的原理(之前多线程这块没好好学,之前对多线程的理解也是错误的,这里更正,好好学习这块) iOS中多线程的实现方案有以下几种 二.NSThread线程类的简单实用(直接上代码 ...
- Python下Tesseract Ocr引擎及安装介绍
1.Tesseract介绍 tesseract 是一个google支持的开源ocr项目,其项目地址:https://github.com/tesseract-ocr/tesseract,目前最新的源码 ...
- 百度 OCR API 的使用以及与 Tesseract 的简单对比
目录 百度 OCR API 初探 用 Python 调用百度 OCR API 与 Tesseract 的简单对比 百度 OCR API 初探 近日得知百度在其 APIStore 上开放了 OCR 的 ...
- Tesseract OCR使用介绍
#Tesseract OCR使用介绍 ##目录[TOC] ##下载地址及介绍 官网介绍:http://code.google.com/p/tesseract-ocr/wiki/TrainingTess ...
- Tesseract——OCR图像识别 入门篇
Tesseract——OCR图像识别 入门篇 最近给了我一个任务,让我研究图像识别,从我们项目的screenshot中识别文字信息,so我开始了学习,与大家分享下. 我看到目前OCR技术有很多,最主要 ...
- 使用ImageMagick和Tesseract进行简单数字图像识别
使用ImageMagick和Tesseract进行简单数字图像识别 由于直接使用 tesseract 进行识别,识别率很低, ImageMagick 安装.配置及使用: 平台:winXP 1. 安装I ...
- 简单实用的PHP防注入类实例
这篇文章主要介绍了简单实用的PHP防注入类实例,以两个简单的防注入类为例介绍了PHP防注入的原理与技巧,对网站安全建设来说非常具有实用价值,需要的朋友可以参考下 本文实例讲述了简单实用的PHP防注 ...
- tesseract ocr文字识别Android实例程序和训练工具全部源代码
tesseract ocr是一个开源的文字识别引擎,Android系统中也可以使用.可以识别50多种语言,通过自己训练识别库的方式,可以大大提高识别的准确率. 为了节省大家的学习时间,现将自己近期的学 ...
随机推荐
- 织梦 dedecms 首页调用公司简介的内容
首页调用公司简介的代码: {dede:sql sql='Select content,substring(content,1,300) as content from dede_arctype whe ...
- [转]CSS浏览器兼容问题总结
E6.0,ie7.0与Firefox的CSS兼容性问题1.DOCTYPE 影响 CSS 处理 2.FF: div 设置 margin-left, margin-right 为 auto 时已经居中, ...
- JavaScript编写风格指南 (一)
//参考<编写可维护的Javascript> 一:缩进// 第一行的层级由4个空格组成,避免使用制表符tab进行缩进 //好的写法if (true) { doSomething() ...
- Guava HashMultiset(MultiSet)
multiset:多重集合,和set唯一的不同是 set 集合中一个值只能出现一次,而multiset多重集合中一个值可以出现多次.一个典型的应用就是统计单词出现次数 举例: public class ...
- sql server查询某年某月有多少天
sql语句如下: ),) date from (),,)+'-01' day) t1, ( ) t2 ),) ),,)+'%' 查询结果如下: 2017年2月共有28天,查询出28条记录.
- 关于caffe的安装问题
在caffe的安装过程中,出现 /usr/bin/ld: cannot find -lcblas /usr/bin/ld: cannot find -latlas的问题 这时解决方案为http://s ...
- hibernate的多对多关联映射
在我们实际项目中,多对多的情况也时长存在,比如最常见的就是系统管理的五张表,如下面的一个结构: 在本文学习hibernate多对多关联映射的实验中我简单的写几个字段,达到学习目的即可. 1.多对多的关 ...
- Android WebView 详解
相关API 相关类介绍 WebResourceRequest 添加于API21,封装了一个Web资源的请求信息,包含:请求地址,请求方法,请求头,是否主框架,是否用户点击,是否重定向 WebResou ...
- java基础学习总结——GUI编程(二)
一.事件监听
- Java编程的逻辑 (23) - 枚举的本质
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...