公共接口IOcrOmrOptions
公共接口IOcrOmrOptions
@接口LTOcrOmrOptions: NSObject
公共类OcrOmrOptions
公共接口类IOcrOmrOptions
在LEADTOOLS中使用OMR需要一个特殊的密钥来解锁OMR功能。有关更多信息,请参阅解锁特殊的LEAD功能.
方法的实例IOcrOmrOptions接口当前在引擎调用中使用IOcrSpellCheckManager。OmrOptions财产。
使用IOcrOmrOptions界面更改以下OMR设置:
页面的OMR区域是具有OcrZone。ZoneType设置为OcrZoneType。有机磁共振.
所有LEADTOOLS OCR引擎都支持OMR。但是,只有LEADTOOLS OCR模块- LEAD引擎支持在OCR页面自动分区期间自动检测OMR区域。要设置OMR区域自动检测,请确保“Detect复选框”是调用前包含的Recognition.Zoning.Options设置标志之一IOcrPage。AutoZone或IOcrPage。识别.其余的OCR引擎要求通过设置边界手动将OMR区域添加到页面OcrZone。界限和如上所述的区域类型。方法将区域添加到页面IOcrPage。区调用前的收集IOcrPage。识别.
有关更多信息,请参阅在LEADTOOLS .NET OCR中使用OMR.
本例将加载TIF图像,创建OMR区域并识别它们。
使用Leadtools;
使用Leadtools.Codecs;
使用Leadtools.Ocr;
使用Leadtools.Forms.Common;
使用Leadtools.Document.Writer;
使用Leadtools.WinForms;
公共无效OcrOmrExample ()
{
//创建引擎实例
使用(IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(ocrengintype . lead))
{
//使用默认参数启动引擎
ocrEngine。启动(零,零,零, LEAD_VARS.OcrLEADRuntimeDir);
//我们将在Images文件夹中使用LEADTOOLS附带的Mixed.tif。此图像有3个OMR复选标记
字符串tifFileName = Path.Combine(LEAD_VARS.ImagesDir,“Mixed.tif”);
//创建一个OCR文档
使用(IOcrDocument ocrDocument = ocreengine . documentmanager . createdocument ())
{
//向文档中添加一页
IOcrPage ocrPage = ocrDocument.Pages.AddPage(tifFileName,零);
//添加OMR分区。我们之前计算了这幅图像的3个OMR区域边界
LeadRect[] omrBounds =
{
新LeadRect(484, 98, 84, 78),
新LeadRect(494, 184, 70,54),
新LeadRect(498, 244, 76, 76)
};
foreach(LeadRect omrBound在omrBounds)
{
//创建一个新的OMR区域并将其添加到页面
OcrZone zone =新OcrZone ();
区。ZoneType = OcrZoneType.Omr;
区。Bounds = omrBound;
ocrPage.Zones.Add(区);
}
//显示我们有多少个区域和它们的属性
控制台。WriteLine ("页面有{0}个区域:", ocrPage.Zones.Count);
为(intI = 0;i < ocrPage.Zones.Count;我+ +)
{
OcrZone zone = ocrPage.Zones[i];
控制台。WriteLine ({0}:类型:{1}, i + 1, zone.ZoneType);
}
//改变OMR选项(自动检测最高灵敏度的帧)
iocroroptions omrOptions = ocreengine . zonmanager . omrOptions;
omrOptions。FrameDetectionMethod = OcrOmrFrameDetectionMethod.Auto;
omrOptions。灵敏度=光学字符识别有机磁共振灵敏度.最高;
//获取我们在引擎中用来表示填充/未填充状态的字符
字符filledCode = omrOptions.GetStateRecognitionCharacter(OcrOmrZoneState.Filled);
字符unfilledCode = omrOptions.GetStateRecognitionCharacter(OcrOmrZoneState.Unfilled);
//识别页面
控制台。WriteLine (“认识……”);
ocrPage。识别(零);
IOcrPageCharacters pageCharacters = ocrPage.GetRecognizedCharacters();
foreach(IOcrZoneCharacters zoneCharacters在pageCharacters)
{
//我们必须有一个字符(每个OMR区的状态)
Debug.Assert (zoneCharacters。Count == 1);
OcrCharacter character = zoneCharacters[0];
Debug.Assert(字符。Code == filledCode ||字符。代码== unfilledCode);
控制台。WriteLine (“{0}:状态:{1},信心:{2}”, zoneCharacters。ZoneIndex,的性格。Code == filledCode ?“填充”:“空”, character.Confidence);
}
//现在使用OMR状态的默认字符表示将结果保存为PDF(0表示未填充,1表示已填充)
字符串pdfFileName1 = Path.Combine(LEAD_VARS.ImagesDir,“Omr_Results1.pdf”);
控制台。WriteLine (“存到{0}…”, pdfFileName1);
ocrDocument。保存(pdfFileName1 DocumentFormat.Pdf,零);
//更改OMR状态的字符表示为Y表示未填充,X表示已填充
omrOptions.SetStateRecognitionCharacter (OcrOmrZoneState.Unfilled“Y”);
omrOptions.SetStateRecognitionCharacter (OcrOmrZoneState.Filled“X”);
字符串pdfFileName2 = Path.Combine(LEAD_VARS.ImagesDir,“Omr_Results2.pdf”);
控制台。WriteLine (“存到{0}…”, pdfFileName2);
ocrDocument。保存(pdfFileName2 DocumentFormat.Pdf,零);
}
//关闭引擎
//注意:如果引擎已经启动,调用Dispose也会自动关闭引擎
ocrEngine.Shutdown ();
}
}
静态类LEAD_VARS
{
公共常量字符串ImagesDir =@“C: \ LEADTOOLS21 \ Resources \图片”;
公共常量字符串OcrLEADRuntimeDir =@“C: \ LEADTOOLS21 \ Bin \常见\ OcrLEADRuntime”;
}
进口Leadtools
进口Leadtools。编解码器
进口Leadtools。光学字符识别
进口Leadtools。形式
进口Leadtools.Document.Writer
进口Leadtools。WinForms
公共子OcrOmrExample ()
创建引擎的一个实例
使用ocrEngine作为IOcrEngine = OcrEngineManager.CreateEngine(ocrengintype . lead)
使用默认参数启动引擎
ocrEngine。启动(没有什么,没有什么,没有什么LEAD_VARS.OcrLEADRuntimeDir)
“我们将在图片文件夹中使用LEADTOOLS附带的mix .tif。此图像有3个OMR复选标记
昏暗的tifFileName作为字符串= Path.Combine (LEAD_VARS.ImagesDir“Mixed.tif”)
创建一个OCR文档
使用ocrDocument作为IOcrDocument = ocreengine . documentmanager . createdocument ()
在文档中添加一页
昏暗的ocrPage作为IOcrPage = ocrDocument.Pages.AddPage(tifFileName,没有什么)
“增加OMR区域。我们之前计算了这幅图像的3个OMR区域边界
昏暗的omrBounds作为LeadRect() = {
新LeadRect(484, 98, 84, 78),
新LeadRect(494, 184, 70,54),
新LeadRect(498, 244, 76,76)}
为每一个omrBound作为LeadRect在omrBounds
创建一个新的OMR区域并将其添加到页面中
昏暗的区作为新OcrZone ()
区。ZoneType = OcrZoneType。有机磁共振
区。Bounds = omrBound
ocrPage.Zones.Add(区)
下一个
“展示我们有多少个区域和它们的属性
控制台。WriteLine ("页面有{0}个区域:", ocrPage.Zones。数)
为我作为整数= 0来ocrPage.Zones。数- 1
昏暗的区作为OcrZone = ocrPage.Zones(i)
控制台。WriteLine ({0}:类型:{1}, i + 1, zone.ZoneType)
下一个
改变OMR选项(自动检测最高灵敏度的帧)
昏暗的omrOptions作为iocroroptions = ocreengine . zonmanager . omroptions
omrOptions。FrameDetectionMethod = OcrOmrFrameDetectionMethod。汽车
omrOptions。灵敏度=光学字符识别有机磁共振灵敏度.最高
获取我们在引擎中使用的字符来表示填充/未填充状态
昏暗的filledCode作为字符= omrOptions.GetStateRecognitionCharacter (OcrOmrZoneState.Filled)
昏暗的unfilledCode作为字符= omrOptions.GetStateRecognitionCharacter (OcrOmrZoneState.Unfilled)
识别页面
控制台。WriteLine (“认识……”)
ocrPage。识别(没有什么)
昏暗的pageCharacters作为IOcrPageCharacters = ocrPage.GetRecognizedCharacters()
为每一个zoneCharacters作为IOcrZoneCharacters在pageCharacters
我们必须有一个字符(每个OMR区域的状态)
Debug.Assert (zoneCharacters。数= 1)
昏暗的字符作为OcrCharacter = zoneCharacters(0)
Debug.Assert(字符。Code = filledCodeOrElse的性格。代码= unfilledCode)
控制台。WriteLine (“{0}:状态:{1},信心:{2}”,
zoneCharacters。ZoneIndex,
如果(性格。代码= filledCode,“填充”,“空”),
character.Confidence)
下一个
'现在使用OMR状态的默认字符表示将结果保存为PDF(0表示未填充,1表示填充)
昏暗的pdfFileName1作为字符串= Path.Combine (LEAD_VARS.ImagesDir“Omr_Results1.pdf”)
控制台。WriteLine (“存到{0}…”pdfFileName1)
ocrDocument。保存(pdfFileName1 DocumentFormat.Pdf,没有什么)
将OMR状态的字符表示改为Y表示未填充,X表示填充
omrOptions.SetStateRecognitionCharacter (OcrOmrZoneState.Unfilled“Y”c)
omrOptions.SetStateRecognitionCharacter (OcrOmrZoneState.Filled“X”c)
昏暗的pdfFileName2作为字符串= Path.Combine (LEAD_VARS.ImagesDir“Omr_Results2.pdf”)
控制台。WriteLine (“存到{0}…”pdfFileName2)
ocrDocument。保存(pdfFileName2 DocumentFormat.Pdf,没有什么)
结束使用
关闭引擎
注意:调用Dispose也会自动关闭引擎,如果它已经启动
ocrEngine.Shutdown ()
结束使用
结束子
公共NotInheritable类LEAD_VARS
公共常量ImagesDir作为字符串=“C: \ LEADTOOLS21 \ Resources \图片”
公共常量OcrLEADRuntimeDir作为字符串=“C: \ LEADTOOLS21 \ Bin \常见\ OcrLEADRuntime”
结束类
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗网络查看器net
188宝金博怎么下载
支持的平台上
.NET、Java、Android和iOS/macOS程序集
C API/ c++类库
HTML5 JavaScript库
您的邮件已发送给技术支持!应该有人联系!如果你的事情很紧急,请回来聊天。
聊天时间:
周一至周五,美国东部时间上午8:30至下午6:00
感谢您的反馈!
请再次填写表格,开始新的聊天。
所有代理目前都离线。
聊天时间:
星期一至星期五
美国东部时间上午8:30 -下午6点
如需与我们联系,请填写此表格,我们将通过电子邮件与您联系。