开源图片文字识别引擎——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调用接口. 图片文字识别技术,还是采用训练的方法.并未从根本上解决图片与文 ...
随机推荐
- Navicat MySQL 自动备份
1 新建批处理作业 2 设定(多个库,就轮流选择不同库,然后步骤2) 最后记得保存 3 计划 4 设计批处理作业->设置计划任务 5 输入账号和密码 服务器登录名 服务器密码 6 你可以修改备份 ...
- Python中pandas模块解析
Pandas基于两种数据类型: series 与 dataframe . 1.Series 一个series是一个一维的数据类型,其中每一个元素都有一个标签.类似于Numpy中元素带标签的数组.其中, ...
- Linux的Shell练习--个人笔记
一. 实验准备(预防抄袭,此步必做) 1. 请将提示符设为:学号加波浪号.输入PS1=学号~,如PS1=110015~, 回车执行 2. 如发现提示符.学号不匹配, 视为抄袭或无效 二. 实验项目 1 ...
- Iroha and a Grid AtCoder - 1974(思维水题)
就是一个组合数水题 偷个图 去掉阴影部分 把整个图看成上下两个矩形 对于上面的矩形求出起点到每个绿点的方案 对于下面的矩形 求出每个绿点到终点的方案 上下两个绿点的方案相乘后相加 就是了 想想为什么 ...
- 【XSY2709】count DP
题目描述 有一个序列\(A\),你可以随意排列这个序列,设\(s=\sum_{i=1}^{n-1}|a_i-a_{i+1}|\) . 问你最终\(s\leq m\)的方案数有几种. 保证\(A\)中的 ...
- github 快速部署
在github上 新建一个项目后,并且未提交任何代码,会有一个页面提示我们如何快速部署.在此备份一下那个页面 Quick setup — if you’ve done this kind of thi ...
- Nifi InvokeHttp processor
Authorization: Bearer <access-token> Content_type: application/json NIFI 中国社区 QQ群:595034 ...
- One-hot encoding 独热编码
http://blog.sina.com.cn/s/blog_5252f6ca0102uy47.html
- [ZJOI2016]大森林(LCT)
题目描述 小Y家里有一个大森林,里面有n棵树,编号从1到n.一开始这些树都只是树苗,只有一个节点,标号为1.这些树都有一个特殊的节点,我们称之为生长节点,这些节点有生长出子节点的能力. 小Y掌握了一种 ...
- 20165223 week3蓝墨云测试总结
1. 表达式0xaa | 0x55的值为 答案: 解析: 0xaa用二进制表示为10101010,0x55用二进制表示为01010101,按位或后为11111111,十进制表示为255,十六进制表示为 ...