LEADTOOLS 表单识别实施策略,面向大型企业





0/5 (0投票)
在本白皮书中,我们将讨论处理大量主表单的几种策略,以及如何利用 LEADTOOLS 表单识别 SDK 快速准确地处理您的表单。
引言
无数公司依赖纸质表格来收集客户、患者、学生等的信息。自动化表单识别可用于处理从简单的明信片到复杂的多页税表等各种内容,通过提高准确性和减少人工时间来节省时间和金钱。然而,金融机构、政府机构和医院等大型企业每天通常处理大量的表单,这会带来独特的问题,但通过良好的规划、表单设计和正确的软件,可以成功有效地解决这些问题。
首先,在任何表单识别应用程序中都有两种不同类型的表单:主表单和已填写表单。主表单是定义要从中提取数据的空白模板。在客户收到、填写并提交他们的已填写表单后,这些表单将与主表单进行比较(即表单识别或分类),然后提取数据(即表单处理)。已填写表单的数量在任何组织中都很常见,但大型企业面临的特定问题是主表单数量众多。拥有数百甚至数千个主表单的公司必须应对指数级增长的识别时间。准确性也可能下降,因为表单之间可能存在相似性,导致误报。
在本白皮书中,我们将讨论处理大量主表单的几种策略,以及如何利用 LEADTOOLS 表单识别 SDK 快速准确地处理您的表单。通过结合使用多线程、云计算、条形码和两阶段分类识别,使用 LEADTOOLS 构建的表单识别和处理应用程序可以处理您能遇到的任何大规模场景。
使用多线程提高速度
当今时代,使用多线程来提高速度可能是不言而喻的。但是,确保您的应用程序充分利用硬件的全部能力是必须的。大多数 SDK 供应商都认识到这一点,并会宣传他们的库是“线程安全的”,但有些用户可能不明白这句话有多模糊,因为它不对底层发生的情况做出任何保证。很有可能,“线程安全”函数之所以被归类为线程安全,仅仅是因为它强制在单个线程上运行。
LEADTOOLS 之所以脱颖而出,是因为其多线程支持非常简单、集成且易于控制。您不必辛苦地创建线程、传递信息并确保一切运行正常,避免缓冲区溢出和内存泄漏。在初始化 AutoFormsEngine
时,只需为主系统上的每个处理器核心传递一个 IOcrEngine
,LEADTOOLS 就会完成其余的工作。
// Create an OCR Engine for each processor on the machine. This
// allows for optimal use of thread during recognition and processing.
ocrEngines = new List<IOcrEngine>();
for (int i = 0; i < Environment.ProcessorCount; i++)
{
ocrEngines.Add(OcrEngineManager.CreateEngine(OcrEngineType.Advantage, false));
ocrEngines[i].Startup(formsCodec, null, String.Empty, String.Empty);
}
// Point repository to directory with existing master forms
formsRepository = new DiskMasterFormsRepository(formsCodec, masterFormsFolder);
autoEngine = new AutoFormsEngine(formsRepository, ocrEngines, null, AutoFormsRecognitionManager.Default | AutoFormsRecognitionManager.Ocr, 30, 80, true);
通过云进行分布式处理
LEADTOOLS 云 SDK 基于与多线程相同的基本原理,但通过使用计算机网络来划分大型工作负载,将其提升到一个新的水平。通过设计和控制自己的云基础设施,您可以几乎无限地提高识别速度。
在云中执行处理器密集型任务的好处远远超出了效率和速度。您还可以显着降低运营成本,因为网络上的任何计算机都可以用作工作机器。为什么要购买昂贵的专用服务器,而数百台台式计算机可以汇集它们的资源?LEADTOOLS 提供了充足的自定义功能,可以利用现有使用工作站上未使用的处理能力。沉迷于电子表格和文字处理器的员工是否真的物尽其用了他们八核处理器的价值?您可以选择工作进程在员工机器上占用的最大 CPU 百分比、CPU 核心数、线程数,甚至一天中的时间,而不会妨碍他们的日常工作。
云对于处理海量的已填写表单流入非常棒,但网络上的每个节点仍然会因大量主表单而受到阻碍。既然您已经最大限度地发挥了硬件的潜力,那么您必须专注于智能设计的主表单,以在企业级表单识别应用程序中获得更高的速度。
使用条形码对表单进行分类
条形码可能是从数百个其他表单中唯一识别一个表单的最快、最直接的方法之一。最明显的好处是条形码可以将大量信息打包到很小的空间中。对于二维码等二维条形码尤其如此,它们能够存储多达 4,296 个字母数字字符。由于这些唯一标识符很小,因此它们提供了一种非常现实的方式,可以对大量正在生产的表单进行少量更改。
如果您可以通过简单的条形码识别来识别表单,为什么还要使用表单识别?乍一看,使用表单识别可能看起来有点大材小用,但 LEADTOOLS 中先进的表单识别和处理技术带来了超越分类的许多好处。如果您打算使用 OCR 来识别表单上用户提供的信息字段,则必须采取其他步骤来准确提取这些信息。这些包括但不限于:图像清理、页面对齐、补偿不同 DPI 的偏移以及识别要提取的文本。实施这些步骤是一项艰巨的任务,需要数千行复杂的代码,而 LEADTOOLS 可以在更少的代码量下自动完成。
// Set up the AutoFormsEngine to use Barcodes
autoEngine = new AutoFormsEngine(formsRepository, ocrEngines,
null, AutoFormsRecognitionManager.Barcode, 30, 70, true);
// Run the forms recognition and processing on this document
AutoFormsRunResult runResult = autoEngine.Run(document, null);
if (runResult != null)
{
// Process the recognized form and extract desired info
foreach (FormPage formPage in runResult.FormFields)
{
foreach (FormField field in formPage)
{
// Do something with the extracted field data...
}
}
}
高级策略:两阶段识别与主表单类别
对于非常大的场景,实际上可以运行两次表单识别算法更快:第一次识别类别,第二次识别类别内的表单。通过减少已填写表单必须与之比较的主表单的有效平均数量来节省时间。
例如,假设您的公司在多个国家、州或地区开展业务。每个地区使用相似的表单,但它们之间存在细微的差别,例如联系信息、徽标或要收集的字段。设计表单时,识别并擦除模板图像之间的差异,以创建类别主表单,如下所示。
查看上面的示例,您可以看到,如果我们对已填写的表单 3 运行两阶段识别,它将被识别为类别 B,然后在第二遍中与类别 B 中的所有其他表单进行比较,并将其识别为表单 3。使用 LEADTOOLS,您可以将表单识别算法限制为仅搜索存储库中的指定类别。尽管两阶段识别过程可能看起来很复杂,但代码却非常简单。
// First pass we run recognition on the categories recognizeResult = autoEngine.RecognizeForm(filledForm, formsRepository.RootCategory.ChildCategories.Where( i => i.Name == "Categories").ToList()); if (recognizeResult != null) { // Second pass we run recognition on the forms within the found category foundMasterFormCategory = recognizeResult.MasterForm.Name; recognizeResult = autoEngine.RecognizeForm(filledForm, formsRepository.RootCategory.ChildCategories.Where( i => i.Name == foundMasterFormCategory).ToList()); if (recognizeResult != null) { foundMasterForm = recognizeResult.MasterForm.Name; } }
在上面只有两个类别和两个表单的简单示例中,速度优势将很小。但是,当将此策略应用于包含数百或数千个主表单的存储库时,优化应该是巨大的。通过结合智能设计的表单和 LEADTOOLS 中屡获殊荣的文档成像技术,您可以创建一个表单识别应用程序,该应用程序与任何需要突破以降低时间和成本的大型企业完美匹配。
下载完整的表单识别示例
您可以下载包含上述功能的完整功能演示。要运行此示例,您需要以下条件:
- LEADTOOLS V18(免费 60 天评估版)
- Visual Studio 2008 或更高版本
- 将附件的 ZIP 项目提取到 LEADTOOLS C# 示例目录(例如,C:\LEADTOOLS 18\Examples\DotNet\CS)
支持
需要帮助才能使此示例正常运行? 联系我们的支持团队 免费获得技术支持!有关定价或许可问题,您可以联系我们的销售团队(sales@leadtools.com)或致电 704-332-5532。