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

MS Dynamics CRM 2011 上的条形码、文档流和 100 点身份验证

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2012年8月20日

CC (ASA 3U)

8分钟阅读

viewsIcon

20838

MS Dynamics CRM 2011 上的条形码、文档流和 100 点身份验证

我刚刚为我们的一位客户完成了概念验证 (PoC)。这次 PoC 展示了基于 MS Dynamics CRM 2011 的自定义解决方案来自动化纸质文档流的能力。它包括条形码生成、批量文档打印、纸质文档扫描以及文档中条形码和手写文本的自动识别。该解决方案使用 QR 码来识别文档。

最有趣的是,我们可以制作一些真实的文档(请看里面的照片!)并使用标准的办公设备(如打印机和高速扫描仪)来自动化流程。这是这项工作的重要组成部分,并且在三周内成功完成。让我们看看我是如何做到的。 

Paper forms with barcodes

整体解决方案架构

让我们考虑一下我们希望自动化的业务流程。这个流程对于银行、保险或物流公司等大型组织来说相当普遍。所有这些组织都必须处理大量可能不诚实的客户。这就是为什么每家银行都会询问您的所有个人详细信息,甚至可能要求提供文件的认证副本。正如我们在这次 PoC 中看到的,认证副本太多了。

该公司为澳大利亚各地的个人提供物流服务。所以,我们有客户,其中一些人居住在农村地区。我们的客户可能可以上网,也可能无法上网。所以,一些人可能会使用公司网站申请合同。其他人将使用纸质表格申请。无论客户如何申请合同,我们都应该为电子和纸质申请采用相同的业务流程。这些文档将包含个人信息,因此如果我们有法律许可,就需要将其存储在安全存储中。

客户申请后,应根据 100 点身份验证对个人信息进行验证。根据验证结果,公司员工将为客户提供个性化的合同条件。稍后,客户可以通过电话或电子邮件联系公司来更改个人信息或合同条件。

Overall solution architecture

Dynamics CRM 的技术解决方案

作为与客户互动的基础,我们可以选择 Microsoft Dynamics CRM 2011。该系统符合与客户广泛互动的要求,无论他们偏好哪种通信技术。该系统支持通过 Web 服务调用直接存储信息。这很有用,因为我们需要将其与现有公司网站集成。此外,我们可以使用我之前帖子中描述的电子邮件队列机制。此机制有助于接收扫描的文档。最后一项是支持工作流程,允许我们在信息验证后更改申请的状态。

另一方面,使用该产品可能会有潜在的限制。例如,在这次 PoC 中,我使用开源库和不安全代码识别了文档。这意味着代码必须以完全信任的方式执行。但是这种情况与 Dynamics CRM Online 所需的沙箱隔离模式不兼容。因此,此解决方案只能使用 CRM 的本地安装。  

Technical solution based on MS Dynamics CRM 2011

技术解决方案涉及自定义 Silverlight 控件,用于显示条形码和签名。这是因为在需要显示图片、链接列表或丰富内容的情况下,标准功能存在限制。此外,我们需要两个自定义插件。第一个将在新记录创建时填充条形码信息。第二个将在电子邮件队列中收到电子邮件时,从文档中识别条形码和文本。

The components of a technical solution

QR 码生成

条形码可以编码一些元数据。在 PoC 中,元数据用于存储文档类型和标识符。如果公司在所有纸质表格上都使用条形码,那么这对于将扫描的文档路由到正确的位置和识别目的可能很有用。

QR 码本身是文本。白格是空格。黑格是伪图形字符。当我们要打印条形码时唯一的问题是打印字体。字体应该是等宽的,没有行距,并且具有固定的行高。如果我们要在员工计算机上打印条形码,而该计算机没有合适的字体,这可能是一个问题。这就是为什么字体应该包含在打印模板中。

有许多可用的代码生成库。我建议使用 ZXing 的 C# 端口,因为它具有简单的 API 和条形码识别功能。因此,在系统中创建记录时,我们可以生成元数据并使用自定义 Dynamics CRM 插件将其编码为 QR 码。 

Control to display a barcode

批量文档打印

然后可以使用标准的邮件合并功能打印 Dynamics CRM 中的记录。负责的员工将选择文档,例如状态为“草稿”的文档,然后发起新的邮件合并。

Selecting records for printing

邮件合并机制不仅允许我们打印信件,还允许批量发送电子邮件。我们在解决方案中所需要的是创建一个新的组织邮件合并模板,该模板可供邮政团队的不同成员用于所有批量打印任务。

Create new mail merge

记录集将定向到 Microsoft Word,它提供了简单的分步打印向导。此解决方案的好处在于,我们可以在打印准备过程中更改单个信件。

Mail merge in MS Word

结果以所见即所得 (WYSWYG) 的形式呈现。我们只需要将这组文档发送到打印机。在此示例中,我将为三位客户打印欢迎信和个性化申请表。在打印文档时,我们会收到一个活动创建对话框,允许我们在 Dynamics CRM 中运行工作流活动。因此,我们可以自动将所有打印文档的状态更改为“已打印”或“已发送”。

Preview mail merge in MS Word

邮政团队的成员将前往打印机并打印这些文档。

Log-in on printer

Bulk document printing

打印文档流程

打印的文档然后可以折叠并装入信封。在 PoC 中,我们有一个带透明窗口的信封。因此,地址可以直接打印在文档顶部。然后,无需在信封上打印地址。

邮局会将文件发送给客户。客户将填写、签署并寄回申请表。邮政团队将拆开所有收到的邮件,并使用高速打印机进行扫描。

扫描到电子邮件

几乎所有现代扫描仪或多功能设备都可以扫描文档并将其发送到电子邮件。公司服务台团队可以帮助在设备上设置一个专用按钮,以便一键(抱歉,一触)将文档扫描到 CRM 的消息队列电子邮件。

Document scanning

不幸的是,这种自定义并不总是可能的。例如,我用过的 HP 设备没有这种能力,但 RICOH 的设备有。

Scanning document to e-mail

如果配置正确,所有扫描的文档都将传递到 Dynamics CRM 消息队列。您可以参考我之前关于此类配置的帖子。

收到扫描文档后,我们可以通过第二个 Dynamics CRM 插件提供文本识别逻辑。

The result of the scanning in MS Dynamics CRM 2011 email queue

扫描文档的自动识别

文档自动识别任务并非易事。最重要的部分在于实现。我们需要解析多页 PDF 文档。然后识别带有条形码的页面,从元数据中提取文档类型,并根据文档类型应用文档网格。文档网格背后的主要思想是,我们应该确切地知道在哪里可以找到单独的信件框。只有针对单独的信件,我们才能应用基于简单神经网络的识别算法。

在 PoC 期间,我发现如果文档以低于 200 dpi 的分辨率扫描,ZXing 就无法识别条形码。这实际上取决于 QR 码的大小。这就是为什么我研究了合适的条形码大小和字体。我必须承认,对于系统的生产实现,我宁愿选择自定义字体而不是现有的等宽字体。条形码识别的一个重要问题是,如果 PDF 是由虚拟打印机生成的,那么条形码将以文本形式而不是图片形式出现。所以,我的插件必须识别这一点。这已经通过自定义算法完成了。

Testing different fonts for QR Code

当我们确定了文档类型时,就可以应用网格了。我们需要找到文档的角点,缩放网格,并提取单独信件的图像。文档的角点是用伪图形字符的黑色方框标记的。作为角点检测算法,选择了 SUSAN 算法。AForge 的实现使用了不安全的 C# 代码。这就是为什么提出的解决方案在 MS Dynamics CRM 2011 Online 中不起作用的原因。需要完全信任而不是 CRM Online 插件沙箱隔离。

The result of a corner detection algorythm

结果和后续工作流程

我们快完成了。文本和签名已识别。可以使用不同的安全角色形式来设置签名周围的安全。

现在,我们可以运行工作流来验证文档,然后自动将信息放入标准的帐户实体中,这是最终的存储。

Extracted signature displayed in a custom Silverlight control

扫描的文档可以存放在安全存储中。例如,可以自动为 Microsoft SharePoint 完成。在 PoC 中,我通过插件代码中的 Web 服务调用将该解决方案与 Open Text Document Management 系统集成。

The result of the recognition

从 Web 界面访问

对于从 Web 界面访问的用例,我演示了一个基于 Silverlight 的示例 Web 应用程序。我在上一篇文章中还写了“如何使用 Web 服务将其与 Dynamics CRM 2011 集成”。

Web interface for customers

就这样!如果您有任何问题或希望在 Dynamics Marketplace 中看到此解决方案,请随时与我联系。感谢您的阅读!

© . All rights reserved.