C# 图片识别(支持21种语言)

图片识别的技术到几天已经很成熟了,只是相关的资料很少,为了方便在此汇总一下(C#实现),方便需要的朋友查阅,也给自己做个记号。


图片识别的用途:很多人用它去破解网站的验证码,用于达到自动刷票或者是批量注册的目的,但我觉得它最吸引我的地方是可以让一些书写的东西,自动识别成电脑上的文字,比如说手拟的合同,修改过的书面论文或者是文档,每月的花费发票需要在电脑上录入或者是汇总信息,日记本上的文章要转移到电脑上等等,我们现在就不用再头痛把它们在电脑上敲写一遍了。

本文介绍两种比较主流和成熟的识别方式:

方式一、Asprise-OCR实现

方式二、Microsoft Office Document Imaging(Office 2007) 组件实现


方式一、Asprise-OCR的使用。

Asprise-OCR下载地址:

http://asprise.com/product/ocr/download.php?lang=csharp 

其中需要使用的3个dll是AspriseOCR.dll、DevIL.dll、ILU.dll。

需要注意的是这几个.dll是vc写的引用要在程序中用DllImport引用,关键代码:

[DllImport("AspriseOCR.dll", EntryPoint = "OCR", CallingConvention = CallingConvention.Cdecl)]

public static extern IntPtr OCR(string file, int type);

[DllImport("AspriseOCR.dll", EntryPoint = "OCRpart", CallingConvention = CallingConvention.Cdecl)]

static extern IntPtr OCRpart(string file, int type, int startX, int startY, int width, int height);

[DllImport("AspriseOCR.dll", EntryPoint = "OCRBarCodes", CallingConvention = CallingConvention.Cdecl)]

static extern IntPtr OCRBarCodes(string file, int type);

[DllImport("AspriseOCR.dll", EntryPoint = "OCRpartBarCodes", CallingConvention = CallingConvention.Cdecl)]

static extern IntPtr OCRpartBarCodes(string file, int type, int startX, int startY, int width, int height);


调用代码很简单只有一句:

MessageBox.Show(Marshal.PtrToStringAnsi(OCRpart(img_path, -1, startX, startY, width, height)));

其中img_path:为图片路径,startXstartY坐标均为0即可,widthheight图片的宽和高。


方式二、Microsoft Office Document Imaging(Office 2007) 组件实现。

在使用之前需要给大家说的是Imaging 组件的兼容性不是很好,使用win 7 office 2007的时必须打上office 2007 sp1或者sp2补丁,读取中文才行。 

sp1补丁地址(226M) 

http://download.microsoft.com/download/1/6/5/1659d607-8696-4001-8072-efaedd70dd30/office2007sp1-kb936982-fullfile-zh-cn.exe

sp2补丁地址(301 MB):

http://download.microsoft.com/download/A/3/9/A39E919E-AFA8-4128-9249-51629206C70F/office2007sp2-kb953195-fullfile-zh-cn.exe 


给项目添加组件引用,如图:

使用代码:

MODI.Document doc = new MODI.Document();

doc.Create(img_Path);

MODI.Image image;

MODI.Layout layout;

doc.OCR(MODI.MiLANGUAGES.miLANG_CHINESE_SIMPLIFIED, truetrue);  // 识别简体中文

for (int i = 0; i < doc.Images.Count; i++)

{

    image = (MODI.Image)doc.Images[i];

    layout = image.Layout;

    sb.Append(layout.Text);

}

MessageBox.Show(sb.ToString());

其中img_Path为图片路径,MODI.MiLANGUAGES为读取图片的文字类型枚举。


本文源码下载地址:http://files.cnblogs.com/stone_w/OCR.rar 






本文转自王磊的博客博客园博客,原文链接:http://www.cnblogs.com/vipstone/archive/2011/10/08/2202397.html,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭建Git Server - Centos+Gitosis

参考并部分转载自&#xff1a;http://www.pfeng.org/archives/757 1. 安装依赖 yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel git python python-setuptools2. 安装gitosis git clone git://github.com/res0nat0r/gitosis.git cd…

php中rsa加密及解密和签名及验签

加密的内容长度限制为密钥长度少11位,如128位的密钥最多加密的内容为117个长度。 公钥加密    $public_contentfile_get_contents(公钥路径);    $public_keyopenssl_get_publickey($public_content);        $original_str待加密的内容;    $original_arr…

Opencv ---像素坐标转世界坐标(已知外参)

只能求取已知外参的世界坐标平面上的世界坐标&#xff0c;具体公式如图片所示&#xff01; PS&#xff1a;字丑请谅解&#xff01;

最优化5-8章重点(考试点全)

10道题&#xff0c;每道题10分&#xff0c;5-8章大概4题左右&#xff0c;后面的章节主要考的是概念题

多对多关联映射(双向)

关联映射方面的最后一篇了&#xff0c;我觉得映射文件的编写是使用hibernate的基础&#xff0c;而关联映射又是基础的基础&#xff0c;所以这方面分的细一些&#xff0c;罗嗦一些&#xff0c;说明白就好&#xff0c;呵呵。多对多关联(双向)&#xff0c;相对单向&#xff0c;在实…

sort-排座椅

题目描述 Description上课的时候总有一些同学和前后左右的人交头接耳&#xff0c;这是令小学班主任十分头疼的一件事情。不过&#xff0c;班主任小雪发现了一些有趣的现象&#xff0c;当同学们的座次确定下来之后&#xff0c;只有有限的D对同学上课时会交头接耳。同学们在教室中…

JSONModel的基本使用

JSONModel 是一个库,它能智能并且快速的创建出数据 model,你可以在你的 iOS 项目或者 OSX 项目上使用它。 使用前准备 添加 JSONModel 到你的工程中 1、需要的环境: ARC,iOS 5.0 / OSX 10.7 引入框架SystemConfiguration.framework2、获取途径&#xff1a; 1&#xff09;、通过…

图像处理 伽玛校正

http://blog.csdn.net/lichengyu/article/details/20840135 本质上是关于灰度的一个幂函数&#xff0c;当系数gamma大于1时&#xff0c;低灰度值的动态范围减小&#xff0c;高灰度值的动态范围增大&#xff0c;整体的灰度值减小&#xff1b;gamma小于1时则相反&#xff1b; 人…

matlab常用工具箱的调用指令

转自:http://blog.sina.com.cn/s/blog_86186c970102va9g.html Matlab常用工具箱的调用命令 1. 优化工具箱​​ 用途:优化问题 调用命令:在Command Window输入“optimtool”​,其窗口如下 图1 Optimization Tool 2. 神经网络工具箱​ 用途:数据拟合、模式识别和分类…

tomcat起不来的问题已经解决

tomcat 起不来的问题:\apache-tomcat-6.0.10\bin 中startup.bat 起不来&#xff0c;一闪就没了。说明&#xff1a;环境变量没有配置好。解决办法&#xff1a;配置环境变量&#xff1a;JAVA_HOME C:\Program Files\Java\jdk1.6.0_03就可以解决问题了本文转自 yuwenhu 51CTO博客…

js写法【3】

var m[];m[m.length]xx;//相当于push 对Repeat方法提供了8种写法做比较&#xff0c;这一点还是不错的。转载于:https://www.cnblogs.com/baozhu/p/4862242.html

Eclipse设置控制台日志输出位置

1、选择服务器配置 2、设置输出文件路径 转载于:https://www.cnblogs.com/Neil223/p/5759693.html

现代制造工程——第七章(轧制和锻造)

考点基于书本以及PPT的题目 一、轧制 二、锻造

图像边缘梯度的定义

http://blog.csdn.net/u014020344/article/details/50196635

Jquery_JQuery之DataTables强大的表格解决方案

1、DataTables的默认配置 $(document).ready(function() { $(‘#example’).dataTable(); } ); 示例&#xff1a;http://www.guoxk.com/html/DataTables/Zero-configuration.html 2、DataTables的一些基础属性配置 “bPaginate”: true, //翻页功能 “bLengthChange”: true, /…

内存管理1retain和release

Student.h: #import <Foundation/Foundation.h> interface Student : NSObject property int age; //默认会生成一个_age属性 end Student.m: #import "Student.h" implementation Student //synthesize age_age;//xcode4.5中可以不使用synthesise方法&a…

目标检测的图像特征提取之(一)Hog特征提取

Hog特征实质是&#xff1a;梯度的统计信息,即针对边缘作特征提取 意义&#xff1a;目标的表象和形状 转载于zouxy09大神的文章&#xff0c;加上自己些微的理解和应用&#xff01; http://blog.csdn.net/zouxy09/article/details/7929348/ 上述基本讲清楚了&#xff0c;其实…

redis类型[string 、list 、 set 、sorted set 、hash]

1. Keys redis本质上一个key-value db&#xff0c;所以我们首先来看看他的key. 首先key也是字符串类型&#xff0c;但是key中不能包括边界字符&#xff1b;由于key不是binary safe的字符串&#xff0c;所以像"my key"和"mykey\n"这样包含空格和换行的key是…

matlab simulink笔记02——延迟模块delay与单位延迟模块unit delay

延迟模块 单位延迟模块 延迟模块具有复位功能,当满足复位条件时会进行复位操作,即输出的值会恢复到初始值,而单位延迟模块没有复位功能; 延迟模块的步长是可以设置的,而单位延迟模块的步长固定为1,不可以改变