public void OcrParallelizationExperiment() { // Init Drive var relpath = Path.Combine(Dir.OcrDirectory, Dir.OcrParallelizationTesting); var drive = new Drive(relpath, Drive.Reason.Read); var regs = drive.Files("reg").ToList(); var revs = drive.Files("rev").ToList(); // Sort to ensure correct pairing regs.Sort(); revs.Sort(); // Concatenate and Recognize var images = regs.Concat(revs).Select(path => new Bitmap(path)).ToList(); int revStart = regs.Count; var datas = new List <OcrData>(OCR.ParallelRecognize(images, images.Count(), Accuracy.Low, "eng", true)); var regdata = datas.Take(revStart); var revdata = datas.Skip(revStart); var difference = regdata.Zip(revdata, (reg, rev) => { Console.WriteLine("-----------------------------------------------"); Console.WriteLine(OCR.StripNewLine(reg.Text + " vs " + rev.Text)); Console.WriteLine(reg.Cost + " vs " + rev.Cost); Console.WriteLine("Diff: " + (reg.Cost - rev.Cost)); Console.WriteLine("scantime: " + reg.ScanTime + "ms and " + rev.ScanTime + "ms"); Console.WriteLine(); return(reg.Cost - rev.Cost); }).ToList(); difference.ForEach(diff => Assert.IsTrue(diff < 0)); }