使用LEADTOOLS .NET OCR编程

LEADTOOLS OCR库提供了将光学字符识别(OCR)技术集成到应用程序中的方法。OCR用于将位图文档图像处理为文本。

系统安装了LEADTOOLS . net OCR工具包后,就可以开始使用LEADTOOLS OCR进行编程了。请注意,在使用OCR属性、方法和事件之前,必须解锁OCR特性。有关解锁LEAD功能的更多信息,请参阅解锁特殊的LEAD功能

要开始在应用程序中使用。net OCR的LEADTOOLS,请添加对Leadtools.Ocr.dll而且Leadtools.Document.Writer.dll程序集。net应用程序。这些程序集包含用于使用LEADTOOLS OCR编程的各种接口、类、结构和委托。

类的实例之后动态加载的独立程序集中存储与引擎接口的代码IOcrEngine完成接口的创建。因此,请确保所使用的引擎组件位于Leadtools.Ocr.dll组装.如果需要,可以将引擎程序集作为项目的引用添加到项目中,以自动检测依赖项,尽管LEADTOOLS并不需要这样做。

LEADTOOLS提供了以下方法:

使用OCR引擎

LEADTOOLS使用OCR句柄与OCR引擎和包含页面列表的OCR文档交互。OCR句柄是LEADTOOLS OCR和安装在系统上的OCR引擎之间的通信会话。这个OCR句柄是一个内部结构,它包含用于识别、获取和设置信息以及文本验证的所有必要信息。

识别的一般步骤概要

  1. 类型的引擎类型并创建实例IOcrEngine接口。有关更多信息,请参阅创建OCR引擎实例
  2. 启动OCR引擎IOcrEngine。启动方法。有关更多信息,请参阅启动和关闭引擎
  3. 可选的。如果需要保存,则建立一个包含一页或多页的OCR文档。有关更多信息,请参阅使用OCR页面
  4. 可选的。在页面上建立区域(手动或自动)。(这是可选的。有或没有区域都可以识别页面。)有关更多信息,请参阅使用OCR区域
  5. 可选的。设置OCR引擎使用的活动语言。(默认为英文)。有关更多信息,请参阅使用OCR语言
  6. 可选的。设置拼写检查的属性。有关更多信息,请参阅OCR拼写语言词典
  7. 可选的。设置任何特殊的识别模块选项。只有当页面包含可以自动或手动创建的区域时,才需要这样做。有关更多信息,请参阅识别OCR页面而且在LEADTOOLS .NET OCR中使用OMR
  8. 识别。有关更多信息,请参阅识别OCR页面
  9. 可选的。如果需要,保存识别结果。结果可以保存到文件或内存中。有关更多信息,请参阅识别OCR页面
  10. 完成后关闭OCR引擎。有关更多信息,请参阅启动和关闭引擎

步骤4、5、6和7几乎可以按任何顺序完成,只要这些步骤是在启动OCR引擎后执行的,并且是在识别页面之前执行的。

有关发动机组件的更多信息,请参阅OcrEngineType而且应用程序中包含的文件

使用LEADTOOLS OCR引擎的方法

代码示例

c#
VB

c#

//假设你在这个类的开头添加了"using Leadtools.Codecs;", "using Leadtools.Ocr;"和"using Leadtools.Document.Writer;// ***步骤1:指定引擎类型并创建IOcrEngine接口的实例。//这个例子将使用LEADTOOLS OCR模块- LEAD引擎,并在同一个进程中使用它IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(ocrengintype . lead);// ***步骤2:启动引擎。//使用默认参数ocrEngine。启动(@“C: \ LEADTOOLS22 \ Bin \常见\ OcrLEADRuntime”);// ***步骤3:创建一个包含一个或多个页面的OCR文档。IOcrDocument ocrDocument = ocreengine . documentmanager . createdocument ();//将多页TIF图像的所有页面添加到文档中ocrDocument.Pages.AddPages (@“C: \ LEADTOOLS22 \资源\ \ Ocr.tif图像”1, -1,);// ***步骤4:(可选)在页面上建立区域,手动或自动//自动分区ocrDocument.Pages.AutoZone ();// ***步骤5:(可选)设置OCR引擎使用的活动语言//同时启用英语和德语ocrEngine.LanguageManager.EnableLanguages (字符串[] {“en”“德”});// ***步骤6(可选)设置拼写检查引擎//启用拼写检查系统ocreengine . spellcheckmanager . spellcheckengine = OcrSpellCheckEngine.Native;// ***步骤7:(可选)设置任何特殊识别模块选项//将第一页的第一个分区的分区方法设置为Graphic,这样它就不会被识别OcrZone OcrZone = ocrDocument.Pages[0].Zones[0];ocrZone。ZoneType = OcrZoneType.Graphic;ocrDocument.Pages[0]。[0] = ocrZone;// ***步骤8:识别ocrDocument.Pages.Recognize ();// ***步骤9:保存识别结果//将结果保存为PDF文件ocrDocument。保存(@“C: \ LEADTOOLS22 \资源\ \ Document.pdf图像”DocumentFormat.Pdf,);ocrDocument.Dispose ();// ***步骤10:完成后关闭OCR引擎ocrEngine.Shutdown ();ocrEngine.Dispose ();

VB

假设你补充了一句“Leadtools进口。Ocr”而且“进口Leadtools.Document.Writer”在一开始***步骤1:指定引擎类型并创建IOcrEngine的实例接口这个例子将使用LEADTOOLS OCR模块- LEAD引擎并使用它同样的过程Dim ocrEngine As IOcrEngine = OcrEngineManager.CreateEngine(ocrengintype . lead)***第二步:启动引擎。使用默认的参数ocrEngine。启动(Nothing, Nothing, Nothing,“C: \ LEADTOOLS22 \ Bin \常见\ OcrLEADRuntime”***步骤3:创建一个包含一个或多个页面的OCR文档将ocrDocument设置为IOcrDocument = ocreengine . documentmanager . createdocument ()将多页TIF图片的所有页面添加到文档中ocrDocument.Pages.AddPages (“C: \ LEADTOOLS22 \资源\ \ Ocr.tif图像”, 1, -1,无)' ***步骤4(可选)配置分区手动或自动的页面自动分区ocrDocument.Pages.AutoZone(没有)' ***步骤5(可选)设置要使用的活动语言通过OCR引擎“同时使用英语和德语ocrEngine.LanguageManager.EnableLanguages (New String() {“en”“德”})' ***步骤6(可选)设置拼写检查引擎启用拼写检查引擎ocreengine . spellcheckmanager . spellcheckengine = OcrSpellCheckEngine。本地的' ***步骤7(可选)设置任何特殊识别模块选项改变分区方法第一个区域第一个页面是图形,所以它将不会被识别occrzone = ocrDocument.Pages(0).Zones(0)ocrZone。ZoneType = OcrZoneType。图形ocrDocument.Pages(0).Zones(0) = ocrZone***步骤8:识别文件ocrDocument.Pages.Recognize(没有)' ***步骤9:保存识别结果将结果保存到PDF文件中ocrDocument。保存(“C: \ LEADTOOLS22 \资源\ \ Document.pdf图像”, DocumentFormat.Pdf,无)ocrDocument.Dispose ()***步骤10:完成后关闭OCR引擎ocrEngine.Shutdown ()ocrEngine.Dispose ()

下面的示例演示了使用LEADTOOLS OCR引擎的一些不同方式。

使用IOcrPage

OCR图像文件(或LEADTOOLS)RasterImage对象)并获取具有可选格式和位置信息的文本。在此模式下,anIOcrDocument对象不需要,因为结果不会被保存。使用IOcrEngine。CreatePage方法快速创建IOcrPageRasterImage直接:调用必要的方法(例如IOcrPage。识别),然后直接使用IOcrPage。GetTextIOcrPage。GetRecognizedCharacters

注意:该模式仅被LEADTOOLS OCR模块- LEAD引擎支持。调用IOcrEngine。CreatePage使用任何其他OCR引擎都会导致抛出异常。

下面的示例使用没有文档的OCR页面。

c#
VB

c#

//创建引擎实例使用(IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(ocrengintype . lead))//启动引擎ocrEngine。启动(@“C: \ LEADTOOLS22 \ Bin \常见\ OcrLEADRuntime”);//加载第一页作为RasterImageRasterImage = ocreengine . rastercodecsinstance . load (@“C: \ LEADTOOLS22 \资源\ \ Ocr.tif图像”1);//从这个图像创建一个OCR页面,转移RasterImage对象的所有权使用(IOcrPage ocrPage = ocrEngine。CreatePage(rasterImage, OcrImageSharingMode.AutoDispose))//识别页面ocrPage。识别();//显示所有区域的文本intzoneIndex = 0;zoneIndex < ocrPage.Zones.Count;zoneIndex + +)字符串text = ocrPage.GetText(zoneIndex);Console.WriteLine(文本);//当调用Dispose时,引擎将自动关闭

VB

'创建引擎实例使用ocrEngine作为IOcrEngine = OcrEngineManager.CreateEngine(ocrengintype . lead)“发动引擎ocrEngine。启动(Nothing, Nothing, Nothing,“C: \ LEADTOOLS22 \ Bin \常见\ OcrLEADRuntime”’加载第一页作为一个RasterImage将rasterImage作为rasterImage = ocreengine . rastercodecsinstance . load (“C: \ LEADTOOLS22 \资源\ \ Ocr.tif图像”, 1)创建一个OCR页面image,转移RasterImage的所有权对象使用ocrPage作为IOcrPage = ocrEngine。CreatePage(RasterImage,OcrImageSharingMode.AutoDispose)识别页面ocrPage.Recognize(没有)显示文本所有区域For zoneIndex As Integer = 0 To ocrPage.Zones.Count - 1暗文本作为字符串= ocrPage.GetText(zoneIndex)Console.WriteLine(文本)下一个结束使用'当处置时,发动机将自动关闭被称为结束使用

使用IOcrDocument

的实例将OCR结果保存到PDF或DOCX等最终文档中IOcrDocument.可以将一个或多个OCR页面添加到文档中,然后添加各种保存方法可以被调用来创建最终文档。

IOcrDocument有两种用法:

基于内存的文件

在基于内存的模式下,OCR页在保存之前需要在内存中。当文档有大量页面并且是基于文件的文档或LEADTOOLS临时文件格式时,不建议这样做DocumentFormat。有限公司是必需的。

在基于内存的IOcrDocument,IOcrPageCollection保存页面。任何或所有页面都可以在任何时候被识别,并且可以随意添加或删除页面。

下面的示例使用基于内存的文档创建多页PDF文件。注意在保存操作期间,所有页面是如何保存在内存中的。

c#
VB

c#

//创建引擎实例使用(IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(ocrengintype . lead))//启动引擎ocrEngine。启动(@“C: \ LEADTOOLS22 \ Bin \常见\ OcrLEADRuntime”);//在内存中创建OCR文档使用(IOcrDocument ocrDocument = ocreengine . documentmanager . createdocument (, OcrCreateDocumentOptions.InMemory))字符串imageFile =@“C: \ LEADTOOLS22 \资源\ \ Ocr.tif图像”//将所有页面添加到文档中ocrDocument.Pages.AddPages (imageFile, 1, -1,);//识别所有页面ocrDocument.Pages.Recognize ();//将识别结果保存为PDF格式ocrDocument。保存(@“C: \ LEADTOOLS22 \资源\ \ Document.pdf图像”DocumentFormat.Pdf,);

VB

'创建引擎实例使用ocrEngine作为IOcrEngine = OcrEngineManager.CreateEngine(ocrengintype . lead)“发动引擎ocrEngine。启动(Nothing, Nothing, Nothing,“C: \ LEADTOOLS22 \ Bin \常见\ OcrLEADRuntime”创建OCR文档内存IOcrDocument = ocreengine . documentmanager。CreateDocument(没什么,OcrCreateDocumentOptions.InMemory)将imageFile作为字符串=“C: \ LEADTOOLS22 \资源\ \ Ocr.tif图像”将所有页面添加到文档中ocrDocument.Pages.AddPages (imageFile, 1, -1, Nothing)“认出所有的书页ocrDocument.Pages.Recognize(没有)保存识别结果PDF格式ocrDocument。保存(“C: \ LEADTOOLS22 \资源\ \ Document.pdf图像”, DocumentFormat.Pdf,无)结束使用结束使用

基于文件的文件

在基于文件的文档模式下,OCR页面在保存前不需要在内存中。当文档有大量页面时,这种模式是最好的。

在基于文件的IOcrDocument模式下,IOcrPageCollection仅存储页面的视图。添加页面时,将当前识别数据的快照保存到文档中。不能再修改此数据,也不再需要该页。页面必须在添加到文档之前被识别,并且只能添加页面。它们无法被移除。

下面的示例使用基于文件的文档创建多页PDF文件。请注意,页面在被识别后将被处理,并且在保存操作期间不需要它们。

c#
VB

c#

//创建引擎实例使用(IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(ocrengintype . lead))//启动引擎ocrEngine。启动(@“C: \ LEADTOOLS22 \ Bin \常见\ OcrLEADRuntime”);//创建一个基于文件的OCR文档使用(IOcrDocument ocrDocument = ocreengine . documentmanager . createdocument (, OcrCreateDocumentOptions.AutoDeleteFile))字符串imageFile =@“C: \ LEADTOOLS22 \资源\ \ Ocr.tif图像”//获取文档的页数intpageCount = ocreengine . rastercodecsinstance . gettotalpages (imageFile);//创建一个页面intPage = 1;page <= pageCount;+ +页)//加载一个光栅图像RasterImage = ocreengine . rastercodecsinstance . load (imageFile, page);//从这个图像创建一个OCR页面,转移RasterImage对象的所有权使用(IOcrPage ocrPage = ocrEngine。CreatePage(rasterImage, OcrImageSharingMode.AutoDispose))//识别页面ocrPage。识别();//添加到文档中ocrDocument.Pages.Add (ocrPage);//页面将在这里被释放,其内存将被释放//将识别结果保存为PDF格式ocrDocument。保存(@“C: \ LEADTOOLS22 \资源\ \ Document.pdf图像”DocumentFormat.Pdf,);

VB

'创建引擎实例使用ocrEngine作为IOcrEngine = OcrEngineManager.CreateEngine(ocrengintype . lead)“发动引擎ocrEngine。启动(Nothing, Nothing, Nothing,“C: \ LEADTOOLS22 \ Bin \常见\ OcrLEADRuntime”创建一个基于文件的OCR文档IOcrDocument = ocreengine . documentmanager。CreateDocument(没什么,OcrCreateDocumentOptions.AutoDeleteFile)将imageFile作为字符串=“C: \ LEADTOOLS22 \资源\ \ Ocr.tif图像”“记下页数文档Dim pageCount As Integer = ocreengine . rastercodecsinstance . gettotalpages (imageFile)创建一个页面对于page As Integer = 1到pageCount'加载一个光栅图像将rasterImage作为rasterImage = ocreengine . rastercodecsinstance . load (imageFile, page)创建一个OCR页面image,转移RasterImage的所有权对象使用ocrPage作为IOcrPage = ocrEngine。CreatePage(rasterImage, OcrImageSharingMode.AutoDispose)识别页面ocrPage.Recognize(没有)把它添加到文档中ocrDocument.Pages.Add (ocrPage)'页面将在这里被释放,它的内存将被释放结束使用下一个保存识别结果PDF格式ocrDocument。保存(@“C: \ LEADTOOLS22 \资源\ \ Document.pdf图像”, DocumentFormat.Pdf,无)结束使用结束使用

基于文件的文档还可以保存并重新加载,以继续添加页面,或在以后将其转换为最终的文档格式。下面的例子展示了如何做到这一点。

c#
VB

c#

私人静态无效Test4 ()//创建引擎实例IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(ocrengintype . lead);//启动引擎ocrEngine。启动(@“C: \ LEADTOOLS22 \ Bin \常见\ OcrLEADRuntime”);字符串imageFile1 =@“C: \ LEADTOOLS22 \资源\ \ Ocr1.tif图像”字符串imageFile2 =@“C: \ LEADTOOLS22 \资源\ \ Ocr2.tif图像”//创建一个基于文件的OCR文档//传递一个文件名(文件名将被重复使用)并告诉文档不要删除它字符串documentFile =@“C: \ LEADTOOLS22 \资源\ \ document.bin图像”使用(IOcrDocument ocrDocument = ocreengine . documentmanager . createdocument (documentFile, OcrCreateDocumentOptions.None))//确认文件没有任何页面System.Diagnostics.Debug.Assert (ocrDocument.Pages。Count == 0);//添加一个页面RasterImage = ocreengine . rastercodecsinstance . load (imageFile1, 1);使用(IOcrPage ocrPage = ocrEngine。CreatePage(rasterImage, OcrImageSharingMode.AutoDispose))ocrPage。识别();ocrDocument.Pages.Add (ocrPage);//这里文件被处理,但文件不会被删除//重新加载文档使用(IOcrDocument ocrDocument = ocreengine . documentmanager . createdocument (documentFile, OcrCreateDocumentOptions.LoadExisting))//确认文件只有一页System.Diagnostics.Debug.Assert (ocrDocument.Pages。Count == 1);//添加另一个页面RasterImage = ocreengine . rastercodecsinstance . load (imageFile2, 1);使用(IOcrPage ocrPage = ocrEngine。CreatePage(rasterImage, OcrImageSharingMode.AutoDispose))ocrPage。识别();ocrDocument.Pages.Add (ocrPage);//确认文档有2页System.Diagnostics.Debug.Assert (ocrDocument.Pages。Count == 2);//保存文档ocrDocument。保存(@“C: \ LEADTOOLS22 \资源\ \ Document.pdf图像”DocumentFormat.Pdf,);//结果将是一个两页的PDF文件//最后,删除文档文件System.IO.File.Delete (documentFile);ocrEngine.Dispose ();

VB

'创建引擎实例Dim ocrEngine As IOcrEngine = OcrEngineManager.CreateEngine(ocrengintype . lead)“发动引擎ocrEngine。启动(Nothing, Nothing, Nothing,“C: \ LEADTOOLS22 \ Bin \常见\ OcrLEADRuntime”Dim imageFile1 As String =“C: \ LEADTOOLS22 \资源\ \ Ocr1.tif图像”Dim imageFile2 As String =“C: \ LEADTOOLS22 \资源\ \ Ocr2.tif图像”创建一个基于文件的OCR文档传递一个文件名(文件名会被重复使用),并告诉文档不要删除它Dim documentFile As String =“C: \ LEADTOOLS22 \资源\ \ document.bin图像”IOcrDocument = ocreengine . documentmanager。CreateDocument (documentFile OcrCreateDocumentOptions.None)'确认文件没有任何页面System.Diagnostics.Debug.Assert (ocrDocument.Pages。计数= 0)增加一页将rasterImage作为rasterImage = ocreengine . rastercodecsinstance . load (imageFile1, 1)使用ocrPage作为IOcrPage = ocrEngine。CreatePage(rasterImage, OcrImageSharingMode.AutoDispose)ocrPage.Recognize(没有)ocrDocument.Pages.Add (ocrPage)结束使用文件在这儿已处理,但文件不会被删除结束使用'重新加载文档IOcrDocument = ocreengine . documentmanager。CreateDocument (documentFile OcrCreateDocumentOptions.LoadExisting)’确认文件只有一页System.Diagnostics.Debug.Assert (ocrDocument.Pages。计数= 1)再加一页将rasterImage作为rasterImage = ocreengine . rastercodecsinstance . load (imageFile2, 1)使用ocrPage作为IOcrPage = ocrEngine。CreatePage(rasterImage, OcrImageSharingMode.AutoDispose)ocrPage.Recognize(没有)ocrDocument.Pages.Add (ocrPage)结束使用’确认文件有2页System.Diagnostics.Debug.Assert (ocrDocument.Pages。计数= 2)保存文档ocrDocument。保存(“C: \ LEADTOOLS22 \资源\ \ Document.pdf图像”, DocumentFormat.Pdf,无)结果将是一份两页的PDF文件结束使用最后,删除文档文件System.IO.File.Delete (documentFile)ocrEngine.Dispose ()

使用IOcrAutoRecognizeManager

前面的所有技术都需要低级代码来加载页面、识别页面并将其添加到文档中。LEADTOOLS OCR引擎还支持使用一次性“发射并忘记”执行上述相同的任务。IOcrAutoRecognizeManager接口。在这个高级OCR中,输入图像使用最佳选项和一种方法直接转换为输出格式。

c#
VB

c#

//创建引擎实例使用(IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(ocrengintype . lead))//启动引擎ocrEngine。启动(@“C: \ LEADTOOLS22 \ Bin \常见\ OcrLEADRuntime”);//将多页TIF图像转换为PDF文档ocrEngine.AutoRecognizeManager.Run (@“C: \ LEADTOOLS22 \资源\ \ Ocr.tif图像”@“C: \ LEADTOOLS22 \资源\ \ Document.pdf图像”DocumentFormat.Pdf,);

VB

'创建引擎实例使用ocrEngine作为IOcrEngine = OcrEngineManager.CreateEngine(ocrengintype . lead)“发动引擎ocrEngine。启动(Nothing, Nothing, Nothing,“C: \ LEADTOOLS22 \ Bin \常见\ OcrLEADRuntime”把多页的TIF图片转换成PDF文档ocrEngine.AutoRecognizeManager.Run (_“C: \ LEADTOOLS22 \资源\ \ Ocr.tif图像”, _“C: \ LEADTOOLS22 \资源\ \ Document.pdf图像”, _DocumentFormat.Pdf, _没什么,_没有什么)结束使用

另请参阅

LEADTOOLS成像、医疗和文档
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2023领德科技有限公司版权所有。