65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 LEADTOOLS 从驾驶证捕获客户信息

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2019年7月14日

CPOL
viewsIcon

1032

本白皮书将探讨程序员如何使用LEADTOOLS驾驶执照识别或条形码识别技术,从驾驶执照中提取身份信息。

引言

各类企业都在积极拥抱技术,以改善客户在前台服务流程中提供信息的方式。在就医、购车、健身甚至用餐时,客户可能会被递上一台平板电脑,或者被引导至自助服务终端进行登记。这对设备制造商和软件开发者来说是一个令人兴奋的变化,但这是否总是能带来更好的客户服务呢?

如果流程困难或耗时过长,客户很可能会感到恼火,甚至更糟,他们会选择到别处消费。因此,仅仅为了技术而使用技术是远远不够的。为了最大化投资回报,企业主可以利用各种成像技术捕获客户信息,以加快流程并提高客户满意度。理想的解决方案是能够从客户已有的证件或身份证明(如驾驶执照)中捕获信息。本白皮书将探讨程序员如何使用LEADTOOLS驾驶执照识别条形码识别技术,从驾驶执照中提取身份信息。

更快的资料收集

新客户第一次光顾企业时,需要收集一定量的数据。在一些企业中,与接待员交谈并填写几张纸质表格仍然可行,但这一过程正因几个原因而逐渐被取代。由于口音难以理解、姓名拼写猜测(例如 John vs Jon)以及糟糕的书写,数据错误屡见不鲜。此外,减少纸张消耗、实现绿色环保也是越来越多的企业正在努力实现的目标。

通过平板电脑和自助服务终端进行数字数据录入是朝着正确方向迈出的一步,因为它通过避免在纸质和电脑上重复录入,减少了人为错误。办公室工作人员只需审核客户输入的内容,而无需输入客户书写的内容。然而,客户完成流程所需的时间仍然是一个令人担忧的问题。设备数量不足会造成瓶颈和排队,我们都知道客户有多么讨厌排队。平衡设备数量与需求很难做到,而且收益可能无法抵消成本。通过自动驾驶执照识别或条形码识别来加快流程,可以在柜台两侧都带来有利的改变。

驾驶执照识别

驾驶执照是迄今为止最常见的带照片的身份证明之一,在类似情况下,大多数客户都很乐意出示。大多数企业没有意识到的是,他们可能已经用于验证客户身份的相同证件,也可以用来启动客户入住流程。这是一个错失的机会,无法捕获准确、可靠的信息,也无法创造更令人满意的客户体验。

LEADTOOLS能够识别和处理结构化和非结构化表单,包括发票、护照和驾驶执照。驾驶执照包含许多在任何注册表中常用的重要信息:姓名、地址、性别、出生日期等。只需用网络摄像头或平板电脑的内置摄像头拍照,然后让LEADTOOLS自动填充表单,客户就可以轻松验证并添加任何额外需要的信息。在输入姓名所需的时间内,大部分甚至全部表单都可以填写完成。

令人难以置信的是,这项先进的识别技术并不需要太多努力就能实现。LEADTOOLS为所有50个州提供了主模板,并且对于一些设计或布局不同的州,提供了多个模板。使用高级的AutoFormsEngine类,只需要不到40行的代码就可以识别表单并遍历捕获的字段。

// Create the RasterCodecs to be used by OCR and Forms engines
RasterCodecs formsCodec = new RasterCodecs();

// Create an OCR Engine for each processor on the machine. This 
//   allows for optimal use of thread during recognition and processing.
IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, false);
ocrEngine.Startup(formsCodec, null, null, @"C:\LEADTOOLS 19\Bin\Common\OcrAdvantageRuntime");

// Create a master form repository and point it to directory with existing master forms
DiskMasterFormsRepository formsRepository = new DiskMasterFormsRepository(
   formsCodec, 
   @"C:\Users\Public\Documents\LEADTOOLS Images\Forms\MasterForm Sets\Driving License");

// Create the AutoFormsEngine using the repository and ocr engine
AutoFormsEngine autoEngine = new AutoFormsEngine(formsRepository, ocrEngine, null, AutoFormsRecognitionManager.Ocr, 30, 80, true);

// For this tutorial, we will use the sample NC Driver's License
string formToRecognize = 
   @"C:\Users\Public\Documents\LEADTOOLS Images\Forms\Forms to be Recognized\Driving License\License.png";

// Recognize the form
string resultsMessage = "";
AutoFormsRunResult runResult = autoEngine.Run(formToRecognize, null);
if (runResult != null)
{
   FormRecognitionResult recognitionResult = runResult.RecognitionResult.Result;
               
   // Process the fields
   foreach (FormPage formPage in runResult.FormFields)
   {
      foreach (FormField field in formPage)
      {
         if (field != null)
         {
            resultsMessage = String.Format("{0}{1} = {2}{3}",
               resultsMessage,
               field.Name,
               (field.Result as TextFormFieldResult).Text,
               Environment.NewLine);
         }
      }
   }
}
            
if (string.IsNullOrEmpty(resultsMessage))
   MessageBox.Show("The form was not recognized", "Field Processing Results");
else
   MessageBox.Show(resultsMessage, "Field Processing Results");

2D条形码

最熟悉的条形码,即一维条形码,通常编码少量信息,用于识别产品编号或会员ID,通常不到二十个字母数字字符就足够了。然而,存在更先进的条形码符号,通常称为2D条形码,它们可以编码数千个字符。

特别是PDF417条形码,经常出现在驾驶执照的背面。由于PDF417可以存储多达1850个ASCII字符,发行方可以将所有持照人的信息编码到条形码中,以便快速、轻松、可靠地读取。由于有强大的纠错码(ECC),即使在磨损严重的旧驾驶执照上,PDF417也能保持准确。

例如,这里有一个南卡罗来纳州驾驶执照的PDF417示例条形码(由http://www.scdmvonline.com/DMVNew/general/New%20DL%20Barcode.pdf提供),以及其信息由LEADTOOLS解码的结果。

乍一看,结果可能有些费解,但如果有一个正确的图例,它实际上很容易破译,大多数州都会提供。下面是带有突出显示的姓、名、中间名(Sample, Driver Credential)和出生日期(09/28/1978)的纯文本。

@ ANSI 6360050101DL00300201DLDAQ102245737DAASAMPLE,DRIVER,CREDENTIAL,DAG 1500 PARK STDAICOLUMBIADAJSCDAK292012731 DARD DAS DAT DAU600DAW200DAY DAZ DBA20190928DBB19780928DBC1DBD20091026DBG2DBH1

使用LEADTOOLS读取条形码比上面讨论的基于表单的驾驶执照识别对程序员来说更友好。BarcodeEngine类负责所有繁重的工作。当使用默认参数(如下面的示例所示)时,引擎将搜索图像中的所有100多种LEADTOOLS支持的条形码类型。当开发人员知道图像只使用特定类型的条形码,或者知道在哪里将搜索限制在特定感兴趣区域(例如,在智能手机的实时预览上绘制的矩形)时,识别算法将运行得更快。

// Read all the barcodes
// The second parameter is the search rectangle. Pass an empty rectangle to indicate the entire image.
// The third parameter is the maximum number of barcodes to read. Pass 0 for all barcodes found in the image.
// Last parameter is an array of the BarcodeSymbology we are interested in. Pass null 
//   to indicate that we do not care, and want all barcodes available to be read
BarcodeEngine barcodeEngine = new BarcodeEngine();
BarcodeData[] dataArray = barcodeEngine.Reader.ReadBarcodes(image, LogicalRectangle.Empty, 0, null);

StringBuilder sb = new StringBuilder();
sb.AppendFormat("{0} barcode(s) found", dataArray.Length);
sb.AppendLine();

for (int i = 0; i < dataArray.Length; i++)
{
   BarcodeData data = dataArray[i]; 
   sb.AppendFormat("Symbology: {0}, Location: {1}, Data: {2}", data.Symbology.ToString(), data.Bounds.ToString(), data.Value);
   sb.AppendLine();
}

MessageBox.Show(sb.ToString());

结论

如今的成像技术真是令人惊叹。即使是在一个看似简单的将纸质表单替换为数字设备以供客户进行数据输入的应用程序中,LEADTOOLS成像SDK也能以显著的方式加快和改进整个工作流程。特别是,使用驾驶执照是一种直观且可靠的解决方案,可以自动填充企业将客户添加到其系统中所需的大部分信息。

下载完整的媒体流服务器示例

您可以下载包含上述功能的完整功能演示。要运行此示例,您需要以下条件:

  • LEADTOOLS 免费 60 天试用版
  • Visual Studio 2008 或更高版本
  • 导航到LEADTOOLS示例文件夹(例如,C:\LEADTOOLS Multimedia 19\Examples\),您可以在其中找到此及LEADTOOLS中更多技术的示例项目。

支持

需要帮助来运行此示例吗? 联系我们的支持团队,获得免费技术支持!有关定价或许可问题,您可以联系我们的销售团队(sales@leadtools.com)或致电 704-332-5532。

© . All rights reserved.