开源图片文字识别引擎——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调用接口. 图片文字识别技术,还是采用训练的方法.并未从根本上解决图片与文 ...
随机推荐
- python3,打印一年的某一天是一年的第几天
year = int(input('year:')) month = int(input('month:')) day = int(input('day:')) months = (0,31,59,9 ...
- Ikki's Story IV - Panda's Trick POJ - 3207(水2 - sat 在圈内 还是 在圈外)
题意: 就是一个圈上有n个点,给出m对个点,这m对个点,每一对都有一条边,合理安排这些边在圈内或圈外,能否不相交 解析: 我手残 我手残 我手残 写一下情况 只能是一个在圈外 一个在圈内 即一个1一个 ...
- 各种MM(存储器)含义
1.rom:read only memory 只读存储器 只能读,不能写. 2.ram:random access memory 随机存取存储器 可读可写. 3.fifo:first in first ...
- 【XSY2719】prime 莫比乌斯反演
题目描述 设\(f(i)\)为\(i\)的不同的质因子个数,求\(\sum_{i=1}^n2^{f(i)}\) \(n\leq{10}^{12}\) 题解 考虑\(2^{f(i)}\)的意义:有\(f ...
- Android assets的一个bug
摘要 Android assets目录下资源文件超过1MB的问题. 由于要显示一些奇奇怪怪的日文字符,我们在应用里放了一个字库文件,譬如叫做jp.ttf,放在assets目录下打包. 开发.调试一切正 ...
- Nifi 老是死机
1. nifi服务器配置 CPU:4核 内存:7G 2. 改动如下: nifi.provenance.repository.rollover.time=30 secs --> 36000 s ...
- JS分页条插件
目标 制作js分页导航jq插件,用于无刷新分页或者刷新分页 实现目标参考京东和天猫的分页条. 有四个固定按钮,前页码,后页码,首页,末页. 程序关键点在于计算中间页面的起止位置.逻辑是以当前页码为参照 ...
- 【dfs】p1731 生日蛋糕
1441:[例题2]生日蛋搞 [题目描述] 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体.设从下往上数第i(1≤i≤M)层蛋糕是半径为Ri, 高 ...
- HDU 6336 Matrix from Arrays (杭电多校4E)
遇事不决先打表. 然后会发现(个屁)大的矩形是由一个2L*2L的矩形重复出现组成的然后我们就可以这个矩形分成四个点到(0, 0)点的矩形,这样问题就变成了求四个到顶点(0, 0)的矩形的面积,然后就先 ...
- 覆盖的面积 HDU - 1255 (扫描线, 面积交)
求n个矩阵面积相交的部分,和求面积并一样,不过这里需要开两个数组保存覆盖一次和覆盖两次以上的次数的部分,还是模板,主要注意点就是pushup部分,如果我已经被两次覆盖,那我的两个数组在这个root点的 ...