提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:龚雪|2015-07-10 09:59:59.000|阅读 683 次
概述:使用LEADTOOLS创建的应用程序可以将一个扫描文档与已经的模板比较,并对文档类型正确分类。当正确识别一个文档后,LEADTOOLS可以从表单中已定义的位置提取文字、选项、条码等。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
将纸质文档变为电子文档无疑又环保,还节省物理存储空间,但是有些情况它却没有节省空间或减少麻烦。电子报告或手动扫描纸质文档对账单、发票、财务报表的归档十分有用。但是,往电脑里录入这些纸质文档需要大量的时间和精力,而且保存的这些电子文档日后却很难查找它们,这又有什么好处呢?
对一个有好记性和习惯的人来说这可能不难,但是中型到大型企业有庞大的业务,每天有数百人需要处理成千上万的文档,又会怎样呢?没有某种程序的话,就需要巨大的人力开销,更大的问题是:会经常录错!
假设一下,你可以将所有扫描文件放在一个文件夹,然后自动以一致的习惯移动和重命名它们。LEADTOOLS OCR表单识别和处理拥有高级、灵活和强大的图形库,完全可以满足你的要求。使用LEADTOOLS创建的应用程序可以将一个扫描文档与已经的模板比较,并对文档类型正确分类。当正确识别一个文档后,LEADTOOLS可以从表单中已定义的位置提取文字、选项、条码等。
解决困境的第一步是处理和管理一个中心文档数据库,所有的扫描文档会放到这个位置进行分类。有多种方法可以完成,如使用一个web服务或一个机器人按下一个按钮。此例中选择的方法是一个简单的控制台应用程序,它与Windows的任务调度器一起运行完成调度。
管理文档库的代码相对来说简单,因为它主要使用了System.IO命名空间的基本文件和文件夹操作。然后应用程序最重要的部分传递到了文档分类器上,它封装了LEADTOOLS表单识别功能,返回用户移动和重命名文档时使用的数据。
// 为新文档检查扫描文档存储库 string[] newDocuments = Directory.GetFiles(docRepositoryNewDocs); DocumentClassifier docClassifier = new DocumentClassifier(docRepositoryMasterForms); string movedDocumentName, masterFormSubFolder; foreach (string currentDoc in newDocuments) { movedDocumentName = null; // 尝试将此文档与已知的文档类型匹配 ClassifiedDocument classifiedDoc = docClassifier.ClassifyDocument(currentDoc); if (classifiedDoc.MasterFormName != null) { // 如果不存在,为Master Form添加子文件夹 masterFormSubFolder = string.Format(@"{0}{1}\", docRepositoryRoot,classifiedDoc.MasterFormName); if (!Directory.Exists(masterFormSubFolder)) Directory.CreateDirectory(masterFormSubFolder); // 根据找到的日期,重命名文件 if (classifiedDoc.DocumentDate != DateTime.MinValue) { movedDocumentName = string.Format("{0}{1}{2}", masterFormSubFolder, classifiedDoc.DocumentDate.ToString("yyyyMMdd"), currentDoc.Substring(currentDoc.LastIndexOf('.'), currentDoc.Length - currentDoc.LastIndexOf('.'))); } else { // 没有找到用来重命名的日期,就移走它 movedDocumentName = currentDoc.Replace(docRepositoryNewDocs, masterFormSubFolder); } } else { movedDocumentName = currentDoc.Replace(docRepositoryNewDocs, docRepositoryUnclassifiedDocs); } if (!string.IsNullOrEmpty(movedDocumentName)) File.Move(currentDoc, movedDocumentName); }
在LEADTOOLS开始分类文档前,必须知道如何分类他们,分类通过创建一个主表单模板的集合完成。LEADTOOLS附带了一个主表单编辑器示例,使用它可以为两种不同的包含单独OCR字段的发票添加一个主表单,提取出发票日期,重命名文件。
现在我们定义了主表单,可以开始处理文档了。我们已经扫描了两个基于主表单的发票和一个没有已知模板的税单。LEADTOOLS会将New文件夹中的每一个文件与主模板比较。如果找到了匹配项,它会处理文档字段,返回表单的名称和日期字段。
// 为机器上的每一个处理器创建OCR引擎。在识别和处理过程中,允许线程的优先使用 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); } // 将存储库指向包含已有主表单的文件夹 formsRepository = new DiskMasterFormsRepository(formsCodec, _MasterFormFolder); autoEngine = new AutoFormsEngine(formsRepository, ocrEngines, null, AutoFormsRecognitionManager.Default | AutoFormsRecognitionManager.Ocr, 30, 70, true); // 在这个文档上运行表单识别 AutoFormsRunResult runResult = autoEngine.Run(document, null); if (runResult != null) { // 在此例中,我们使用了两种信息来组织分类的表单: // 1.子文件夹使用表单的名字 // 2.文件名使用 "ClassificationRenameDate" 字段 retClassifiedDocument.MasterFormName = runResult.RecognitionResult.MasterForm.Name; // 处理识别的表单,提取想要的信息 foreach (FormPage formPage in runResult.FormFields) { foreach (FormField field in formPage) { if (field != null && field.Name == "ClassificationRenameDate") { retClassifiedDocument.DocumentDate = DateTime.Parse(( field.Result as TextFormFieldResult).Text); } } } }
正如你所看到的,两张发票与它们的主表单正确匹配,并根据数据字段重命名。此外,未分类的文档文件夹起到了自动防御的功能,允许应用程序通过最小的代价达到目的。当你有一个主表单集合中没有的新文档类型时,你所要做的只是将这些图像中的一个当做模板,提取出你想要的字段,将未分类的文档移回New文件夹,在下次程序运行时重新处理一次。
这个简单的解决方案有着巨大的扩展性和适应性。例如,通过连接一个云服务如Google Docs、SkyDrive或 iCloud轻松管理你的在线文档。同样,企业可以调整它来监控和组织传入的传真和邮件附件,或使用识别出的字段数据,将其直接存入数据库。更重要的是,LEADTOOLS表单识别可以按你的意愿处理扫描文档中或多或少的数据,它的实用性已经远远超出了组织和归档。通过提取表单字段、复选框、发票金额等还能加速工作流。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
20多年的老牌图像处理控件,支持TWAIN扫描、200多种图像效果、150多种图像格式…
LEADTOOLS Document Suite Developer ToolkitLEADTOOLS Document Imaging Suite SDK是LEADTOOLS SDK中各种特点的精选组合,这套强大的工具利用了LEAD行业领先的图像处理技术来智能地识别文档的特征,而根据文档的特征可以识别扫描的或传真的任何类型的表格图像。
LEADTOOLS Document Imaging Developer Toolkit多语言的文档图像处理控件,支持光符识别处理、条形码扫描识别等。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢