/// <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答题卡识别方案的更多相关文章

  1. 浅谈PHP答题卡识别(一)

    最近期末考试考完了,我们也要放寒假了.于是突发奇想,想用PHP写一个答题卡识别程序.已经实现了一些,现分享给大家. 具体的步骤如下: 上传答题卡=>图片二值化(已实现)=>寻找定位点(已实 ...

  2. 机器学习进阶-案例实战-答题卡识别判 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 ...

  3. 【4opencv】识别复杂的答题卡1(主要算法)

    一.问题提出 由于GPY进行了纠偏,所以在采集的时候,就已经获得了质量较高的答题卡图片 下一步就是需要从这张图片中,识别出人眼识别出来的那些信息,并且将这个过程尽可能地鲁棒化,提高识别的准确率. 二. ...

  4. 识别简单的答题卡(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 ...

  5. opencv 识别答题卡

    参考这个网站,然后自己 找了张图片试了一下 http://blog.csdn.net/cp562090732/article/details/47804003 // test.cpp : 定义控制台应 ...

  6. jquery css3问卷答题卡翻页动画效果

    这个选项调查的特效以选项卡的形式,每答完一道题目自动切换到下一条,颇具特色.使用jQuery和CSS3,适合HTML5浏览器. 效果展示 http://hovertree.com/texiao/jqu ...

  7. 答题卡作文模块的一种方法-VSTO

    在开始做之前,首先百度了Word有没有简单的生成方法,果然有--页面布局->稿纸设置->方格式稿纸 效果如下图所示.很规范,但是不是答题卡所需要的,因为这样会把所有页面都设置为这样的稿纸. ...

  8. Android实现选择题答题(包括单选、多选和答题卡)

    在线答题demo,具体代码是一年多前完成的,比较简单,不再贴出,请参见Github. 主要功能: 单选:点击选项直接进入下一题.多选:选择多个选项,向右滑动进入下一题.答题卡:点击题号重新进入答题界面 ...

  9. WPF -- 一种圆形识别方案

    本文介绍一种圆形的识别方案. 识别流程 判断是否为封闭图形: 根据圆的方程,取输入点集中的1/6.3/6.5/6处的三个点,求得圆的方程,获取圆心及半径: 取点集中的部分点,计算点到圆心的距离与半径的 ...

随机推荐

  1. bootstrap IE8 相互兼容

    针对 IE8 仍然需要额外引入 Respond.js 文件(由于仍然利用了浏览器对媒体查询(media query)的支持,因此还需要做处理) <html lang="zh-cn&qu ...

  2. 照片处理软件(iSee图片专家) 3.930 中文免费版

    软件名称: 照片处理软件(iSee图片专家) 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win 32位/64位 软件大小: 13.5MB 图片预览: 软件简介: iSee图片专家,免费一 ...

  3. shell中的特殊符号

    Shell符号及各种解释对照表: Shell符号 使用方法及说明 # 注释符号(Hashmark[Comments]) 1.在shell文件的行首,作为shebang标记,#!/bin/bash; 2 ...

  4. mac下 redis安装使用

    安装redis:brew install redis 开启redis服务:redis-server /usr/local/etc/redis.conf 重新打开一个命令窗口:redis-cli ,进入 ...

  5. 【Python】使用多个迭代器

    如果要达到多个迭代器的效果,__iter__()只需替迭代器定义新的状态对象,而不是返回self class SkipIterator: def __init__(self, wrapped): se ...

  6. ubuntu 14.04—解决软件中心进度条卡死的问题

    软件中心下载安装软件进度条卡住了,这时候解决方法为: 先解锁: sudo rm -rf /var/lib/dpkg/lock 如果此时开启软件中心,发现进度还在, 那么我们需要找到相关的进程关闭他,使 ...

  7. 每天学习一点点...css...

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. Framebuffer的配置及应用——先转载留着,以后一定要弄懂

    http://blog.csdn.net/tju355/article/details/6881389   借助于framebuffer,我们能够在console下面作很多事情.首先下载framebu ...

  9. 好用的meta标签

    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> 保证中文在网 ...

  10. Nginx下$_POST获取不到数据的解决方法

    运行环境:windows+phpstorm+Nginx 步骤1:找到php.ini 配置文件,查找enable_post_data_reading变量,把Off改为On,确保其打开状态: 步骤2:将p ...