База знаний

Номер статьи: 1485 | Категория: Сканирование | Тип: Задача – Решение | Последнее обновление: 27.08.2015

Как разделить поток страниц на документы по нескольким маскам штрих-кода?

Описание

В программных продуктах ABBYY FlexiCapture и Recognition Server существует возможность разделения потока страниц на документы/пакеты на Станции Сканирования по маске штрих-кода.

Что делать если необходимо задать две или три маски для штрих-кодов?

Решение

В ABBYY FlexiCapture 10 и Recognition Server 3.5 появилась возможность использовать скрипты на станции сканирования, что позволяет нам решить данную задачу, при помощи скриптинга.

Для того чтобы создать скрипт, необходимо перейти в настройки Тип пакетаСкрипты, добавить новый скрипт и указать событие, при котором будет запускаться скрипт.

Ниже приведён пример скрипта, выполняемого для события типа После добавления страницы, то есть для каждой новой отсканированной страницы. Данный скрипт написан на языке JScript.  

//------------ JScript ------------
var page = this.ScriptItems.Item(0);
//Маски  
var mask1 = "730"; 
var mask2 = "731";
var mask3 = "253";
//Проверяем удовлетворяет ли значения штрих-кода одной из наших масок
var brcValue = FindPageBarcodes(page).Item(0).Value.substring(0,3);
if (brcValue == mask1 || brcValue == mask2 || brcValue == mask3)
{
    try
    {
        //Если да, то перемещаем страницу в новый документ        
        var docName = FindPageBarcodes(page).Item(0).Value;
        var newDoc = AddDocument(page, docName);        
        page.Move(newDoc, true); 
    }
    catch (objException)
    {
        /*Данный блок обрабатывает исключение, на случай если штрих-код совпадает и
        именует документ как <значение штрих-кода> 1, <значение штрих-кода> 2 и т.д.
        при совпадении имен.*/        
        var k = 0;
        var n = this.ActiveBatch.Children.Count;          
        for (var i = 0; i < n; i++) 
        {
            var bcName = this.ActiveBatch.Children.Item(i).Name.substring(0, docName.length);
            if (bcName == docName) ++k;                  
        }
        docName = FindPageBarcodes(page).Item(0).Value + " " +  k;
        newDoc = AddDocument(page, docName);
        page.Move(newDoc, true);
    }    
}
else 
{
    //В противном случае, перемещаем страницу в старый документ
    var curDocNumber = this.ScriptItems.Item(0).Parent.Children.Count;
    var curDoc = this.ScriptItems.Item(0).Parent.Children.Item(curDocNumber - 1);
    page.Move(curDoc, false); 
}
347 считают это полезным.
Была ли эта информация вам полезна?