在此主题▼

多线程与LEADTOOLS OCR

.NET OCR类库(Leadtools。光学字符识别)为LEADTOOLS提供的各种OCR运行时引擎提供了一个通用网关。使用OcrEngineManager。CreateEngine方法的实例所需的运行时引擎类型IOcrEngine

//创建一个给定类型的OCR引擎实例iocrenginemanager . createengine (ocrengintype . lead)//启动引擎并使用它…

的一个或多个实例IOcrDocument(或IOcrAutoRecognizeManager,从而创建IOcrDocuments内部)执行所有OCR操作所需:从加载源图像,如TIF和光栅PDF;分区;识别并导出为PDF、DOC、DOCX(2007/2010)、HTML或TXT最终文档格式。具体操作步骤如下:

//从引擎中创建一个OCR文档实例IOcrDocument ocrDocument= ocrEngineInstance.DocumentManager.CreateDocument();//添加页面,分区,识别并保存//到最终文件:ocrDocument.Pages.AddPages (imageFileName);ocrDocument。识别();ocrDocument。保存(documentFileName DocumentFormat.Pdf,);

//使用IOcrAutoRecognizeManager自动识别文档ocreengine . autorecognizemanager . createjob ((imageFileName, DocumentFormat.Pdf, documentFileName));ocrEngine.AutoRecognizeManager.RunJob (ocrJob);

所有这些操作都以独立于引擎运行时的方式执行,通过调用IOcrEngineIOcrAutoRecognizeManagerIOcrDocument以及其他与引擎运行时内部交互以执行所需操作的接口。

LEADTOOLS支持以下引擎运行时:

联系LEADTOOLS支持//m.ahtuanjie.com更多信息。

多线程OCR应用程序扫描有两种不同的创建方式:

使用多个引擎的多线程OCR应用程序

在此场景中,创建并使用专用的IOcrEngine实例。

所有平台中的所有LEADTOOLS OCR引擎都支持这种场景。

c#演示源代码可以在以下位置找到:

\Examples\OCR\DotNet\OcrMultithreadingDemo

使用多个文档的多线程OCR应用程序

IOcrDocument是一个完全包含的对象,用于加载源图像(如TIF或光栅PDF);然后进行分区、识别并将它们导出为PDF、DOC、DOCX(2007/2010)、HTML或TXT格式。因此,在OCR应用程序中实现多线程的另一种方法是创建一个实例IOcrEngine在主线程中。然后,在专用线程中对工作项进行排队,每个线程使用自己的线程IOcrDocument实例。IOcrAutoRecognizeManager是创建的助手接口吗IOcrDocumentS的内部,可以使用相同的方法如上所述。

下表显示了使用该场景时的一些约束:

OCR发动机类型 平台 多文档支持
导致引擎 x86 / x64

是的,同时有无限数量的文件。

随LEADTOOLS附带的OCR多线程演示源代码展示了这个场景的一个示例。

示例应用程序

下面列出了示例应用程序,然后推荐使用LEADTOOLS OCR引擎时实现线程安全和进程完整性的方法。

OCR HTTP Web服务版本1

HTTP Web服务应用程序通常以无会话模式运行。多个连接之间不能共享资源。

创建一个Web服务应用程序并添加以下方法:

(WebMethod)公共无效识别(字符串imageFileName, DocumentFormat格式,字符串documentFileName)//解锁支持字符串MY_LICENSE_FILE =“d: \ \ temp \ \ TestLic.lic”字符串MY_DEVELOPER_KEY =“xyz123abc”RasterSupport。SetLicense (MY_LICENSE_FILE MY_DEVELOPER_KEY);使用(iocrenginemanager . createengine (ocrengintype . lead))//启动它ocrEngine。启动(@“C: \ LEADTOOLS22 \ Bin \常见\ OcrLEADRuntime”);/ /识别ocreengine . autorecognizemanager . createjob (OcrAutoRecognizeJobData(imageFileName, format, documentFileName);ocrEngine.AutoRecognizeManager.RunJob (ocrJob);

在这个版本中,创建了HTTP web服务中的web方法来识别输入图像文件并以特定格式输出文档文件。

支持的引擎和平台:所有人。

优点:易于实现。

缺点:进程内存和资源在所有连接之间共享。

OCR HTTP Web服务版本2

创建一个执行OCR的x86控制台应用程序(myocrrecognition .exe):

静态无效主要(字符串[]参数)//获取参数字符串imageFileName = args[0];DocumentFormat format = (DocumentFormat)Enum。解析(typeof(DocumentFormat), arg游戏[1]);字符串documentFileName = args[2];//解锁支持字符串MY_LICENSE_FILE =“d: \ \ temp \ \ TestLic.lic”字符串MY_DEVELOPER_KEY =“xyz123abc”RasterSupport。SetLicense (MY_LICENSE_FILE MY_DEVELOPER_KEY使用(iocrenginemanager . createengine (ocrengintype . lead))//启动它ocrEngine。启动(@“C: \ LEADTOOLS22 \ Bin \常见\ OcrLEADRuntime”);/ /识别ocreengine . autorecognizemanager . createjob (OcrAutoRecognizeJobData(imageFileName, format, documentFileName);ocrEngine.AutoRecognizeManager.RunJob (ocrJob);

创建一个Web服务应用程序并添加以下方法:

(WebMethod)公共无效识别(字符串imageFileName, DocumentFormat格式,字符串documentFileName)//调用OCR控制台应用字符串参数=“\”“imageFileName +“\”“+ format.ToString() +“\”“+ documentFileName +“\”“的过程。开始(“MyOcrRecognize.exe”、参数);

在这个版本中,创建了两个应用程序:

  1. 控件创建的控制台应用程序IOcrEngine并执行OCR。选项通过标准命令行传递。

  2. HTTP web服务中的一种web方法,它为每个请求创建OCR应用程序的新实例。

支持的引擎和平台:所有人。

优点:完全的过程分离和安全。每个连接使用自己的专用进程进行OCR。

缺点:创建和销毁进程会影响性能。实现起来比第一个版本更复杂。

OCR Windows服务或服务器版本1

Windows服务或服务器通常以会话启用模式运行。资源可以在多个连接之间共享。服务器通常会创建一个线程来处理每个连接。

通常,Windows服务或服务器有以下方法:StartServer, ProcessRequest和StopServer。

这是服务/服务器的第一个版本实现:

无效StartServer ()//在这里解锁支持字符串MY_LICENSE_FILE =“d: \ \ temp \ \ TestLic.lic”字符串MY_DEVELOPER_KEY =“xyz123abc”RasterSupport。SetLicense (MY_LICENSE_FILE MY_DEVELOPER_KEY);无效StopServer ()无效ProcessRequest (字符串imageFileName, DocumentFormat格式,字符串documentFileName)//队列工作ThreadPool。QueueUserWorkItem (委托对象o)使用(iocrenginemanager . createengine (ocrengintype . lead))//启动它ocrEngine。启动(@“C: \ LEADTOOLS22 \ Bin \常见\ OcrLEADRuntime”);/ /识别ocreengine . autorecognizemanager . createjob (OcrAutoRecognizeJobData(imageFileName, format, documentFileName);ocrEngine.AutoRecognizeManager.RunJob (ocrJob);});

支持的引擎和平台:所有人。

优点:易于实现。

缺点:进程内存和资源在所有连接之间共享。

OCR Windows服务或服务器版本2

在版本2中,我们将重用之前的myocrrecognition .exe在一个单独的进程中执行OCR操作:

无效StartServer ()无效StopServer ()无效ProcessRequest (字符串imageFileName, DocumentFormat格式,字符串documentFileName)//队列工作ThreadPool。QueueUserWorkItem (委托对象o)//调用OCR控制台应用程序字符串参数=“\”“imageFileName +“\”“+ format.ToString() +“\”“+ documentFileName +“\”“的过程。开始(“MyOcrRecognize.exe”、参数);});

支持的引擎和平台:所有人。

优点:完全的过程分离和安全。每个连接使用自己的专用进程进行OCR。

缺点:创建和销毁进程会影响性能。实现起来比第一个版本更复杂。

OCR Windows服务或服务器版本3

在版本3中,引擎的多文档功能(如果支持的话)被用来执行真正的多线程:

// IOcrEngine的共享实例私人IOcrEngine ocrEngine;无效StartServer ()//解锁支持字符串MY_LICENSE_FILE =“d: \ \ temp \ \ TestLic.lic”字符串MY_DEVELOPER_KEY =“xyz123abc”RasterSupport。SetLicense (MY_LICENSE_FILE MY_DEVELOPER_KEY);ocrEngine = OcrEngineManager.CreateEngine(ocrengintype . lead));//启动它ocrEngine。启动(@“C: \ LEADTOOLS22 \ Bin \常见\ OcrLEADRuntime”);无效StopServer ()//停止OCR引擎ocrEngine.Dispose ();无效ProcessRequest (字符串imageFileName, DocumentFormat格式,字符串documentFileName)//队列工作ThreadPool。QueueUserWorkItem (委托对象o)/ /识别ocreengine . autorecognizemanager . createjob (OcrAutoRecognizeJobData(imageFileName, format, documentFileName);ocrEngine.AutoRecognizeManager.RunJob (ocrJob);});

支持的引擎和平台:所有人。

优点:真正的多线程。

缺点:对某些引擎中识别操作数量的限制。

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