Dynamic Web TWAIN:网页扫描过程中如何自动检测和删除空白页?

《分离扫描文档方法(1) —— Dynamic Web TWAIN:如何使用空白页作为扫描文档的分隔器》中我们提到可以使用空白页作为文档的分隔器。但是,常常有时候场景中需要的不只有文档分隔的功能还有自动检测并删除空白页的功能。本篇文章将简单介绍如何利用Dynamic Web TWAIN 在网页文档扫描的过程中实现空白页自动检测删除的功能。

方法一

如果设备的TWAIN驱动程序支持丢弃空白页,则可以使用驱动程序的内置功能。

  1. 您可以将IfShowUI属性设置为true以显示源的用户界面(UI),您可以在那里检查选项(它通常显示为'discard blank')。
  2. 如果您不想显示源的用户界面,可以将IfAutoDiscardBlankpages设置为true或在代码中协商ICAP_AUTODISCARDBLANKPAGES功能以自动丢弃空白页。 请注意,此属性或功能仅在扫描仪本身支持该功能时(在硬件级别上)才有效。代码片段如下,
DWObject.SelectSource();
DWObject.OpenSource;
DWObject.IfShowUI = false;
//*Use the property
DWObject.IfAutoDiscardBlankpages = true;
//*Use capability negotiation
DWObject.Capability = EnumDWT_Cap.ICAP_AUTODISCARDBLANKPAGES;
DWObject.CapType = EnumDWT_CapType.TWON_ONEVALUE;
DWObject.CapValue = -1;//Auto
if(DWObject.CapSet){
   alert("Successful!");
}
DWObject.AcquireImage();

方法二

使用方法一可以快速实现所需功能,但是它也有一个致命缺点,那就是依赖硬件的支持。事实上,并不是所有的扫描设备都具有自动检测空白页的功能。如果设备不支持,怎么办呢?此时,还有一个通用的方法(软件层面)是使用Dynamic Web TWAIN SDK的IsBlankImageExpress接口。要自动检测和丢弃空白页,您可以在每次传输后触发的OnPostTransfer事件中执行此操作。代码片段如下,

function DWObject_OnPostTransfer() {
DWObject.BlankImageMaxStdDev = 20;
if (DWObject.IsBlankImageExpress(DWObject.CurrentImageIndexInBuffer)) {
   DWObject.RemoveImage(DWObject.CurrentImageIndexInBuffer);
   }
}

注意:在许多情况下,扫描的空白图像可能会带来一些噪声,这些噪声会影响IsBlankImageExpress返回的结果。 要改善结果,可以调整BlankImageMaxStdDev属性的值。 默认值为1(0表示单色图像)。 因此,通过稍微增加该值(例如,增加到20),图像上的噪声将会被忽略,因此可以更快地检测到空白图像。

发布了6 篇原创文章 · 获赞 0 · 访问量 1380

猜你喜欢

转载自blog.csdn.net/weixin_44795817/article/details/89925983
今日推荐