public void Execute(Arguments arguments)
        {
            manager = AbbyyManager.Instance;

            System.Drawing.Rectangle rectangle    = !arguments.Relative.Value ? arguments.Area.Value : arguments.Area.Value.ToAbsoluteCoordinates();
            System.Drawing.Bitmap    partOfScreen = RobotWin32.GetPartOfScreen(rectangle);

            IEngine engine = manager.Engine;
            DocumentProcessingParams processingParams  = engine.CreateDocumentProcessingParams();
            RecognizerParams         recognizingParams = processingParams.PageProcessingParams.RecognizerParams;

            recognizingParams.SetPredefinedTextLanguage(arguments.Language.Value);
            engine.LoadPredefinedProfile(AbbyyManager.TextAccuracyProfile);
            FRDocument imageDocument = engine.CreateFRDocument();

            using (System.IO.MemoryStream stream = new System.IO.MemoryStream())
            {
                partOfScreen.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
                stream.Position = 0;
                IReadStream imageStream = new StreamNet2AbbyyAdapter(stream);
                imageDocument.AddImageFileFromStream(imageStream);
            }

            imageDocument.Process(processingParams);


            Scripter.Variables.SetVariableValue(arguments.Result.Value, new TextStructure(imageDocument.PlainText.Text));
        }
Exemplo n.º 2
0
 private void TransformOnPageProcessed(FRDocument sender, int pageIndex, PageProcessingStageEnum processingStage)
 {
     Log.Information("Abbyy transform process info for {sourceFile} - stage is {processingStage} and current page index is {pageIndex}", sourceFile, processingStage, pageIndex + 1);
     bus.Publish <AbbyyProgressEvent>(new
     {
         __TimeToLive = TimeSpan.FromSeconds(3),
         File         = sourceFile,
         Page         = pageIndex + 1,
         TotalPages   = sender.Pages.Count,
         Process      = ProcessType.Rendering,
         EventType    = AbbyyEventType.AbbyyOnPageEvent,
         Context      = jobContext
     });
 }
Exemplo n.º 3
0
        private void TransformOnProgress(FRDocument sender, int percentage, ref bool cancel)
        {
            // If there is no change, we do not want to "overload" the log
            // But log something at least every 30 seconds
            if (lastPercentageNumber == percentage && TimeSpan.FromTicks(DateTime.Now.Ticks - lastPercentageLogTime).Seconds < 30)
            {
                return;
            }

            Log.Information("Abbyy transform progress info for {sourceFile} - Percentage done is {percentage}", sourceFile, percentage);
            bus.Publish <AbbyyProgressEvent>(new
            {
                __TimeToLive = TimeSpan.FromSeconds(3),
                File         = sourceFile,
                Percentage   = percentage,
                Process      = ProcessType.Rendering,
                EventType    = AbbyyEventType.AbbyyOnProgressEvent,
                Context      = jobContext
            });
            lastPercentageNumber  = percentage;
            lastPercentageLogTime = DateTime.Now.Ticks;
        }
Exemplo n.º 4
0
 private void TransformOnWarning(FRDocument sender, int pageIndex, string warning, ref bool cancel)
 {
     Log.Warning("Abbyy transform warning info for {sourceFile} - warning message is <{warning}> on page {pageIndex}", sourceFile, warning, pageIndex + 1);
 }
Exemplo n.º 5
0
 private void UnsubscribeTransformEvents(FRDocument fineReaderDocument)
 {
     fineReaderDocument.OnPageProcessed -= TransformOnPageProcessed;
     fineReaderDocument.OnProgress      -= TransformOnProgress;
     fineReaderDocument.OnWarning       -= TransformOnWarning;
 }
Exemplo n.º 6
0
 private void UnsubscribeExtractionEvents(FRDocument fineReaderDocument)
 {
     fineReaderDocument.OnPageProcessed -= TextExtractionOnPageProcessed;
     fineReaderDocument.OnProgress      -= TextExtractionOnProgress;
     fineReaderDocument.OnWarning       -= TextExtractionOnWarning;
 }
Exemplo n.º 7
0
 internal FineReaderTables(FRDocument document)
 {
     this.document = document;
 }