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));
}