public static OcrData[] ParallelRecognize(IEnumerable<Bitmap> images,
int length,
Accuracy mode = Accuracy.High,
string lang = "eng",
bool enableTimer = false)
{
Tuple<int, Bitmap>[] indexedImages = new Tuple<int, Bitmap>[length];
int index = 0;
foreach (Bitmap image in images)
{
if (index >= length)
{
break;
}
indexedImages[index] = new Tuple<int, Bitmap>(index, image);
index += 1;
}
ConcurrentDictionary<int, OcrData> safeMap = new ConcurrentDictionary<int, OcrData>();
Parallel.ForEach(indexedImages, pair =>
{
int position = pair.Item1;
Bitmap image = pair.Item2;
safeMap[position] = Recognize(image, mode, lang, enableTimer);
});
OcrData[] data = new OcrData[length];
foreach (KeyValuePair<int, OcrData> kvpair in safeMap)
{
data[kvpair.Key] = kvpair.Value;
}
return data;
}