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)); }
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 }); }
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; }
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); }
private void UnsubscribeTransformEvents(FRDocument fineReaderDocument) { fineReaderDocument.OnPageProcessed -= TransformOnPageProcessed; fineReaderDocument.OnProgress -= TransformOnProgress; fineReaderDocument.OnWarning -= TransformOnWarning; }
private void UnsubscribeExtractionEvents(FRDocument fineReaderDocument) { fineReaderDocument.OnPageProcessed -= TextExtractionOnPageProcessed; fineReaderDocument.OnProgress -= TextExtractionOnProgress; fineReaderDocument.OnWarning -= TextExtractionOnWarning; }
internal FineReaderTables(FRDocument document) { this.document = document; }