开源图片文字识别引擎——Tesseract OCR
Tessseract为一款开源、免费的OCR引擎,能够支持中文十分难得。虽然其识别效果不是很理想,但是对于要求不高的中小型项目来说,已经足够用了。
文字识别可应用于许多领域,如阅读、翻译、文献资料的检索、信件和包裹的分拣、稿件的编辑和校对、大量统计报表和卡片的汇总与分析、银行支票的处理、商品发票的统计汇总、商品编码的识别、商品仓库的管理,以及水、电、煤气、房租、人身保险等费用的征收业务中的大量信用卡片的自动处理和办公室打字员工作的局部自动化等。以及文档检索,各类证件识别,方便用户快速录入信息,提高各行各业的工作效率。
Tesseract 是一款图片识别工具,可以抓取图片中的文字,可以支持多种语言(默认是英语),需要下载开源文件可以在github上下载。
源码下载地址:https://github.com/tesseract-ocr/tesseract/tree/3.02.02
https://github.com/charlesw/tesseract/tree/3.0.1
Tesseract官网:https://code.google.com/p/tesseract-ocr/
C#测试程序中调用Tesseract主要代码:
测试tesseract.dll 代码:
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
var img = new Bitmap(openFileDialog1.FileName);
// var ocr = new TesseractEngine(@"C:\Program Files (x86)\Tesseract-OCR\tessdata", "eng", EngineMode.TesseractAndCube);
var ocr = new TesseractEngine("./tessdata", "chi_sim", EngineMode.TesseractOnly);
var page = ocr.Process(img);
txtResult.Text = page.GetText();
}
调用Tesseract.dll的两种方法:
方法一:
import console;
import tesseract;
var ocr = tesseract.ocr();
if( 0 != ocr.init("eng","/") ){ //初始化样本语言包
error("没有找到样本 \tessdata\eng.traineddata");
}
//预设字符集可提升识别率,注意要一定在加载样本以后调用此函数
ocr.setVariable("tessedit_char_whitelist","0123456789")
//识别图像
var text = ocr.processPages("\test.jpg" )
console.log(text)
console.pause()
方法二:
import console;
import tesseract;
import win;
var ocr = tesseract.ocr();
if( 0 != ocr.init("eng","/" ) ){ //初始化样本语言包
var prefix = win.getenv("TESSDATA_PREFIX");
if(!#prefix) prefix = "~\lib\tesseract\.res"
error("没有找到样本 " + prefix + "eng.traineddata",2)
}
//预设字符集可提升识别率,注意要一定在加载样本以后调用此函数
ocr.setVariable("tessedit_char_whitelist","0123456789")
//获取图像像素数据
var pix = liblept.pixRead( ..io.fullpath("\test.jpg") );
ocr.setImage2( pix )
//识别图像
if( 0 != ocr.recognize() ){
console.pause(true,"识别图像出错");
return;
}
var text = ocr.getText()
console.log("识别结果",text )
liblept.pixDestroy({addr pix = pix})
console.pause();


C#测试截图
开源的效果比商用的效果差不少,但是随着开源技术的进步,相信这种不需要联网的文字识别 准确率会越来越高。总有一天会让我们满意的。当然,准确率也需要通过不断的训练神经网络来提高。

神经网络训练的中文数据库

Tesseract —ocr安装后文件夹
Tessdata:存放各种文字库(chi_sim.traineddata:中文 等)
Tessseract.exe 即可以启动文件开始调用Tesseract 可以通过cmd方式调用,先cd到对应的目录,然后 输入 tesseract.exe 图片名 导出文件名(如:tesseract.exe 1.jpg 1) 就可以把和tesseract同目录的 1.jpg文件识别结果存放在 1.txt文件中。当然如果需要支持中文,需要在tessdata中添加 chi_sim.traineddata 文件,
然后 调用例子:tesseract.exe 1.jpg 1 -L chi_sim 制定是根据什么文字库进行识别。 当然图片地址可以引用全路径、输出结果也可以全路径如果只是想把Tesseract做为一个工具做文字解析,并不追求太高成功率使用者,这样即可满足需要了,直接通过CMD调用exe进行执行。
参考文献:
http://www.cnblogs.com/CleanBoy/p/4617438.html
http://blog.csdn.net/carson2005/article/details/7246090
http://blog.csdn.net/kaka20080622/article/details/50662935
http://bbs.aardio.com/forum.php?mod=viewthread&tid=12601
开源图片文字识别引擎——Tesseract OCR的更多相关文章
- 小试Office OneNote 2010的图片文字识别功能(OCR)
原文:小试Office OneNote 2010的图片文字识别功能(OCR) 自Office 2003以来,OneNote就成为了我电脑中必不可少的软件,它集各种创新功能于一身,可方便的记录下各种类型 ...
- C#使用OneNote的图片文字识别功能(OCR)
http://www.cnblogs.com/Charltsing/p/OneNoteOCR.html 有需要技术咨询的,联系QQ564955427 前段时间有人问我能不能通过OneNote扫描图片, ...
- 【图片识别】java 图片文字识别 ocr (转)
http://www.cnblogs.com/inkflower/p/6642264.html 最近在开发的时候需要识别图片中的一些文字,网上找了相关资料之后,发现google有一个离线的工具,以下为 ...
- java 图片文字识别 ocr
最近在开发的时候需要识别图片中的一些文字,网上找了相关资料之后,发现google有一个离线的工具,以下为java使用的demo 在此之前,使用这个工具需要在本地安装OCR工具: 下面一个是一定要安装的 ...
- 一篇文章搞定百度OCR图片文字识别API
一篇文章搞定百度OCR图片文字识别API https://www.jianshu.com/p/7905d3b12104
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 18—Photo OCR 应用实例:图片文字识别
Lecture 18—Photo OCR 应用实例:图片文字识别 18.1 问题描述和流程图 Problem Description and Pipeline 图像文字识别需要如下步骤: 1.文字侦测 ...
- [C13] 应用实例:图片文字识别(Application Example: Photo OCR)
应用实例:图片文字识别(Application Example: Photo OCR) 问题描述和流程图(Problem Description and Pipeline) 图像文字识别应用所作的事是 ...
- python3 图片文字识别
最近用到了图片文字识别这个功能,从网上搜查了一下,决定利用百度的文字识别接口.通过测试发现文字识别率还可以.下面就测试过程简要说明一下 1.注册用户 链接:https://login.bce.baid ...
- JAVA的图片文字识别技术
从2013年的记录看,JAVA中图片文字识别技术大部分采用ORC的tesseract的软件功能,后来渐渐开放了java-api调用接口. 图片文字识别技术,还是采用训练的方法.并未从根本上解决图片与文 ...
随机推荐
- 【XSY2729】欧拉子图 无向图连通性 数学
题目大意 给你一个\(n\)个点\(m\)条边的无向图(可能有重边),对于这个图的边集的子集(一共有\(2^m\)个),如果其导出的子图的每个联通块内都存在欧拉回路,我们就把答案加上这个子图的边数的平 ...
- 前后端分离之vue2.0+webpack2 实战项目 -- html模板拼接
对于前后端分离,如何把一个页面的公共部分比如head, header, footer, content等组合成一个完整的html 是一个值得考虑的地方. 对于php,我们可以利用include加载其他 ...
- 【题解】 bzoj2462: [BeiJing2011]矩阵模板
题面戳我 Solution 二维矩阵\(hash\),判断即可 自己YY了一个方法,\(bzoj\)T到飞,(一开始还用的三\(hash\)),交到luogu貌似跑的不慢啊qwq (我是不会告诉你全输 ...
- 【总结】字符串hash
序列字符串\(Hash\) 直接hash即可qwq 预处理:\(Hash[3][i]\)(\(Hash\)值),\(Pow[3][i]\)(用来乘系数) 判断相等:\(box_1=Hash[3][i] ...
- 【Luogu4781】【模板】拉格朗日插值
[Luogu4781][模板]拉格朗日插值 题面 洛谷 题解 套个公式就好 #include<cstdio> #define ll long long #define MOD 998244 ...
- 【dp】P1434 [SHOI2002]滑雪
题目描述 Michael喜欢滑雪.这并不奇怪,因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道在一个区域中最长 ...
- [NOI2005]月下柠檬树(计算几何+积分)
题目描述 李哲非常非常喜欢柠檬树,特别是在静静的夜晚,当天空中有一弯明月温柔 地照亮地面上的景物时,他必会悠闲地坐在他亲手植下的那棵柠檬树旁,独自思 索着人生的哲理. 李哲是一个喜爱思考的孩子,当他看 ...
- Manjaro下Steam无法启动
问题描述 直接在桌面环境运行Steam,不会出现任何反应,甚至没有闪过一个对话框. 在终端中运行Sterm,出现以下提示 Repairing installation, linking /home/z ...
- 洛谷P1731 生日蛋糕
李煜东太神了啊啊啊啊啊! 生日蛋糕,著名搜索神题(还有虫食算). 当年的我30分.... 这哥们的程序0ms... 还有他的树网的核也巨TM神. 疯狂剪枝! DFS(int d, int s, int ...
- A1013. Battle Over Cities
It is vitally important to have all the cities connected by highways in a war. If a city is occupied ...