// USE CASE: Using image processing tools in custom preprocessing
        public static void Using_image_processing_tools_in_custom_preprocessing(IEngine engine)
        {
            trace("Create and configure an instance of FlexiCapture processor...");
            IFlexiCaptureProcessor processor = engine.CreateFlexiCaptureProcessor();

            processor.AddDocumentDefinitionFile(SamplesFolder + "\\SampleProject\\Templates\\Invoice_eng.fcdot");

            trace("Set up an image source with custom preprocessing...");
            // Create and configure sample image source. ALL PREPROCESSING IS DONE IN THE IMAGE SOURCE
            // (see SampleImageSource class for details)
            CustomPreprocessingImageSource imageSource = new CustomPreprocessingImageSource(engine);

            imageSource.AddImageFile(SamplesFolder + "\\SampleImages\\Invoices_1.tif");
            imageSource.AddImageFile(SamplesFolder + "\\SampleImages\\Invoices_2.tif");
            imageSource.AddImageFile(SamplesFolder + "\\SampleImages\\Invoices_3.tif");
            processor.SetCustomImageSource(imageSource);

            traceBegin("Process the images...");
            int count = 0;

            while (true)
            {
                IDocument document = processor.RecognizeNextDocument();
                if (document == null)
                {
                    IProcessingError error = processor.GetLastProcessingError();
                    assert(error == null);                       // No errors are expected in this sample
                    break;
                }
                else
                {
                    // We expect that this will never happen in this sample
                    assert(document.DocumentDefinition != null);
                }
                processor.ExportDocumentEx(document, SamplesFolder + "\\FCEExport", "NextDocument_" + count, null);
                count++;
            }
            traceEnd("OK");

            trace("Check the results...");
            assert(count == 2);
        }
        // USE CASE: Using image processing tools in custom preprocessing
        public static void Using_image_processing_tools_in_custom_preprocessing( IEngine engine )
        {
            trace( "Create and configure an instance of FlexiCapture processor..." );
            IFlexiCaptureProcessor processor = engine.CreateFlexiCaptureProcessor();

            processor.AddDocumentDefinitionFile( SamplesFolder + "\\SampleProject\\Templates\\Invoice_eng.fcdot" );

            trace( "Set up an image source with custom preprocessing..." );
            // Create and configure sample image source. ALL PREPROCESSING IS DONE IN THE IMAGE SOURCE
            // (see SampleImageSource class for details)
            CustomPreprocessingImageSource imageSource = new CustomPreprocessingImageSource( engine );
            imageSource.AddImageFile( SamplesFolder + "\\SampleImages\\Invoices_1.tif" );
            imageSource.AddImageFile( SamplesFolder + "\\SampleImages\\Invoices_2.tif" );
            imageSource.AddImageFile( SamplesFolder + "\\SampleImages\\Invoices_3.tif" );
            processor.SetCustomImageSource( imageSource );

            traceBegin( "Process the images..." );
            int count = 0;
            while( true ) {
                IDocument document = processor.RecognizeNextDocument();
                if( document == null ) {
                    IProcessingError error = processor.GetLastProcessingError();
                    assert( error == null ); // No errors are expected in this sample
                    break;
                } else {
                    // We expect that this will never happen in this sample
                    assert( document.DocumentDefinition != null );
                }
                processor.ExportDocumentEx( document, SamplesFolder + "\\FCEExport", "NextDocument_" + count, null );
                count++;
            }
            traceEnd( "OK" );

            trace( "Check the results..." );
            assert( count == 2 );
        }