由于涉及到无数变量和因素,因此表单识别和处理是一项非常复杂的过程。在表单识别过程中,对齐对表单识别的准确性起着至关重要的作用,因为表单字段被置于主表单上一个非常特殊的位置上面。看似差别细小的几个像素却足以影响到光学文字识别(OCR)或光学标记识别(OMR)引擎的准确度。
采用LEADTOOLS自动纠偏
表单对齐主要包含以下4方面的问题::斜偏,页边距,扫描分辨率和非线性变形。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,
_MasterFormFolder);
autoEngine = new AutoFormsEngine(formsRepository, ocrEngines, null,
AutoFormsRecognitionManager.Default | AutoFormsRecognitionManager.Ocr,
30, 70, true);
// Run the forms recognition 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)
{
// ...
}
}
}
倾斜角
如果你扫描过文档,你一定知道纸张并不总是平铺或者垂直。由于定义表单字段的区域是矩形,因此填充文本很难适应约束区。Leadtools提供一个非常合适的倾斜角度,字段仍然可以处于其盒子中。
页边距
当左上角位置不正确时,会增加或者减少扫描文档的页边距,左右上下移动原始文档。平板式扫描仪比自动文档进纸器更容易出现页边距的问题。
扫描分辨率
扫描分辨率在表单对齐中也扮演着一个重要角色。扫描文档的DPI(点/寸像素)设置了坐标系,它可以区分不同的扫描分辨率。
非线性变形
由于扫描仪不同,可能导致文件的某些区域不同程序的拉伸和收缩,而其他显示正常。导致该问题的最常见的原因是ADF速度差异。当一个文件被送入扫描仪时,feeder 开始时很缓慢,然后逐渐达到全速,甚至有些扫描仪在扫描结束时才减速,从而引起非线性变形。