public override async Task <bool> DoWork(WorkItem triggeredWorkItem) { Logger.Info("Triggered to OCR"); Image img = (Image)triggeredWorkItem.WorkItemContext; string text = await OcrHelperWindows.GetFullTextFromImage(img); WorkItem w = WorkItem.GetGenericWorkItem(WorkItemType.OcrPerformed); w.WorkItemContext = text; lock (Program.ActionQueue) { Program.ActionQueue.Add(w); } return(true); }
static int Main( int MonitorIndex = 1 ) { /* string text1 = File.ReadAllText(@"C:\data\dump\item6.txt"); * string text2 = File.ReadAllText(@"C:\data\dump\item7.txt"); * * var ax = Embeddings.GetEmbeddingFromText(text1).GetAwaiter().GetResult(); * var ay = Embeddings.GetEmbeddingFromText(text2).GetAwaiter().GetResult(); * var distance = MathNet.Numerics.Distance.Cosine(ax.EmbeddingVector, ay.EmbeddingVector); */ ConfigureLogging(); Logger.Info("Startup"); Logger.Info("Monitor to use:" + MonitorIndex.ToString()); OcrHelperWindows.InitOCr(); bool result = SHCore.SetProcessDpiAwareness(SHCore.PROCESS_DPI_AWARENESS.Process_Per_Monitor_DPI_Aware); var setDpiError = Marshal.GetLastWin32Error(); MonitorHelper h = new MonitorHelper(); var displays = h.GetDisplays(); Logger.Info("App assumes there are two monitors. # Displays detected:" + displays.Count.ToString()); if (MonitorIndex >= displays.Count) { MonitorIndex = 0; Logger.Warn("fell back to monitoring Monitor 0"); } _MonitorToWatch = displays[MonitorIndex]; IdealMonitorRectWorker = new IdealMonitorRect(_MonitorToWatch); //Authenticate with MS Graph Logger.Info("Preparing for OneNoteAuthentication"); OneNoteCapture.Init(); //Init which pages we'll use Configurator.Init(); //Determine the screen to watch Application.SetHighDpiMode(HighDpiMode.PerMonitorV2); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); _OaDisplayUx = new OaDisplayUx(); Logger.Info("Before Show Ux"); _OaDisplayUx.Show(); //Set up queue to deal with incoming events lock (ActionQueue) { ActionQueue.Add(WorkItem.GetGenericWorkItem(WorkItemType.Kickoff)); } //Capture screenshot ScreenshotWorker screenShotworker = new ScreenshotWorker(); WorkerList.Add(screenShotworker); //Cache image for history feature ImageCacheWorker cacheWorker = new ImageCacheWorker(); CacheWorker = cacheWorker; WorkerList.Add(cacheWorker); //Motion Detection MotionDetectionWorker = new MotionDetection(); WorkerList.Add(MotionDetectionWorker); //Perform OCR to determine embeddings //OcrWorker ocrWorker = new OcrWorker(); //WorkerList.Add(ocrWorker); foreach (var worker in WorkerList) { Task.Run(() => { worker.WorkerLoop(); }); } Task.Run(() => { while (true) { QueueCleaner.CleanQueue(); Thread.Sleep(100); } }); Task.Run(() => { while (true) { IdealMonitorRectWorker.DetermineRect(); Thread.Sleep(2000); } }); //Thread myCaptureThread = new Thread(() => CaptureAndWorker.CaptureAndWrite(_OaDisplayUx)); //myCaptureThread.Start(); //Thread myShowNote = new Thread(() => ShowNoteWorker.ShowNotes()); //myShowNote.Start(); Application.Run(); //Console.ReadLine(); return(0); }