没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:龚雪|2015-07-10 09:59:59.000|阅读 735 次
概述:使用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@ke049m.cn




注意: Cogent DataHub 软件 v11 包含一些新功能,您的目标操作系统可能不支持这些功能。
本教程主要为大家介绍如何使用DevExpress WinForms数据网格控件进行数据排序的基础知识,欢迎下载最新版组件体验!
在使用Parasoft C/C++test执行BugDetective数据流分析时,可能会遇到用户自定义的资源API,那在这种情况下,若要判断是否存在资源问题,如资源泄露等,则需要手动配置测试配置。
大型SaaS系统的自动化测试常常受制于界面变化快、结构复杂、加载机制多变等因素。从元素识别到脚本管理,SmartBear TestComplete帮助Salesforce建了可靠的自动化测试体系。
相关产品
20多年的老牌图像处理控件,支持TWAIN扫描、200多种图像效果、150多种图像格式…
LEADTOOLS Document Suite Developer ToolkitLEADTOOLS Document Imaging Suite SDK是LEADTOOLS SDK中各种特点的精选组合,这套强大的工具利用了LEAD行业领先的图像处理技术来智能地识别文档的特征,而根据文档的特征可以识别扫描的或传真的任何类型的表格图像。
LEADTOOLS Document Imaging Developer Toolkit多语言的文档图像处理控件,支持光符识别处理、条形码扫描识别等。
最新文章 MORE
半岛外围网上直营相关的文章 MORE
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@ke049m.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
半岛外围网上直营