LeadTools答题卡识别方案
/// <summary>
/// 批改操作
/// </summary>
public AnswerCard DoCorrect(Stream AnserCardFile)
{
AnswerCard anserCard=new AnswerCard();
try
{
//RasterImage crrentImages;
// Create the Auto Forms Engine
AutoFormsEngine autoEngine;
RasterCodecs formsCodec=new RasterCodecs();
//Create a collection of OCR Engines
IOcrEngine ocrEngine;
//Create the repository of master forms
DiskMasterFormsRepository formsRepository;
//Create an OCR Engine
using (ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, false))
{ ocrEngine.Startup(formsCodec, null,null, null); // Load the first page as RasterImage
RasterImage rasterImage = formsCodec.Load(AnserCardFile);
//ocrEngine.CreatePage(rasterImage, OcrImageSharingMode.AutoDispose);
// Create an OCR page from this image, transform ownership of the RasterImage object
//using (IOcrPage ocrPage = ocrEngine.CreatePage(rasterImage, OcrImageSharingMode.AutoDispose))
//{
// Auto-preprocess it
//ocrPage.AutoPreprocess(OcrAutoPreprocessPageCommand.All, null); // Create an OCR document
using (IOcrDocument ocrDocument = ocrEngine.DocumentManager.CreateDocument())
{
// Add this image to the document
IOcrPage ocrPage = ocrDocument.Pages.AddPage(rasterImage, null);
BarcodeEngine barcodeEngine = new BarcodeEngine();
// Auto-preprocess it
ocrPage.AutoPreprocess(OcrAutoPreprocessPageCommand.All, null);
// Point repository to directory with existing master forms
formsRepository = new DiskMasterFormsRepository(formsCodec, masterFormsFolder);
autoEngine = new AutoFormsEngine(formsRepository, ocrEngine, null, AutoFormsRecognitionManager.Default | AutoFormsRecognitionManager.Ocr, , , true);
// Recognize (Classify) the form
AutoFormsRunResult runResult = autoEngine.Run(ocrPage.GetRasterImage(OcrPageType.Current), null, null, null);
//AutoFormsRunResult runResult = autoEngine.Run(rasterImage, null, null, null);
//AutoFormsRunResult runResult = autoEngine.Run(AnserCardFile, null);
if (runResult != null)
{
//Recognition was successful
anserCard = AnswerHandle(runResult);
}
}
autoEngine.Dispose();
formsCodec.Dispose();
//rasterImage.Dispose();
if (ocrEngine != null && ocrEngine.IsStarted)
ocrEngine.Shutdown();
}
return anserCard;
}
catch (Exception ex)
{
return null;
}
}
校正方案可使用
private void DoDeskew(IOcrEngine ocrEngine, string Filename, string Savename)
{
// Load the first page as RasterImage
RasterImage image = ocrEngine.RasterCodecsInstance.Load(Filename, );
// 准备命令
DeskewCommand command = new DeskewCommand();
//图像的倾斜校正
command.Flags = DeskewCommandFlags.DeskewImage | DeskewCommandFlags.DoNotFillExposedArea;
command.Run(image);
// 创建一个RasterCodecs类的新实例
RasterCodecs codecs = new RasterCodecs();
codecs.Options.Jpeg2000.Save.UseSopMarker =true;
// 将图像保存
codecs.Save(
image,
Savename,
RasterImageFormat.TifLzw,
,
,
,
,
CodecsSavePageMode.Overwrite);
image.Dispose();
codecs.Dispose();
}
LeadTools答题卡识别方案的更多相关文章
- 浅谈PHP答题卡识别(一)
最近期末考试考完了,我们也要放寒假了.于是突发奇想,想用PHP写一个答题卡识别程序.已经实现了一些,现分享给大家. 具体的步骤如下: 上传答题卡=>图片二值化(已实现)=>寻找定位点(已实 ...
- 机器学习进阶-案例实战-答题卡识别判 1.cv2.getPerspectiveTransform(获得投射变化后的H矩阵) 2.cv2.warpPerspective(H获得变化后的图像) 3.cv2.approxPolyDP(近似轮廓) 4.cv2.threshold(二值变化) 7.cv2.countNonezeros(非零像素点个数)6.cv2.bitwise_and(与判断)
1.H = cv2.getPerspectiveTransform(rect, transform_axes) 获得投射变化后的H矩阵 参数说明:rect表示原始的位置左上,右上,右下,左下, tra ...
- 【4opencv】识别复杂的答题卡1(主要算法)
一.问题提出 由于GPY进行了纠偏,所以在采集的时候,就已经获得了质量较高的答题卡图片 下一步就是需要从这张图片中,识别出人眼识别出来的那些信息,并且将这个过程尽可能地鲁棒化,提高识别的准确率. 二. ...
- 识别简单的答题卡(Bubble sheet multiple choice scanner and test grader using OMR, Python and OpenCV——jsxyhelu重新整编)
该博客转自www.pyimagesearch.com,进行了相关修改补充. Over the past few months I've gotten quite the number of reque ...
- opencv 识别答题卡
参考这个网站,然后自己 找了张图片试了一下 http://blog.csdn.net/cp562090732/article/details/47804003 // test.cpp : 定义控制台应 ...
- jquery css3问卷答题卡翻页动画效果
这个选项调查的特效以选项卡的形式,每答完一道题目自动切换到下一条,颇具特色.使用jQuery和CSS3,适合HTML5浏览器. 效果展示 http://hovertree.com/texiao/jqu ...
- 答题卡作文模块的一种方法-VSTO
在开始做之前,首先百度了Word有没有简单的生成方法,果然有--页面布局->稿纸设置->方格式稿纸 效果如下图所示.很规范,但是不是答题卡所需要的,因为这样会把所有页面都设置为这样的稿纸. ...
- Android实现选择题答题(包括单选、多选和答题卡)
在线答题demo,具体代码是一年多前完成的,比较简单,不再贴出,请参见Github. 主要功能: 单选:点击选项直接进入下一题.多选:选择多个选项,向右滑动进入下一题.答题卡:点击题号重新进入答题界面 ...
- WPF -- 一种圆形识别方案
本文介绍一种圆形的识别方案. 识别流程 判断是否为封闭图形: 根据圆的方程,取输入点集中的1/6.3/6.5/6处的三个点,求得圆的方程,获取圆心及半径: 取点集中的部分点,计算点到圆心的距离与半径的 ...
随机推荐
- 让IE的Button自适应文字宽度兼容
width:auto; overflow:visible; 这样将可以去掉IE按钮文字两边多余的空格,并按照自己设置的padding 来显示
- C#编码好习惯,献给所有热爱c#的同学
1. 避免将多个类放在一个文件里面. 2. 一个文件应该只有一个命名空间,避免将多个命名空间放在同一个文件里面. 3. 一个文件最好不要超过500行的代码(不包括机器产生的代码). 4. 一个方法的代 ...
- 杭州蓝松科技推出的安卓端的USB转串口调试助手, 欢迎下载使用
杭州蓝松科技推出的安卓端的USB转串口调试助手, 欢迎下载使用 下载地址:http://files.cnblogs.com/guobaPlayer/%E8%93%9D%E6%9D%BEUSB%E4%B ...
- 在spring拦截器中response输出html标签到页面
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object ...
- HTML5本地存储详解
HTML5storage提供了一种方式让网站能够把信息存储到你本地的计算机上,并再以后需要的时候进行获取.这个概念和cookie相似,区别是它是为了更大容量存储设计的.Cookie的大小是受限的,并且 ...
- Http压测工具wrk使用指南【转】
用过了很多压测工具,却一直没找到中意的那款.最近试了wrk感觉不错,写下这份使用指南给自己备忘用,如果能帮到你,那也很好. 安装 wrk支持大多数类UNIX系统,不支持windows.需要操作系统支持 ...
- FD.io VPP 技术Neutron VNF vRouter 实现
在OpenStack Neutron中主要有三种网络设备,路由器(Router),负载均衡器(LB)以及VPN,其中Router作为基础网络设备起到连接子网到子网.内网到外网的作用.不同子网之间的访问 ...
- 1.3 ODPS
来源(完全照搬.仅做记录):http://blog.itpub.net/26613085/viewspace-1327313/ 注册odps账号注册地址:http://www.aliyun.com/p ...
- 激活JetBrains PhpStorm 2016.3.2和JetBrains WebStorm 2016.3.2
1.打开 phpstorm 2.在激活界面选择license server 在线激活方式 输入:http://idea.imsxm.com/ 3.激活成功,打开使用
- [转]cmd-bat批处理命令延时方法
批处理延时启动的几个方法 方法一:ping 缺点:时间精度为1秒,不够精确 @echo off @ping 127.0.0.1 -n 6 >nul start gdh.txt 方法二:vbs s ...