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的更多相关文章

  1. 小试Office OneNote 2010的图片文字识别功能(OCR)

    原文:小试Office OneNote 2010的图片文字识别功能(OCR) 自Office 2003以来,OneNote就成为了我电脑中必不可少的软件,它集各种创新功能于一身,可方便的记录下各种类型 ...

  2. C#使用OneNote的图片文字识别功能(OCR)

    http://www.cnblogs.com/Charltsing/p/OneNoteOCR.html 有需要技术咨询的,联系QQ564955427 前段时间有人问我能不能通过OneNote扫描图片, ...

  3. 【图片识别】java 图片文字识别 ocr (转)

    http://www.cnblogs.com/inkflower/p/6642264.html 最近在开发的时候需要识别图片中的一些文字,网上找了相关资料之后,发现google有一个离线的工具,以下为 ...

  4. java 图片文字识别 ocr

    最近在开发的时候需要识别图片中的一些文字,网上找了相关资料之后,发现google有一个离线的工具,以下为java使用的demo 在此之前,使用这个工具需要在本地安装OCR工具: 下面一个是一定要安装的 ...

  5. 一篇文章搞定百度OCR图片文字识别API

    一篇文章搞定百度OCR图片文字识别API https://www.jianshu.com/p/7905d3b12104

  6. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 18—Photo OCR 应用实例:图片文字识别

    Lecture 18—Photo OCR 应用实例:图片文字识别 18.1 问题描述和流程图 Problem Description and Pipeline 图像文字识别需要如下步骤: 1.文字侦测 ...

  7. [C13] 应用实例:图片文字识别(Application Example: Photo OCR)

    应用实例:图片文字识别(Application Example: Photo OCR) 问题描述和流程图(Problem Description and Pipeline) 图像文字识别应用所作的事是 ...

  8. python3 图片文字识别

    最近用到了图片文字识别这个功能,从网上搜查了一下,决定利用百度的文字识别接口.通过测试发现文字识别率还可以.下面就测试过程简要说明一下 1.注册用户 链接:https://login.bce.baid ...

  9. JAVA的图片文字识别技术

    从2013年的记录看,JAVA中图片文字识别技术大部分采用ORC的tesseract的软件功能,后来渐渐开放了java-api调用接口. 图片文字识别技术,还是采用训练的方法.并未从根本上解决图片与文 ...

随机推荐

  1. 为什么开启子进程 一定要放在 if __name__ == '__main__' 下面

  2. THUSC2017 Day1题解

    THUSC2017 Day1题解 巧克力 题目描述 "人生就像一盒巧克力,你永远不知道吃到的下一块是什么味道." 明明收到了一大块巧克力,里面有若干小块,排成n行m列.每一小块都有 ...

  3. Hdoj 2717.Catch That Cow 题解

    Problem Description Farmer John has been informed of the location of a fugitive cow and wants to cat ...

  4. luogu1919 A*BProblem升级版 (FFT)

    把一个n位数看做n-1次的多项式,每一项的系数是反过来的每一位最后每一项系数进进位搞一搞就行了(数组一定要开到2的次数..要不然极端数据会RE) #include<cstdio> #inc ...

  5. 【linux】硬盘原理简介和分区

    硬盘是计算机重要的一个部件,计算机中的数据都是保存在硬盘中,比如mysql的数据,linux系统日志及其他的应用日志,还有很多视频,音频,图片等文件都是保存在硬盘中,所以硬盘是计算机不可或缺的一个部件 ...

  6. selenium 代理设置

    设置Firefox代理: from selenium import webdriver from selenium.webdriver.common.proxy import Proxy, Proxy ...

  7. springboot 通过 hibernate 连接sqlserver 空间数据 位置数据

    示例代码:https://github.com/bigben0123/spring-boot-spatial-example 1,配置application.properties #sqlserver ...

  8. jenkins自动打包部署项目

    首先去jenkins的官网下载安装包 https://jenkins.io/   个人下载是长期稳定的那个版本,下载后,得到一个.msi的安装包: 点击进行安装,然后一直点击下一步. jenkins会 ...

  9. WIndows下将文件夹映射为磁盘

    subst 盘符 文件夹路径 [/d] 映射 将e:\work映射为z:盘,使用subst z: e:\work 取消映射 取消z盘映射,使用subst z: /d 参考资料:http://mp.we ...

  10. A1138. Postorder Traversal

    Suppose that all the keys in a binary tree are distinct positive integers. Given the preorder and in ...